* 전체 구조
메모리의 주소별 각 순서는 다음과 같다.
Cortex-M3's internal periperals |
not used |
FSMC( External SRAM) |
Periperal |
SRAM |
Code |
그 중 자세히 볼 영역은 Code& SRAM 영역이다.
우리가 프로그램 코드를 작성하고 구현될 때 대부분의 내용이 Code와 SRAM 영역에 저장된다.
이제 해당 부분을 자세히 살펴 보자.
1. Code 영역
- Boot 영역
- Flash 영역
Flash 영역에는 .text , .data, .rodata영역이 저장되어있다.
1) .text 영역
- 구현한 프로그램 코드가 저장되는 영역
2) .rodata 영역
- 상수 및 읽기전용(const..)등의 변수들이 저장되는 영역이다.
3) .data 영역
- 초기화된 전역변수의 값.
2. SRAM 영역
전역,지역변수들에 대한 데이터가 저장되는 영역이다.
1) .data 영역
- 초기화된 전역변수들이 저장된 저장공간
- 코드가 실행될 때 Flash의 .data 영역에서 값을 읽어온다.
2) .bss 영역
- 초기화되지 않은 전역변수들이 저장된 저장공간.
3) stack
- SRAM 메모리의 끝에서부터 아래로 내려오며 저장되는 지역변수들이 저장되는 공간
4) heap
- .bss의 끝에서부터 올라가며 저장되는 동적할당 변수들 저장 공간.
'SW 개발 공부 > STM32' 카테고리의 다른 글
[Stm32 Project]BootLoader 구현 (3) | 2024.11.13 |
---|---|
[stm32 chip 메모리구조#2] 메모리 디버깅 방법 (0) | 2024.05.27 |
ISR 내부 루틴의 간소화 필요성 (0) | 2024.02.14 |
stm32에서 printf() 함수 사용하기 (0) | 2024.02.07 |
[STM32] UART 인터럽트 수신 & pooling 송신 (in keil) (0) | 2020.12.08 |