MSP430 information 메모리 영역에 CODE 배치하기
기술노트 39271
아키텍처:
MSP430
컴포넌트:
general
업데이트:
2021-05-28 오전 7:03
소개
MSP430 계열은 "Information Memory"라는 256 bytes의 플래시 메모리를 가지고 있습니다. 만약 당신의 프로그램이 MSP430 파생 모델을 위해 작성되었다면 "Information Memory"에 프로그램의 일부분을 배치하는 것은 도움이 될 수 있습니다.
해결방법
"지정된 세그먼트로 함수 배치" 를 사용하여 빠른 해결책을 얻거나,
.xcl 파일을 수정하여 더 나은 해결책을 얻을 수 있습니다.
"지정된 세그먼트로 함수 배치" 방법 사용
@-연산자를 사용하거나 “#pragma location” 지시문을 사용하여 특정한 함수를 INFO 메모리 영역으로 다음과 같이 배치 시킬 수 있습니다:
void g(void) @ "INFO"
{
}
#pragma location="INFO"
void h(void)
{
}
.xcl 파일 수정
상기의 제안은 빠르고 간편하나, 해당 방법은 링커가 코드를 배치하는 것은 허용하지 않습니다. IAR XLINK 링커가 배치를 최대한 잘 활용하도록 하려면(즉, 함수를 선택하고 배치하여 Information Memory에 채워지도록), 당신의 파생 모델을 위해 .xcl 파일을 수정해야 합니다.
(본 예제는 MSP430F1101A를 기반으로 만들어짐, 1kB flash 프로그램 메모리, 128B flash Information 메모리, 128 B RAM)
- \430\config\ 폴더에서 lnk430F1101.xcl 를 복사합니다.
- .ewp 파일(프로젝트)과 동일한 폴더에 복사본을 저장합니다.
- IAR Embedded Workbench for MSP430을 열고, 선택 : Project > Options > Linker > Config > Linker command file > "Override Default" 표시
아래를...$TOOLKIT_DIR$\CONFIG\lnk430F1101.xcl
...다음과 같이 변경... -
$PROJ_DIR$\lnk430F1101.xcl
- lnk430F1101.xcl 파일 복사본을 열고. 아래를....
-
-Z(CODE)CODE=FC00-FFDF
...다음과 같이 변경... -
-Z(CODE)CODE=1080-10FF,FC00-FFDF
... 변경 사항을 저장합니다..
IAR XLINK 링커 또한 CODE를 Information Memory에 배치합니다.
(참고 : 만약 .xcl 파일이 어떤 방법으로든 변경되지 않으면, INFO 세그먼트에 배치된 심볼(데이터 및/또는 함수)이 CODE 세그먼트에 배치된 심볼보다 우선시 됩니다. 이러한 이유는 INFO를 위한 -Z 옵션은 CODE를 위한 -Z옵션 보다 .xcl 파일상에서 먼저 배치되기 때문입니다.)
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.