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 레지스터에 액세스할..
고성능 STM32에 포함되어 있는 MPU(Memory protection unit) 를 설명하고 있는 어플리케이션 노트 AN4838을 번역기를 돌려 올리도록 하겠습니다. Managing memory protection unit in STM32 MCUs Introduction 이 애플리케이션 노트는 STM32 제품에서 메모리 보호 장치(MPU)를 관리하는 방법을 설명합니다. MPU는 메모리 보호를 위한 선택적 구성 요소입니다. STM32 마이크로컨트롤러(MCU)에 MPU를 포함하면 더 강력하고 안정적입니다. MPU를 사용하기 전에 프로그래밍하고 활성화해야 합니다. MPU가 활성화되지 않은 경우 메모리 시스템 동작에는 변경 사항이 없습니다. 이 애플리케이션 노트는 MPU를 지원하는 Cortex®-..
Cortex-M7 아키텍쳐는 MPU를 통해 각 메모리의 유형(Type)과 속성(Attributes)를 지정할 수 있습니다. 여기서 메모리는 Internal or External 메모리를 말합니다. 메모리 맵과 MPU는 메모리 맵을 영역으로 분할합니다. 각 영역에는 정의 된 메모리 유형(type)을 가지고 있으며 일부 영역은 추가 메모리 속성(attributes)이 가지고 있습니다. 메모리 유형 및 속성은 영역에 대한 액세스 동작을 결정합니다. 다음은 STM32F7, H7 Programming manual을 번역하여 올립니다. 1. Type - Normal : 프로세서는 효율성을 위해 트랜잭션을 재정렬하거나 추측 읽기를 수행 할 수 있습니다. 즉, 순차적으로 정렬된 Instruction 대로 실행이..
이전 포스트에서 설명한 state machine 은 현재 application의 상태를 상황에 맞게 active app state를 변경하여 해당 상태에 있을 경우 들어오는 이벤트, 메시지 처리, 이외 요청들을 처리하도록 만듭니다. 또한 원한다면 현재 상태(state)에서 다른 상태(state)로 전환을 할 수도 있습니다. C언어에서는 몇가지 코딩의 제약이 있지만 간단하게 state machine을 만들 수 있으며 우리는 이것을 app state(혹은 app)이라고 편하게 부르도록 하겠습니다. app state 들은 간략하게 다음의 필수 요건이 있습니다. app을 생성,삭제, 전환등을 할 controller 필요 app은 이벤트를 받을 수 있음 app끼리 전환 할 수 있음 app은 하나만 동작 가..
펌웨어를 처음 개발할 때 수많은 절차와 처리들을 어떻게 일목요연하고 보기 쉽게 코딩해야하는지 막막하게 느껴집니다. 이럴 때 보통 디자인 패턴이라는 프로그래밍의 오래된 습관 혹은 관습을 이용하여 해결할 수 있습니다. state machine은 이런 디자인 패턴중에 하나로 아주 사용하기 쉽고 유용하며 소프트웨어 개발자라면 꼭 알아야 할 디자인 패턴 기법입니다. single core 안에서 동작 중인 application은 반드시 하나의 상태(state)안에 있습니다. 각각의 이벤트나 어떠한 처리는 state 안에서 이루어 지며 여러개의 state 끼리 서로 전환하며 프로그램이 동작하게 됩니다. 아래 다이어그램에서 우리가 만들 app state machine 을 좀 더 구체적으로 알아보겠습니다. a..