임베디드 용어 사전
부팅·빌드

LMA

바이너리에서 그 데이터가 저장돼 있는 주소. .data는 플래시에 저장되고 실행 시 SRAM으로 복사된다.

Load Memory Address — 저장 주소다.

플래시 (LMA)                     SRAM (VMA)
┌──────────────┐                ┌──────────────┐
│ .text        │ 그대로 실행       │              │
│ .data 초기값  │ ──부팅 시 복사──► │ .data        │
└──────────────┘                │ .bss (0 채움) │
                                └──────────────┘

왜 나눠야 하나

플래시는 전원을 꺼도 남지만 자유롭게 못 쓴다(쓰기가 느리고 횟수 제한이 있다). SRAM 은 빠르고 자유롭지만 전원이 꺼지면 사라진다. 그래서 초기값은 플래시에 두고, 실행 중 변경은 SRAM 에서 한다.

실무에서 걸리는 곳

  • 전역 배열에 큰 초기값을 주면 플래시와 RAM 을 양쪽 다 먹는다. 읽기 전용이면 const 를 붙여 플래시에만 두는 것이 정석이다
  • 부트로더가 애플리케이션을 옮겨 실행하는 구조에서는 이 개념이 필수다

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 링커 스크립트와 빌드 — 무엇이 어디에 놓이는가