연속형 변수

기술노트 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섹션을 참고하세요.

 

결론

지정된 순서로 변수를 배치하려면, 링크 지시문을 사용하여 고정 순서 블록을 정의하고 섹션의 이름/기호 이름을 선택하거나 익명 구조체를 사용할 수 있습니다.

예제에는설명된 각 방법에 대한 프로젝트가 포함되어 있습니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.