Load Memory Address — 저장 주소다.
플래시 (LMA) SRAM (VMA)
┌──────────────┐ ┌──────────────┐
│ .text │ 그대로 실행 │ │
│ .data 초기값 │ ──부팅 시 복사──► │ .data │
└──────────────┘ │ .bss (0 채움) │
└──────────────┘
왜 나눠야 하나
플래시는 전원을 꺼도 남지만 자유롭게 못 쓴다(쓰기가 느리고 횟수 제한이 있다). SRAM 은 빠르고 자유롭지만 전원이 꺼지면 사라진다. 그래서 초기값은 플래시에 두고, 실행 중 변경은 SRAM 에서 한다.
실무에서 걸리는 곳
- 전역 배열에 큰 초기값을 주면 플래시와 RAM 을 양쪽 다 먹는다.
읽기 전용이면
const를 붙여 플래시에만 두는 것이 정석이다 - 부트로더가 애플리케이션을 옮겨 실행하는 구조에서는 이 개념이 필수다