1. 软件简介
AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。
Hightec是一款可以用来开发Aurix系列单片机的编译器,有免费版,可商用,集成GCC编译器,可用UDE进行调试。下载链接见官网:
https://free-entry-toolchain.hightec-rt.com/index.php
Hightec编译器不自带iLLD库,所以我们可以用AURIX DevelopmentStudio(后文简称ADS)来新建一个带iLLD库的工程,再移植到Hightec。
本文就来介绍一下具体的移植方法。
2. 移植方法
(1)新建一个ADS工程
以TC377为例,新建好的工程如下图所示:
简要介绍下各个文件夹所包含的内容:
- Configurations:包含了一些芯片启动配置代码,如BMHD等
- Debug:以Debug模式编译时生成的文件夹,包含生成的.o文件、hex文件、map文件等
- Libraries:这个文件夹就是官方提供的库文件,包含了iLLD底层驱动库、启动代码SSW、寄存器定义,以及官方提供的一些常用系统接口函数,如延时、CRC等
- CupX_Main.C就是各个CPU的main函数,MCU上电先由CPU0执行SSW中的启动代码,再依次启动其它CPU,跳转到各自的main函数。
- *.lsl:这两个就是连接脚本,带Tasking的是ADS和Tasking编译器用的,带Gnuc的是GCC用的,一会我们一直到hightec的时候用的连接脚本就是Lcf_Gnuc_Tricore_Tc.lsl。
(2)新建一个Hightec工程
新建一个Hightec工程,选择TC377系列,勾选“Create Empty Project”:
新建好的Hightec工程如下图所示:
(3)复制源码
把源码从ADS文件夹复制到Hightec工程文件夹:
把工程主路径下的三个main.c文件复制到src文件夹下,测试的时候发现放到主目录下无法编译:
打开Hightec工程,点击F5可刷新工程,刷新后就可以看到复制过来的文件:
然后设置工程包含复制过来的文件,从ADS复制过来的源码文件和文件夹默认是不包含在工程里面的,也就是不进行编译,在复制过来的源码文件夹或文件上点击右键,选择“Exclude Form Build”,全部都取消勾选,再点击OK即可包含源码。
(4)添加头文件路径
点击“Project-Properties”,打开工程属性设置框,在如下位置添加包含源码的所有文件夹路径:
(5)配置启动文件
如下图所示,勾选不使用Hightec自带的启动代码,因为iLLD中集成了SSW启动代码,勾选之后可以从iLLD的_START函数启动。
(6)选择使用从ADS工程复制过来的链接脚本
在如下位置填写:"$ {workspace_loc:/$ {ProjName}/Lcf_Gnuc_Tricore_Tc.lsl}",以选用从ADS复制过来的链接脚本。【注意两个$ 后面有个空格,不然CSDN网页显示会有错误,复制的时候注意删除】
到此就完成了工程移植的所有必要步骤,下面再介绍一些可选的配置。
3. 其它配置项
(1)配置为ROM编译
Hightec工程默认是RAM编译,即编译到RAM中,我们要想让编译后的代码在Flash中运行,就需要配置为ROM编译,方法如下:
【注意:更改编译方式后,需要重新设置上文所述的头文件路径、链接脚本路径以及启动文件,头文件路径比较多可以从RAM复制过来】
(2)设置生成Hex文件
在图中位置可以添加PreBuild 步骤和PostBuild步骤,在PostBuild步骤中就有生成Hex文件的选项。添加后编译即可在编译文件夹下生成Hex文件:
此外还有一种方法:
在下图中的位置处输入:tricore-objcopy.exe -O ihex ${BuildArtifactFileBaseName}.elf ${BuildArtifactFileBaseName}.hex,也可以生成Hex文件:
(3)提高Hightec编译速度的两个方法
工程大了之后,Hightec的编译速度非常慢,有以下两种方式可以提高编译速度:
① 配置并行编译
在如下路径处可以开启多核编译,开启后编译速度能有效提高:
② 取消自动生成Makefile文件
在如下路径处可以取消自动生成MakeFile文件的勾选,这个选项勾选的话每次编译Hightec都会为每个源文件生成Makefile文件,会花费大量时间,取消勾选后不会重新生成,只进行编译。但需要注意的是,添加或删除源文件,或更改编译选项后,需要重新打开Makefile文件的生成至少一次,否则不会编译的时候还会用原来的Makefile文件。