아래의 그림은 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에 영향을 미칩니다. 어떻게 영향을 미치는지는 아래 포스트를 참조하시기 바랍니다.
<끝>
'▶ STM32 > Peripheral' 카테고리의 다른 글
UART(USART) Printf - HAL & Polling (2) (0) | 2024.03.17 |
---|---|
STM32의 자체 ADC 에러 (0) | 2024.03.09 |
STM32에서 CRC 사용하기 (0) | 2024.02.16 |
USB Type-C® Power Delivery using STM32(6) - Recommendations (1) | 2024.02.16 |
USB Type-C® Power Delivery using STM32(5) - STM32 USB PD 기능 (1) | 2024.02.12 |