본문 바로가기
Robot/MCU

Memory Map으로 살펴보는 Cortex-M3와 STM32F103x 와의 관계

by lifeseed 2013. 9. 9.

 

 

1. Cortex-M3 Memory model

   ARM에서 제공하는 Cortex-m3 Devices Generic User Guide의 Memory model 에 포함된 메모리 맵이다.

 

 

Cortex-M Seriese의 경우 크게 세가지의 특징을 가진다.

 

첫째, Cortex-M series는 기존의 ARM Series와는 다르게 기본적인 Memory Map의 틀을 제공한다.

즉.. 기본적으로 제공하는 Memory Map에 Chip Vendor가 필요한 기능 들을 추가하는 형태로 제공된다.

 

둘째, 기본적인 NVIC, System Control, Timer 등의 기본 적인 Peripheral들을 제공한다.

그외 추가적으로 필요한 Peripheral들은 Chip Vendor가 Peripheral Area나 External device 등에 연결할 수 있다.

 

세째, Bit Band 기능을 제공한다.

 Cortex-M seriese는 ARM에서 제공하는 Micor Controller이다. 즉 최대한 빠른 응답과 빠른 실행 속도를 가지도록 설계가 되었다고 볼 수 있다. 

 기본적인 GPIO 제어나, 기타 다른 Register 제어시 Bit Operation을 사용하게 되는데, 이 때 Bit Operation을 위해 필요한 명령 사이클을 줄이기 위해 추가된 기능이라고 볼 수 있다.

 특정 Bit를 주어진 parameter로 설정하기 위해서는 코드 상에서 해당 비트를  &연산을 이용해 0으로 set한 후 다시 주어진 값을 | 연산으로 쓰게 되는데, Bit band 기능을 사용하면 그냥 parameter를 대입하는 것 만으로 위의 동작이 수행된다. 더 자세한 내용은 추후 다른 강좌에서 더 자세히 다루게 될 기회가 있었으면 한다.

 

참고로 이 기능은 Cortex-M에서 기본적으로 주어지는 기능이 아니라, Chip Vendor에서 선택적으로 사용하거나 아니면 사용하지 않을 수 있다. 따라서 이 기능을 사용하기 위해서는 Chip Spec에서의 지원 여부를 반드시 확인해야 한다. STM32F103x는 bit band 기능을 지원하다.

 

 

 

2. STM32F103x Memory Map Model

  ST에서 제공하는 STM32F103x8 Product Spec에 포함된 Memory Map이다.

 

위에서 언급한 바와 같이 ARM에서 제공하는 기본적인 Memory Map의 틀을 유지한다.

Code 영역(0x0000_0000)에 Flash Memory, System Memory를 가지며 ARM의 시작주소인 0번지는 BOOT pins 에 의해 System Momory 혹은 Flash Memory 로 alliased 된다고 명시하고 있따.

 

STM32F1103CB의 경우 SRAM영역(0x2000_0000)에 20KByte의 SRAM을 가지고 있으며, Peripheral 영역 (0x4000_0000)에 ST에서 제공하는 USART, WDOG을 포함한 Peripheral들이 포함되어 있다.

 

다시 말해 Port, RCC, USART등은 정확히 말해 Cortex-M3가 아니라 ST에서 제공한는 Peripheral들이고, 이들이 ARM에서 제공하는 Cortex-M3 Core기반에서 동작한다고 이해하면 될 듯하다.

 

 

3. CMSIS와 ST32F103x Standard Peripheral Library

 위에서 살펴 본 바와 같이 어떤 Peripheral들은 ARM Cortex-M3에서 제공하고, 어떤 Peripheral들은 ST에서 제공하기 때문에 각각의 Peripheral들을 사용하기 위해서는 각각의 Techenical Reference Guide 가 필요할 것이다.
  기본적인 Core Control을 포함하여, NVIC, System Timer, System Control등을 구동하기 위해서는 ARM에서 제공하는 문서를 참조해야 할 터이며, 이와 관련된 코드들이 ARM에서 CMSIS로 제공된다.

 그 외 나머지 블럭 들에 대해서는 ST에서 제공하는 문서를 참조해야 하며, 이들은 ST의 홈페이지에서 Standard Peripheral Library로 제공되며, 관련 예제들도 포함하고 있다.