本篇文章介绍了基于英飞凌平台进行嵌入式开发的一些基础知识,首先介绍了涉及芯片的信息和常见的开发环境,把生硬的主体名称先分类并抛出来;然后着重介绍了英飞凌官网提供的开发资源,包括不限于开发环境,代码示例,芯片手册,论坛讨论;最后以实际的闪烁灯需求出发,不仅介绍了使用英飞凌提供的ADS开发环境,还介绍了将示例程序移植到HighTec环境中进行编译,帮助读者直观的了解在英飞凌平台进行嵌入式开发的来龙去脉。
英飞凌(Infineon)科技公司于1999年4月1日在德国慕尼黑正式成立,其前身为西门子集团的半导体部门,其基于TriCore™ 的产品在汽车中的应用非常广泛,包括内燃机控制、纯电动和混合动力汽车、变速器控制单元、底盘域、制动系统、电动转向系统、安全气囊、联网和高级驾驶辅助系统,并推动着自动化,电动化以及网联化的发展。
AURIX是一款由英飞凌开发的32位微控制器系列,针对汽车电子应用而设计。其主要的开发调试环境如下:
- ADS+miniwiggler:AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,拥有大量基于iLLD的例程。miniwiggler是 Infineon提供的低成本调试工具,可以实现芯片的程序刷写、调试等功能。
- HighTec+UDE:HighTec为基于Eclipse的集成开发环境,使用常见的GNU GCC工具链进行代码编译,可以申请一年的免费试用期,绑定使用电脑的MAC地址。UDE是一款用于汽车电子和嵌入式硬件的调试工具,可以通过JTAG或DAP接口实现程序的烧录与调试功能,调试功能相对miniwiggler更加丰富。
- 其他:Tasking+minwiggler也可以完成开发调试工作,仿真调试工具在预算充足的情况下可以选择劳德巴赫。minwiggler可以配合Memtool实现程序刷写的工作,在安装Memtool或者ADS的时候会提醒是否安装DAS,电脑上安装DAS 后,就能够连接miniwiggler,还可以显示芯片信息。
官网资源
英飞凌官网上对于AURIX™主要分为TC2xx系列和TC3xx系列。点击这里可以跳转至英飞凌AURIX™系列生态圈,包含了技术文档,评估板,开发工具,产品视频,开发问题等一系列初次接触该平台可能需要的背景知识。
ADS
AURIX Development Studio是一个免费的集成开发环境(IDE),适用于基于TriCore™的 AURIX™微控制器系列。它是一个全面的开发环境,包括 Eclipse IDE、C 编译器、多核调试器、英飞凌低级驱动程序 (iLLD),没有时间和代码大小限制,可以编辑、编译和调试应用程序代码。结合大量代码示例项目,IDE可用于评估 AURIX™ 微控制器系列的强大架构。
AURIX™ Development Studio由以下三部分组成:
- Infineon Website Trainings:在英飞凌网站,您可以在其中找到快速/专家级培训的页面。点击这里跳转到培训页面,按照需要选择TC2xx/TC3xx系列芯片对应的培训内容,快速培训中包含了芯片内部一些基本模块原理说明,而专家培训则是针对英飞凌各个基于iLLD库的例程详细说明。
- AURIX Development Studio:集成开发环境(IDE),点击这里跳转到对应工具的下载与安装,点击这里有快速使用指南,点击这里是它的Release Notes。
- Infineon Github Code Example:点击这里跳转英飞凌公司提供的代码基于基于iLLD库的各种例程,您可以根据工程文件夹名称来选择您需要参考的开发板种类以及对应的功能,诸如Blinky_LED_1_KIT_TC397_TFT就是针对KIT_TC397_TFT评估板的闪灯工程。
文档与帮助
点击这里可以跳转到TC3xx的系列芯片相关文档,比如常用的User Manual。
点击这里可以跳转到平台提供例程的详细说明以及iLLD的帮助文件。
点击这里跳转到MyICP可以按照提示进行保密文档申请。
点击这里跳转到AURIX™ 论坛讨论。
ADS使用示例程序实现LED灯闪烁
打开ADS集成开发环境,File菜单下的Import。
选择AURIX Development Studio Project,可以看到官方提供了非常多的示例,并且可以通过关键字属性查找自己感兴趣的模块。
我们在搜索栏可以根据主题、芯片型号等进行筛选,我们输入LED 26x,可以看到这个针对KIT_TC265_TFT评估板的LED闪烁实现工程,可以看到下面也有一个简略的介绍,说这个示例工程会控制 P33.8 闪烁。点击完成 ADS 就会自动把这个工程下载下来放在工作区。
打开之后就可以看到工程所有的源码已经包含进来了。
我们下面贴出了主核的示例代码,读者可以根据中文注释进行理解。
#include "IfxCpu.h"
#include "IfxScuWdt.h"
#include "Ifx_Types.h"
#include "Bsp.h"
#include "IfxPort.h"
IfxCpu_syncEvent g_cpuSyncEvent = 0;
int core0_main(void) {
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());//关cpu狗
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());//关Safety狗
IfxCpu_emitEvent(&g_cpuSyncEvent);
IfxCpu_waitEvent(&g_cpuSyncEvent, 1);//等待核同步
initTime();//初始化Time
IfxPort_setPinModeOutput(&MODULE_P33, 8, IfxPort_OutputMode_pushPull, IfxPort_PadDriver_cmosAutomotiveSpeed1);//设置引脚推挽输出
IfxCpu_enableInterrupts();//使能中断
while (1) {
IfxPort_togglePin(&MODULE_P33, 8);//翻转引脚状态
waitTime(5 * TimeConst_100ms);//延时
}
return (1);
}
示例工程移植到HighTec
示例工程结构
点击这里跳转到英飞凌示例程序github。
我们这里选择在KIT_TC334_LK开发板上闪烁灯的工程,可以看到如图所示的工程结构。
下面介绍一个各个文件夹所包含的内容:
- Configurations:包含了一些芯片启动配置代码,如BMHD。
- Libraries:这个文件夹就是官方提供的库文件,包含以下三个部分
- Infra:文件夹包含头文件,编译器文件以及启动软件文件。
- Platform/Tricore/Compilers:包含编译器文件。
- /Infra/Sfr/TC33A/_Reg:包含寄存器相关头文件。
- Infra/Ssw/TC33A/Tricore:包含启动文件。
- Service/CpuGeneric:包含衍生的独立服务软件源。
- iLLD/TC33A/Tricore:包含iLLD底层驱动相关源文件。
- _Build:编译驱动所需的文件。
- _Impl:包含配置文件。
- _PinMap:包含引脚列表。
- _Lib:包含通用的功能函数。
- XXX(module):包含具体外设驱动。
- Infra:文件夹包含头文件,编译器文件以及启动软件文件。
- CupX_Main.C:各个CPU的main函数,MCU上电先由CPU0执行SSW中的启动代码,再依次启动其它CPU,跳转到各自的main函数。
- *.lsl:这两个就是链接脚本,带Tasking的是ADS和Tasking编译器用的,带Gnuc的是GCC用的,HighTec用的链接脚本就是Lcf_Gnuc_Tricore_Tc.lsl。
新建HighTec工程
新建一个Hightec工程,选择“Create advanced project”,选择TC334系列的BSP example:
建立好的工程之后,我们需要把之前的源码目录全部删除,即下图的红框部分。
复制例程源码
将Github上的源码复制到工程路径下,复制完之后摁F5刷新工作区,可得下图。
工程配置
按下图按照需要添加头文件包含。下图示例中仅包含了src,我们需要把所有工程中涉及到的头文件路径包含进来。
按照下图,勾选不使用Hightec自带的启动代码,因为iLLD中集成了SSW启动代码,勾选之后可以从iLLD的_START函数启动。 链接文件选用从示例工程复制过来的链接脚本。
在此处添加__HIGHTEC__条件编译宏定义。
最后,只留下一个Build Configurations即可。
点击编译之后即可生成对应的elf文件(可以根据需要重新命名工程)。
十六宿舍 原创作品,转载必须标注原文链接。
©2023 Yang Li. All rights reserved.
欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。