연속형 변수
기술노트 75313
아키텍처:
ARM
컴포넌트:
linker
업데이트:
2021-06-22 오전 7:58
소개
본 기술 노트는 지정된 순서에 따라 변수를 배치하는 방법을 설명합니다.
논의
변수를 배치하는 방법은 다음과 같습니다:
- 섹션 이름 사용
- 예약된 공간 사용
- 기호(symbol) 이름 사용
- 익명 구조체(anonymous struct) 사용
섹션 이름 사용
소스 코드에서, @
연산자를 사용하여 변수를 지정된 섹션에 배치하는 방법입니다.
int ab[] @ "1st" = {1, 2, 3, 4, 5, 6, 7, 8};
int a[] @ "2nd" = {1, 2, 3, 4, 5 };
int abc[] @ "3rd" = {1, 2, 3, 4, 5, 6, 7};
링크 구성 파일에서 고정 순서 블록을 사용하여 각 변수에 할당된 섹션 이름을 선택하여 변수 간의 순서를 정의합니다.
define block ARRAYS with fixed order
{
section 1st,
section 2nd,
section 3rd
};
예약 공간 사용
응용 프로그램에서 변수 사이에 예약된 공간이 필요한 경우 이 방법을 사용할 수 있습니다.
링크 구성 파일에서 고정된 크기의 블록을 정의하여 예약된 RAM 공간을 나타내며, 고정된 순서 블록에서 변수 사이에 예약된 공간 블록을 배치합니다.
define block RESERVED_SPACE with alignment = 8, size = 1024 { };
define block ARRAYS with fixed order
{
section 1st,
block RESERVED_SPACE,
section 3rd
};
기호(symbol) 이름 사용
소스 코드에서 지정된 섹션에 배치되지 않은 변수를 선언합니다.
int ab[] = {1, 2, 3, 4, 5, 6, 7, 8};
int a[] = {1, 2, 3, 4, 5 };
int abc[] = {1, 2, 3, 4, 5, 6, 7};
링크 구성 파일에서 고정 순서 블록을 사용하여 기호 이름을 선택하여 변수 간의 순서를 정의합니다.
define block ARRAYS with fixed order
{
symbol ab,
symbol a,
symbol abc
};
익명 구조체(anonymous struct) 사용
IAR C 언어 확장을 사용하여 링커 지시문을 사용하지 않고 지정된 순서대로 배치하려면 "익명 구조체(anonymouse struct)"를 선언합니다.
struct
{
int a;
char b;
int c;
};
자세한 내용은 IDE의 Help 메뉴의 C/C++ Development Guide에서 Enabling language extensions and Anonymous structs and unions섹션을 참고하세요.
결론
지정된 순서로 변수를 배치하려면, 링크 지시문을 사용하여 고정 순서 블록을 정의하고 섹션의 이름/기호 이름을 선택하거나 익명 구조체를 사용할 수 있습니다.
이 예제에는설명된 각 방법에 대한 프로젝트가 포함되어 있습니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.