
안녕하세요! MDS인텔리전스 입니다!
오늘은 AURIX Development Studio에서 작업한 Project를 TASKING Compiler에 migration하는 방법에 대해 소개하고자 합니다.
Project 시작할 때는 AURIX Development Studio(ADS로 표기함)에서 작업을 하다가 TASKING Compiler 구매 후, TASKING으로 Project를 이관하는 경우가 발생합니다.
이러한 경우에 많은 분들이 import 기능을 통해 migration을 진행하는데, import를 하게 되면 레지스터 파일 매크로 중복 에러, 라이브러리 경로 에러 등 다양한 에러를 마주하게 됩니다.
TASKING Compiler는 Project 생성 시, 각 프로세서에 맞게 레지스터 파일, 링커 스크립트, startup 코드 등을 자동으로 매핑 및 포함하여 개발자들이 편하게 개발할 수 있게 도움을 주는 기능이 있습니다. 하지만, 다른 개발 툴(ADS)에서 작업한 작업물을 TASKING Compiler에 import 하게 되면 위와 같은 에러가 발생하게 되는 것입니다.
그래서 오늘은 ADS Project를 migration하는 방법을 알아보도록 하겠습니다.
Step.1 ADS에서 옵션 설정
ADS에서 Project > Properties > AURIX Development Studio > Build 메뉴에서
‘Auto-discover compiler include paths’ 체크 해제
체크를 해제하지 않으면 include paths 설정에서 path를 복사할 수 없습니다.

Step.2 TASKING Compiler에서 Project 생성
TASKING Compiler에서 Project를 생성합니다.
File > New > TASKING Tricore C/C++ Project > TASKING TriCore Application > Empty Project 선택 > Next

Processor 선택 > Actions 메뉴의 3개의 항목 체크 해제 > Finish
Startup code, linker script file, debugger 동기화 파일이 포함되지 않도록 설정해야 링커스크립트 중복 및 startup code 중복 에러가 발생하지 않습니다.

Step.3 ADS Project의 하위 file 복사
ADS Project의 하위 file 및 folder를 복사하여 TASKING Compiler Project에 붙여넣습니다.
대상 파일 및 폴더는 Configurations, Libraries, startup code, linker script code, c source file, header file 등이 포함됩니다.


Step.4 Include Paths 설정
ADS Project > Properties > C/C++ Build > Settings > TASKING C/C++ Compiler > Include Paths의 paths를 모두 복사합니다.

TASKING Project > Properties >C/C++ Build > Settings > Include Paths에 모두 붙여넣습니다.

Step.5 TASKING Compiler 옵션 설정
TASKING Project > Properties > C/C++ Build > Settings > C/C++ Compiler > Preprocessing 메뉴의 ‘Automatic inclusion of ‘.sfr’ file 체크 해제
sfr파일에는 레지스터 정보가 있는 파일으로 포함하게 되면 매크로 등 중복 정의 에러가 발생하게 되기 때문에 포함하지 않도록 설정합니다.

TASKING Project > Properties > C/C++ Build > Settings > Linker > Script File > Linker script file 경로에 Lcf_Tasking_Tricore_Tc.lsl 파일의 경로를 설정

Step.6 Build 확인
모든 환경설정이 끝났다면, build를 하여 에러가 발생하지 않는지 확인합니다.
만약, path 설정에 누락이 발생했다면 에러 로그를 확인하여 추가로 path 설정을 해주시면 됩니다.
Step.7 Build 에러 발생 대처
아래와 같이 Ifx_Ssw_Infra 파일에서 _main과 관련된 에러가 발생하는 경우가 있습니다.

이 에러는 iLLD 드라이버 구성 오류로 인해 발생하게 됩니다.
iLLD에는 C++ 라이브러리를 포함하고 있어, 해당 라이브러리에 포함된 _main 함수를 호출하게 되어있습니다.
만약 프로젝트에 C++로 작성된 코드가 포함되어 있지 않다면,
Ifx_Ssw_Infra.c 파일의 203-204 라인을 주석처리 한 뒤, build를 시행하게 되면 에러가 발생하지 않습니다.


추가 설정
ADS에서 설정했던 컴파일 옵션, Path 지정 등은 TASKING Compiler에서 직접 수작업으로 설정해주어야 합니다.
ADS Project를 TASKING Compiler에 migration하는 방법에 대해 소개하였는데,
여러가지 설정이 필요하지만, 안정적으로 마이그레이션이 가능한 방법입니다.