강좌 & 팁
STM32는 Cortex-M3 기반의 MCU이기에 Cortex의 Memory Layout을 따릅니다.
Memory Layout
code 영역 Cortex-M3의 Code 영역은 0x00000000~0x1FFFFFFF 까지 512MB입니다. STM32는 Code영역에 Flash 메모리를 사용하며, User Flash, System Memory, Option bytes 영역으로 나누어 사용하고 있습니다. STM32 시리즈 별로 각 영역별 사이즈는 다를 수 있으나 시작 주소는 동일합니다. System Memory 영역은 시스템 부트로더가 저장되어 있으며, STM의 Flash loader 프로그램을 통해서 유저 Flash 영역으로 코드를 다운로드하는 역할을 합니다.
Reset시 System Memory의 부트로더가 실행될지 아니면, 유저 Flash의 프로그램이 실행 될지는 Boot Mode 핀을 통해서 선택할 수 있습니다. 이 경우 Embedded SRAM도 부팅 영역으로 설정이 가능합니다. BOOT1 BOOT0 BOOT Mode 동작 x 0 User Flash User Flash 영역이 0x00000000으로 Mirror되며 되며, User Flash 코드가 실행 됨. 0 1 System Memory System Memory 영역이 0x00000000으로 Mirror되며, 시스템 부트로더 실행 됨. 1 1 Embedded SRAM Embedded SRAM 영역이 0x00000000으로 Mirror되며, SRAM 영역의 코드가 실행 됨. sram 영역 Cortex-M3의 SRAM 영역은 0x20000000 ~ 0x3FFFFFFF 까지 512MB 영역입니다. STM32 시리즈 별로 실제 사용 가능한 SRAM사이즈는 다르며, 8bit, 16bit, 32bit 단위로 모두 access가 가능합니다.