文章介绍了使用HighTec编译开发环境集成TC3xx对应MCAL例程的一般过程,文章以具体实操流程为介绍线索并对集成的每一步配以图片,帮助读者可以按图索骥完成整个的集成过程,最终可以基于MCAL来驱动片内外设。
目录
HighTec安装
新建HighTec自带Bsp example
集成MCAL的Demo
BSP example工程裁剪
集成MCAL?
工程配置
编译与调试?
HighTec安装
点击这里这里跳转HighTec官网下载一年免费使用HighTec。需要输入本地的MAC地址生成对应的License文件。

下载完成之后打开软件会显示下图导航界面,可以点击Get the Quick Start Guide得到一些工具使用的帮助。

新建HighTec自带Bsp example
点击Creat HighTec Project新建工程。

选择Create advanced project。
?我们手中的TC397开发板是KIT_A2G_TC397XA_TFT,所有我们下边选择TC39x BSP example。

建立完成之后如下图。?

下面我们简单介绍以下工程的目录结构。
- bsp:文件夹里边包含一些板级代码,包括微处理器的寄存器定义以及初始化,中断的定义,以及开发板卡包含的片外驱动,通过选择不同的Build Configuration可以使工程包含不同的开发板片外驱动。

- ctr0:包含C/C++ runtime environment startup file。启动文件以及bmhd结构体定义。
- doc:包含例程快速使用指导。

- ld:链接脚本。
- src:示例程序多核共享主函数,每个核心闪烁对应LED灯。
编译完成之后,会生成elf文件。

集成MCAL的Demo
BSP example工程裁剪
首先删除工程内包含所有文件。

点击工程,右键点击Properties,打开工程属性,删除不需要的Build Configuration。

?根据需要重新命名工程。

集成MCAL?
首先我们将需要的代码从MCAL的Demo中转移到工程中,用户可以根据自己的需要来组织代码,下面是我对代码的组织。

下面我简单介绍一下各个文件夹都包含的内容以及来源。
- ld:链接脚本,来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\1_ToolEnv\0_Build\1_Config\Config_Tricore_Gnuc目录下的链接文件,后缀名需要改成.ld。
- EB_CFG:EB生成的动态代码,包括工程文件,EB可以直接从此目录导入。

- Infra_Prod:它包含的文件夹较多。
- Autosar_Srv:文件夹包含一些Autosar上层代码预留的接口,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\BaseSw\Infra目录下同名文件夹,包含所需文件即可。
- Integration:文件夹包含一些Memmap和SchM相关实现,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\BaseSw\Infra目录下同名文件夹,包含所需文件即可。
- Irq:中断静态驱动代码,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\BaseSw\Infra目录下同名文件夹。
- Ssw:文件夹包含英飞凌提供的启动代码和不同编译器头文件,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\BaseSw\Infra目录下同名文件夹。
- Cfg_Ssw:文件夹包含启动代码相关参数,包括BMHD,文件来自MC-ISAR_AS422_TC3xx_BASIC_1.40.0\DemoWorkspace\McalDemo\TC39B\0_Src\AppSw\Tricore目录下同名文件夹。
- Platform:文件夹包含一些Types,文件来自MC-ISAR_AS422_TC3xx_BASIC_1.40.0\McIsar\Src\Infra_Prod目录下同名文件夹。
- Sfr:文件夹包含芯片寄存器地址定义,文件来自C:\MC-ISAR_AS422_TC3xx_BASIC_1.40.0\McIsar\Src\Infra_Prod下同名文件夹,文件夹只需要保留TC39xB的定义。
- Tricore:文件夹下包含MCAL静态代码,文件来自MC-ISAR_AS422_TC3xx_BASIC_1.40.0\McIsar\Src\Mcal\Tricore目录下需要包含模块的驱动静态代码。
- CAN_Irq:因为工程要使用CAN通信,包含了CAN中断相关代码,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC38A\0_Src\AppSw\Tricore\DemoMcal\Demo_Irq目录下同名文件夹。
- CDD:板卡涉及的外围芯片复杂驱动实现,来自具体外围芯片厂商,需要根据通信接口与MCAL进行链接实现通信。
- Demo_Gpt:因为工程使用了GPT,借用了MCAL的Demo实现,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\AppSw\Tricore\DemoMcal目录下同名文件夹。
- Gtm_Irq:Gtm对应中断代码,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\AppSw\Tricore\DemoMcal\Demo_Irq目录下同名文件夹。
- Main:文件夹中包含各个核心的main函数,文件来自MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\AppSw\Tricore目录下同名文件夹,读者可以根据需要修改main函数驱动自己感兴趣的外设,参考MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\0_Src\AppSw\Tricore\DemoMcal\DemoApp下的实现。
工程配置
修改启动文件来自MCAL,点击工程,右键选择Properties,打开工程属性,然后选择C/C++ Build下的Settings,然后再选择TriCore C Linker,勾选Exclude startup code ctr0.o。在下面将提前准备好的Linker脚本添加。

根据需要包含工程编译时的包含路径(.h文件路径),在Settings下面的TriCore C Compiler的General进行添加。

添加一些编译宏定义,进行条件编译。

编译与调试?
这个时候你编译的话一定会报很多错误,有可能是因为你上一步包含Include目录少添加了导致找不到函数定义,或者是因为在移植Autosar_Srv和Integration目录中包含了多余的代码。我们在前期移植的时候很难掌握到底需要哪些文件,我们可以根据错误信息来通过下面的手段来将文件包含或移除项目中。
如左图,点击需要移除的.c文件,选择Resource Configurations,然后选择Exclude from Build即可以得到右图,在右图中选中项目编译输出文件夹点击ok则移除项目,文件在项目管理了窗口会变灰,选择移除的文件同样的操作把选中状态去掉再点击ok则再次包含此文件进行编译。

有些提前预留的AUTOSAR接口没有具体实现,因为我们暂时不需要跟上层集成,可以暂时注释掉。当解决掉所有的问题之后,编译左后链接会报一些错误。修改链接文件增加下图红色部分即可。

编译成功后生成elf文件。

十六宿舍 原创作品,转载必须标注原文链接。
?2023 Yang Li. All rights reserved.
欢迎关注?『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。