[AN4838] STM32 MPU (2)

Cortex-M33 memory types, registers and attributes

MPU 작업에 대한 개념은 유사하지만 Armv8-M 아키텍처의 MPU는 이전 버전의 M-profile Arm 아키텍처의 MPU와 다른 프로그래머 모델을 가지고 있습니다.

모든 MPU 레지스터가 뱅크된다는 사실을 깨닫는 것이 중요합니다. Arm TrustZone®이 활성화된 경우 보안 상태에 대한 MPU 레지스터 세트와 비보안 상태에 대한 미러 세트가 있습니다. 0xE000 ED90과 0xE000 EDC4 사이의 MPU 주소에 액세스할 때 액세스되는 MPU 레지스터의 유형은 프로세서의 현재 상태에 의해 결정됩니다.

비보안 코드는 비보안 MPU 레지스터에 액세스할 수 있고 보안 코드는 보안 MPU 레지스터에 액세스할 수 있습니다. 보안 코드는 별칭 주소에서 비보안 MPU 레지스터에 액세스할 수 있습니다. 보안 액세스는 보안 MPU 레지스터를 보고, 비보안 액세스는 비보안 MPU 레지스터를 봅니다. 보안 소프트웨어는 별칭 주소를 사용하여 비보안 MPU 레지스터에 액세스할 수도 있습니다.

Memory types and attributes

Armv8-M 아키텍처에서 메모리 유형은 다음과 같이 나뉩니다.

• Normal memory(일반 메모리)

• Device memory(장치 메모리)

참고: Armv6-M 및 Armv7-M의 강력한 순서(SO) Device 메모리 유형은 이제 장치 메모리의 하위 집합입니다.

유형.

Normal 메모리 유형은 일반 명령 또는 데이터 메모리에 액세스하는 데 사용되는 MPU 영역에 사용하기 위한 것입니다. Normal 메모리를 사용하면 프로세서가 액세스 재정렬 또는 병합과 같은 일부 메모리 액세스 최적화를 수행할 수 있습니다.

Normal 메모리는 또한 메모리를 캐시할 수 있으며 실행 코드를 보관하는 데 적합합니다. Normal 메모리는 주변 장치 MMIO 레지스터에 액세스하는 데 사용해서는 안 되며 장치 메모리 유형은 해당 용도로 사용됩니다. 일반 메모리 정의는 대부분 Armv7-M 아키텍처에서 변경되지 않은 상태로 유지됩니다.

Normal 메모리에는 다음과 같은 속성이 있습니다.

• 캐시 가능성(Cacheability): 캐시 가능 또는 캐시 불가능 메모리

• 공유 가능성(Shareability): 일반 메모리 공유 가능 또는 공유 불가능

• execute Never : 실행 가능한 것으로 표시된 메모리 또는 실행하지 않음(XN)

주변 장치 제어 레지스터를 포함하는 메모리 영역에는 Device 메모리를 사용해야 합니다. 액세스 병합 또는 반복과 같이 Normal 메모리에 허용되는 최적화 중 일부는 주변 장치 레지스터에 안전하지 않습니다.

Device 메모리에는 다음과 같은 속성이 있습니다.

• G 또는 nG : 집합 또는 비 집합. (메모리 배리어 명령, 로드 획득/저장 해제와 같은 메모리 순서 의미론을 사용하는 작업을 제외하고 장치에 대한 다중 액세스는 단일 트랜잭션으로 병합될 수 있습니다.)

• R 또는 nR : 재정렬

• E 또는 nE : 초기 쓰기 승인(버퍼 가능과 유사)

다음 속성의 4가지 조합만 유효합니다.

• device-nGnRnE : Armv7-M의 강력한 순서 메모리 유형과 동일

• device-nGnRE : Armv7-M 장치 메모리와 동일

• device-nGRE : Armv8-M의 새로운 기능

• device-GRE : Armv8-M의 새로운 기능

Attribute indirection

속성 간접 메커니즘을 사용하면 여러 MPU 영역이 메모리 속성 집합을 공유할 수 있습니다. 예를 들어 다음 그림에서 MPU 영역 1, 2, 3은 모두 SRAM에 할당되어 캐시 관련 메모리 속성을 공유할 수 있습니다.

동시에 영역 1, 2, 3은 여전히 고유한 액세스 권한, XN 및 공유 가능성 속성을 가질 수 있습니다. 이는 응용 프로그램에서 각 영역을 다르게 사용할 수 있기 때문에 필요합니다.

MPU registers

Cortex-M33 MPU 레지스터는 이전 Cortex 코어와 다르며 Arm TrustZone과 더 많은 유연성과 호환성을 제공합니다. 따라서 이전 제품에서 사용되었던 프로그래밍 방식을 이 제품에 적용할 수 없습니다. 예를 들어, MPU 영역 기본 제한 레지스터의 도입으로 사용자는 보호 영역의 시작과 끝을 쉽게 정의할 수 있습니다.

MPU features comparison between Cortex cores

Cortex-M0+, Cortex-M3/M4, Cortex-M7 및 Cortex-M33 사이에는 MPU 차이가 거의 없습니다. MPU 구성 소프트웨어를 사용해야 하는 경우 사용자는 이를 알고 있어야 합니다. 아래 표는 이러한 차이점을 보여줍니다.