Dual Core MCU 에서 RCC, RCC_C1, RCC_C2의 차이점

아래의 그림은 STM32H745/55/47/57xx 의 Dual Core MCU의 시스템 아키텍처입니다. 보시는 것과 같이 Core만 두개일 뿐 대부분의 주변장치(Peripheral)은 각종 버스(AHB, APB)들에 의해 공유되는 것을 볼 수 있습니다. 이 얘기는 각 Core에서 독점적으로 사용되는 장치는 M7 Core에 Coupled 되어 있는 ITCM, DTCM 밖에 없다고 생각하시면 됩니다.

그런데, RCC의 몇몇 레지스터를 보면 아래와 같이 세가지로 구분되어 있는 것을 볼 수 있습니다. 이번 포스트는 왜 이렇게 구분되어 있는가에 대한 내용입니다.

분명 RCC는 블럭은 단 한개만 존재합니다. 그런데 마치 두개인 것 처럼 보입니다. 이는 RCC 레지스터 맵이 4개의 섹션으로 구분되어 있기 때문입니다. 즉 RCC_RSR ~ RCC _APB4LPENR은 아래 그림처럼 3개의 어드레스로 매핑되어 있습니다.

1. 위 그림에서 맨 아래 Registers accessible by both cores (0x000 ~ 0x0D0)섹션은 공통된 Common영역이며 한개만 존재합니다. M7, M4 모두 접근이 가능하며 설정된 값은 양쪽 Core에 동일하게 영향을 미칩니다.

2. 그 위 Same address 영역(0x0D0 ~ 0x130)은 CPU1에서 접근하면 바로 위 CPU1 bank로 접근이 되며, CPU2에서 접근하면 CPU2 bank로 접근이 됩니다.

– When accessed by CPU1, CPU1 register bank is accessed.

– When accessed by CPU2, CPU2 register bank is accessed.

3. 그 위 CPU 1 bank(0x130 ~ 0x190), CPU 2 bank(0x190 ~ 0x1FF)영역도 M7, M4 모두 접근이 가능합니다. 설정된 값은 각각의 CPU1 bank - M7, CPU2 bank - M4에 영향을 미칩니다. 어떻게 영향을 미치는지는 아래 포스트를 참조하시기 바랍니다.

 

<끝>