英飞凌(Infineon)平台嵌入式开发基础

本篇文章介绍了基于英飞凌平台进行嵌入式开发的一些基础知识,首先介绍了涉及芯片的信息和常见的开发环境,把生硬的主体名称先分类并抛出来;然后着重介绍了英飞凌官网提供的开发资源,包括不限于开发环境,代码示例,芯片手册,论坛讨论;最后以实际的闪烁灯需求出发,不仅介绍了使用英飞凌提供的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):包含具体外设驱动。
  • 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.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/163557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

带你精通chrony服务器

华子目录 为什么会出现Chrony?Linux的两个时钟NTP介绍Chrony介绍安装与配置安装Chrony配置文件分析实验1实验2chronyc命令查看时间服务器chronyc sources输出分析其他命令 常见时区 为什么会出现Chrony? 由于IT系统中,准确的计时非常重要&am…

迭代新品 | 第四代可燃气体监测仪,守护燃气管网安全快人一步

城市地下市政基础设施是城市有序运行的生命线,事关城市安全、健康运行和高质量发展。近年来,我国燃气事故多发、频发。2020、2021、2022 年分别发生燃气事故668、1140 起、802 起,造成92、106、66 人死亡,560、763、487 人受伤。尤…

「C++」map和set的使用介绍

💻文章目录 📄前言前置知识关联式容器键值对map和set的底层结构 setset的构造函数set 的修改操作set的使用 mapmap的函数map的使用 multiset 和 multimap📓总结 📄前言 stl容器分为两类,分别是序列容器和关联式容器&am…

Java 高等院校分析与推荐系统

1)项目简介 随着我国高等教育的大众化,高校毕业生就业碰到了前所未有的压力,高校学生就业问题开始进入相关研究者们的视野。在高校学生供给忽然急剧增加的同时,我国高校大学生的就业机制也在发生着深刻的变化,作为就业…

操作系统:进程(一)

进程的基本概念 一般的解释是:进程是程序的一个执行实例,是正在执行的程序。我们写的程序编译后是一段二进制的文件。启动的时候加载到系统里面执行,就是以进程的形式执行。也就是说,我们编译后的可执行程序是一个静态的概念&…

C++ STL之string初始

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

JSP基本表单和Request对象使用例子

表单的jsp&#xff1b; <%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><titl…

golang学习笔记——接口interfaces

文章目录 Go 语言接口例子空接口空接口的定义空接口的应用空接口作为函数的参数空接口作为map的值 类型断言接口值 类型断言例子001类型断言例子002 Go 语言接口 接口&#xff08;interface&#xff09;定义了一个对象的行为规范&#xff0c;只定义规范不实现&#xff0c;由具…

数据库大事记

数据库分类分类方法为&#xff1a;按数据模型分类、按业务类型分类、按部署方式分类、按存储介质分类。 按数据模型分类 按业务类型分类 按部署方式分类 按存储介质分类 喜欢点赞收藏&#xff0c;下期再见。

【Redux】Redux 基本使用

1. Redux 快速上手 Redux 是 React 最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以独立于框架运行。 <button id"decrement">-</button> <span id"count">0</span> <…

多线程Thread(初阶一:认识线程)

目录 一、引用线程的原因 二、线程的概念 三、进程和线程的区别 四、多线程编程 一、引用线程的原因 多任务操作系统&#xff0c;希望系统能同时运行多个任务。所以会涉及到进程&#xff0c;需要对进程进行管理、调度等。 而单任务操作系统&#xff0c;就完全不涉及到进程…

YOLOv8-Seg改进策略:全新的聚焦式线性注意力模块Focused Linear Attention | ICCV2023

🚀🚀🚀本文改进:深入分析了现有线性注意力方法的缺陷,并提出了一个全新的聚焦的线性注意力模块(Focused Linear Attention),同时具有高效性和很强的模型表达能力。 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,…

深度学习系列53:mmdetection上手

1. 安装 使用openmim安装&#xff1a; pip install -U openmim mim install "mmengine>0.7.0" mim install "mmcv>2.0.0rc4"2. 测试案例 下载代码和模型&#xff1a; git clone https://github.com/open-mmlab/mmdetection.git mkdir ./checkpoi…

2023年【熔化焊接与热切割】考试试卷及熔化焊接与热切割试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试试卷考前必练&#xff01;安全生产模拟考试一点通每个月更新熔化焊接与热切割试题及解析题目及答案&#xff01;多做几遍&#xff0c;其实通过熔化焊接与热切割模拟考试很简单。 1、【单选题】 对…

React+后端实现导出Excle表格的功能

最近在做一个基于Reactantd前端框架的Excel导出功能&#xff0c;我主要在后端做了处理&#xff0c;这个功能完成后&#xff0c;便总结成一篇技术分享文章&#xff0c;感兴趣的小伙伴可以参考该分享来做导出excle表格功能&#xff0c;以下步骤同样适用于vue框架&#xff0c;或者…

“轻松实现文件夹批量重命名:使用顺序编号批量改名“

你是否曾经遇到过需要批量重命名文件夹&#xff0c;却因为繁琐的手动操作而感到困扰&#xff1f;现在&#xff0c;我们为你带来了一款全新的工具——轻松实现文件夹批量重命名&#xff0c;使用顺序编号批量改名。这款工具将帮助你轻松解决文件夹重命名的问题&#xff0c;提高工…

SpringSecurity5|12.实现RememberMe 及 实现原理分析

security/day08 这个功能大家还熟悉么&#xff1f;我们在登录网站的时候&#xff0c;除了让你输入用户名和密码&#xff0c;还会有个勾选框&#xff1a; 记住我&#xff01;&#xff01;&#xff01;不是让大家记住我哈。 值得一提的是&#xff0c;Spring Security 也提供了这个…

2023年汉字小达人市级比赛在线模拟题更新:40分钟150题完整对标

今天是2023年11月19日&#xff0c;距离11月30日的汉字小达人市级比赛还有11天。许多孩子正在利用难得的周末抓紧练习和备赛。 结合一些孩子的反馈和需求&#xff0c;我把150题的在线模拟题做了更新&#xff0c;增加了前面的个人信息填写的部分&#xff0c;并且把整个试卷的完成…

python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)

省流建议 本文针对以下需求&#xff1a; 想自动化标注一些目标不再想使用yolo想在目标检测/语意分割有所建树计算机视觉项目想玩一玩大模型了解自动化工具了解最前沿模型自定义目标P图替换… 确定好需求&#xff0c;那么我们发车&#xff01; 实现功能与结果 该模型将首先…

python——第九天

今日目标&#xff1a; 偏函数 递归 字符串对象 切片 常见排序和查找 偏函数&#xff1a; python中存在一种函数的特殊使用&#xff0c;称为偏函数 如果在调用某个函数时&#xff0c;恰好某一个或者&#xff0c;某一些参数都是一个固定值&#xff08;正好不是默认值&#xff09;…
最新文章