특정 주소에 포인터 테이블 배치하기
기술노트 44835
아키텍처:
All
컴포넌트:
compiler
업데이트:
2021-05-11 오전 10:58
소개
본 기술 노트는 특정 주소에 포인터 배열을 배치하는 방법에 대해 논합니다.
해결방안
@ 배치를 지원하는 IAR C/C++ 컴파일러 버전에는, 두가지 방법을 사용할 수 있습니다. 배열을 const 형으로 선언하거나, 런타임시에 값이 변해야 하는 경우 배열을 초기화하지 않은 것으로 선언합니다.
첫 번째 방법은 다음과 같습니다.
unsigned char * const RamAddresses[4] @ 0x8000 =
{
&object1,
&object2,
&object3,
&object4,
};
두 번째 방법입니다.
이 방법을 위해 두 가지 조치를 취해야 합니다.
절대 배치 (@ 기호)에서는 초기화된 비 상수 변수를 허용하지 않습니다. 따라서 배열을 __no_init 로 선언해야 합니다.
__no_init unsigned char * RamAddresses[4] @ 0x8000;
다음 응용프로그램의 코드에서 예를 들어 main()의 시작부에서 배열을 초기화 합니다.
RamAddresses[0] = &object1;
RamAddresses[1] = &object2;
RamAddresses[2] = &object3;
RamAddresses[3] = &object4;
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.