라이브러리 함수를 특정 위치에 배치하는 방법은 무엇입니까?

기술노트 33441

아키텍처:

ARM, RH850, RX, SH, STM8

컴포넌트:

linker

업데이트:

2021-06-25 오후 12:48

소개

IAR ILink Linker가 출력을 연결할 때 라이브러리 함수를 포함한 링크된 섹션과 블록이 임의 순서대로 정렬됩니다. (설계상 그렇습니다.)

해결방법

링크 지시문 "define block"은 "fixed order" 매개 변수로 보완되며 키워드가 "object"인 "section selector"를 사용하여 DLIB 기능을 그룹화하는 데 사용할 수 있습니다.
자세한 내용은 Development Guide개발 가이드의 Section-selectors 장을 참조하십시오.

예제

이 예에서는 라이브러리 기능을 지정된 순서로 그룹화하고 ROM 영역에서 마지막에 배치합니다.

.icf 파일에 다음 라인을 추가합니다...

define block LIB_CODE with fixed order
{
readonly object xreportassert.o,
readonly object iarttio.o,
readonly object ABImemcpy.o,
readonly object cmain.o
};

place in ROM_region { readonly, last block LIB_CODE };

... .map 파일에서 다음과 같이 보여집니다 ...

LIB_CODE                    0x0800cd98   0x192  <Block>
.text ro code 0x0800cd98 0xa0 xreportassert.o [3]
.text ro code 0x0800ce38 0x6c iarttio.o [6]
.text ro code 0x0800cea4 0x70 ABImemcpy.o [5]
.text ro code 0x0800cf14 0x16 cmain.o [5]

 

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

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