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 파일상에서 먼저 배치되기 때문입니다.)

 

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

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