라이브러리 함수를 특정 위치에 배치하는 방법은 무엇입니까?
기술노트 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]
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.