IAR Embedded Workbench fo ARM 에서 RealView .sym 파일
기술노트 96176
아키텍처:
ARM
컴포넌트:
linker
업데이트:
2021-06-25 오후 12:08
소개
IAR Embedded Workbench for ARM에서 RealView 심볼 정의 파일(symdefs/.sym)을 사용하는 방법은 무엇입니까?
경고!
이것은 기술적으로 어려운 방법입니다. 예를 들어 AEABI가 무엇이고 어떤 호출 규칙을 사용하는지 알아야 합니다.
이 방법을 위한 참고사항:
외부 심볼에 대해 작은 수의 에러 및 경고가 생성됩니다.
다른 이미지의 심볼에 접근하기
IAR Embedded Workbench for ARM으로 생성된 하나의 이미지를 RealView Compilation Tools로 생성된 다른 이미지의 글로벌 기호 값을 알고자 합니다.
해결방법
심볼 정의 파일(symdefs)를 사용하시기 바랍니다.
.sym 파일
armlink 옵션 --symdefs 를 사용하여 프로젝트 폴더에 이 파일을 생성 및 복사합니다.
armlink --symdefs filename
ARM Linker에 대한 자세한 내용은 ARM 문서를 참조하십시오.
.bat 파일
prebuild시 .h, .f 파일을 생성하기 위해 sym2h.bat 스크립트 파일을 사용 - IAR Embedded Workbench > Project > Options... > Build Actions > Pre-build 커맨드라인:
$PROJ_DIR$\sym2h.bat $PROJ_DIR$\filename.sym
Use: sym2h.bat filename
The filename should be a fully qualified path name.
Output directory is the same as the input directory.
파일 이름 입력이 필요합니다. 파일 이름은 사용가능한 경로 이름이어야 합니다.
출력 디렉터리는 입력 디렉터리와 동일합니다.
.f 파일
심볼 정의 파일을 생성하기 위해 ilinkerarm.exe에 추가 옵션을 사용해야합니다 - IAR Embedded Workbench > Project > Options... > Linker > Extra Options 에서 'Use command line options' 선택 및 커맨드 라인 옵션:
-f $PROJ_DIR$\filename.f
Use: -f file
Read command line options from file
.h 파일
생성된 외부 정의 파일을 사용하려면 코드에 포함시키십시오. -
#include "filename.h"
자세한 정보
RealView Compilation Tools 버전 2.2 [Build 576]와 IAR Embedded Workbench for ARM 버전 5.11에서 생성된 symdefs 파일을 테스트하였습니다.
이 bat 파일은 심볼이 A(arm), T(thumb), D(data)인지를 기반으로 표준 정의를 생성합니다.
A 혹은 T 스크립트의 경우 사용 -
void <SYMBOL_NAME>();
D 스크립트의 경우 사용 -
extern int <SYMBOL_NAME>;
필요한 부분에 기호를 사용해야 할 수도 있습니다.
Load image
타겟에 아직 외부 빌드 이미지가 없다면 다음 방법을 사용 -
ilinkarm.exe --image_input filename.axf
Use: --image_input file[,symbol[,section[,alignment]]]
Put image file in section from file
예제 프로젝트
다음 링크에서 예제 프로젝트를 확인하세요: Example project including sym2h.zip.
주의사항
IAR Systems는 sym2h.bat를 판매하거나 지원하지 않습니다. sym2h.bat는 당사 툴 체인의 일부가 아닙니다. 따라서 이러한 파일은 추가 지원이나 정보 제공 없이 그대로 제공됩니다. sym2h.bat과 관련하여 저희 또는 다른 개발자들과 공유하고자 하는 개선 제안 사항에 대해 언제든지 환영하여 듣고자 합니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.