本帖最后由 jcky001 于 2024-6-25 09:46 编辑
为了便于大家理解,本文的思维导图大纲如下:
英飞凌芯片编译器类型总结
很多小伙伴在使用英飞凌Tricore芯片时,经常会涉及到如下五种不同的编译器类型:
ADS编译器:全称为Aurix Development Studio,是英飞凌官方免费的编译器,不需要license;
Tasking编译器:属于英飞凌官方需要进行付费获取license的编译器,其license一般可分为单机license与Floating license两种;
Hightec编译器:属于Hightec公司适配英飞凌芯片的编译器,不过Hightec有一年期可用的试用版本,获取方式可参考小T之前的文章链接《Hightec编译器之白**就是爽》,除了试用版本之外那就是需要付费的商业版本。
GreenHills编译器:属于GreenHills公司适配英飞凌芯片的编译器,属于商用版本;
WindRiver Diab编译器:属于WindRiver公司适配英飞凌芯片的编译器,也属于商用版本;
目前前三者编译器使用范围比后两者要广,生态可能更为丰富些,因此对于初学英飞凌Tricore芯片的小伙伴来说,可以先接触前三种编译器即可,其中ADS以及Hightec试用版不用收费,大家可以放心使用进行练手。
通过在autosar架构下经常使用的模块Memmap.h文件中便可以看到为了兼容上述五种不同编译器特性功能所作的适配如下图:
在开发英飞凌芯片的过程中,上述编译器类型都有可能用到,本文将重点讲解ADS,Tasking,Hightec这三类编译器生成可烧录文件的基本方法,最为常见的可烧录文件就是hex/srec两类文件。
正常在开发调试过程中,我们仅需要生成Elf文件即可,编译器会自动将Elf文件中的镜像数据烧录至芯片,但是如果涉及到UDS烧写或者OTA,就不能使用Elf文件直接进行烧录,需要将Elf文件转换为Hex文件或者S19文件之后才能进行使用。
小T之前在开发过程中曾经寻找这三类编译器转换为可烧录文件(如hex文件或者S19文件)的方法,比较费劲或者容易混淆,因此决定在一篇文章中总结给到大家,帮助大家提升效率。
ADS生成可烧录文件方式
在ADS IDE编译环境中,鼠标右击工程,然后选择点击”Properties“ 进入如下图中的属性配置界面:
image-20240609181941044
在Tasking Linker的Command一栏中用如下指令覆盖即可:
${COMMAND} ${FLAGS} ${OUTPUT_FLAG}"${BuildArtifactFileBaseName}.elf" -Wl${OUTPUT_FLAG}"${BuildArtifactFileBaseName}.hex:IHEX" -Wl${OUTPUT_FLAG}"${BuildArtifactFileBaseName}.sre:SREC" ${INPUTS}
其中起到关键作用的就是-Wl{BuildArtifactFileBaseName}.hex:IHEX" 以及-Wl{BuildArtifactFileBaseName}.sre:SREC"这两条指令,IHEX指令则用于生成hex文件,SREC指令则用于生成S-Record文件,这两条指令记得用空格隔开。
Tasking生成可烧录文件方式
1.IDE界面配置方式
在Tasking IDE环境中鼠标右击工程,然后选择点击”Properties“ 进入如下图中的属性配置界面:
2.指令方式
如果需要使用脚本调用Tasking编译器指令形式,可以通过如下指令实现:
2.1 生成Hex文件指令:
在链接过程中添加如下Options即可:
-Wl-O"${PROJ}.hex":IHEX:4
2.2 生成srec文件指令:
在链接过程中添加如下Options即可:
-Wl-O"${PROJ}.sre":SREC:4
注意事项:其中-Wl表示向Linker传递Option参数的固定前缀,${PROJ}可以自定义名字;
Hightec生成可烧录文件方式
1.IDE界面配置方式
如下为Hightec IDE下鼠标右击工程,然后选择点击”Properties“ 进入如下图生成可烧录文件的操作步骤:
其中"Generate hex"则用于生成Hex文件,“Generate srec”则用于生成S-Record文件,具体选择哪个取决于项目需要即可。
2.指令方式
2.1 生成Hex文件指令方式
tricore-objcopy -O ihex <elf-inputfile> <hex-outputfile>
2.2 生成srec文件指令方式
tricore-objcopy -O srec <elf-inputfile> <hex-outputfile>
小T已将上述ADS,Hightec,Tasking这三类编译器相关文档进行了统一整理,有需要的小伙伴公众号后台回复关键词"编译器"即可免费获取; |