MEMORY 지시어는 링커 스크립트에서 사용되며, 마이크로컨트롤러나 다른 타겟 시스템의 메모리 구성을 정의하는 데 사용됩니다. 이 지시어는 각 메모리 영역의 이름, 속성, 시작 주소, 그리고 크기를 설정하며, 이 정보를 기반으로 링커는 각 섹션(코드, 데이터 등)을 적절한 메모리 영역에 배치합니다.
MEMORY 지시어의 기본 구조는 다음과 같습니다:
MEMORY
{
이름 (속성) : ORIGIN = 시작주소, LENGTH = 크기
}
- 이름: 메모리 영역의 식별자입니다. 일반적으로 FLASH, RAM과 같이 의미 있는 이름을 사용합니다.
- 속성: 메모리 영역의 속성을 나타냅니다. 주로 사용되는 속성은 r (읽기 가능), w (쓰기 가능), x (실행 가능) 입니다. 속성은 메모리 영역의 용도를 링커에게 알려주며, 예를 들어 코드 섹션은 실행 가능해야 하므로 x 속성이 필요합니다.
- ORIGIN: 메모리 영역의 시작 주소입니다.
- LENGTH: 메모리 영역의 크기입니다.
MEMORY 지시어의 사용 예시는 다음과 같습니다.
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
}
이 예시에서는 두 개의 메모리 영역을 정의하고 있습니다:
- FLASH: 시작 주소가 0x08000000이고 크기가 64KB인 플래시 메모리 영역입니다. 속성은 읽기(r)와 실행(x)이 가능하다는 것을 나타냅니다. 주로 프로그램 코드와 상수 데이터를 저장하는 데 사용됩니다.
- RAM: 시작 주소가 0x20000000이고 크기가 20KB인 RAM 메모리 영역입니다. 속성은 실행(x), 읽기(r), 쓰기(w)가 가능하다는 것을 나타냅니다. 주로 변수, 스택, 힙을 저장하는 데 사용됩니다.
'링커 스크립트 (Linker Script)' 카테고리의 다른 글
Linker Script (5 - 전역변수를 Flash에서 사용하기) (0) | 2024.02.18 |
---|---|
Linker Script (4 - SECTION) (0) | 2024.02.17 |
Linker Script (2 - ENTRY) (0) | 2024.02.17 |
Linker Script (1 - 지시어) (0) | 2024.02.17 |
Linker Script 란? (0) | 2024.02.17 |