Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RTThreaed
英飞凌Infineon
英飞凌XMC7200
免费测评 | 英飞凌XMC7200系列MCU在RT-Thread上的移植经验大公开!
发布于 2024-07-11 14:17:20 浏览:755
订阅该版
[tocm] XMC7200是英飞凌推出的一款32位双核CPU子系统(ARM Cortex-M7 和 ARM Cortex-M0)的开发板。该XMC7200D专为工业应用而设计,是一款真正的可编程嵌入式片上系统,集成了多达两个 350MHz Arm® Cortex-M7® 作为主应用处理器,一个 100MHz Arm® Cortex-M0®+ 。 RT-Thread已率先支持英飞凌XMC7200系列,本文将介绍RT-Thread基于开发板xmc7200-kit_xmc7200_evk的移植经验: ![1.png](https://oss-club.rt-thread.org/uploads/20240711/bb7ada3adfba502853d015253d283f15.png.webp) XMC7200测评活动 ![2.png](https://oss-club.rt-thread.org/uploads/20240711/e952079458334120de6fbacd88bd474d.png) https://jinshuju.net/f/drFoJU 复制链接/扫描二维码报名活动 ### 1. 前期准备 **1.1 英飞凌烧录工具——Cypress programmer** 我们把代码编译好后使用Cypress programmer进行烧录。 官方下载链接:Cypress Programmer - Infineon Developer Center (https://softwaretools.infineon.com/tools/com.ifx.tb.tool.cypressprogrammer) **1.2 英飞凌官方IDE——ModusToolbox** 我们会使用到官方的IDE去获取所需要的文件,如驱动文件、启动文件、编译脚本等等。 官方下载链接:ModusToolbox™ - Infineon Developer Center (https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolboxsetup) **1.3 Keil_MDK && ENV环境** ENV环境会帮我们生成Keil工程,然后使用Keil进行代码编写。(如果是用主线代码,需要下载ENV2.0) 使用参考:RT-Thread之ENV工具_rt-thread env-CSDN博客 (https://blog.csdn.net/qq_36413982/article/details/94314167) ENV2.0下载教程:【重要通知】ENV-Windows v2.0.0版本发布 (qq.com) (https://mp.weixin.qq.com/s/PsY120YRac9xNhYBkc1YZw) ### 2. 移植准备 **2.1 了解RT-Thread目录结构** 在大多数的BSP中,都会包含一下文件: ![5.jpg](https://oss-club.rt-thread.org/uploads/20240711/1a07231e81af122f1fe0bc7d96da4514.jpg.webp) 在了解了目录以后我们就能根据所需要的文件一步一步完成BSP了。 **2.2 使用ModusToolBox生成示例工程** **2.2.1 生成工程** 接下来我们使用官方的IDE生成一个示例工程获取其驱动库、启动文件、链接脚本等。 ![6.png](https://oss-club.rt-thread.org/uploads/20240711/daa59a9bbe740b792a5a1d171fd5982d.png.webp) 在弹出的窗口中选择我们本次用到的芯片类型然后点击Next。 ![7.png](https://oss-club.rt-thread.org/uploads/20240711/e513bccfc138dd363a339fbf4bde4d14.png.webp) 然后选择‘Hello World’工程,选择好保存位置后就可以创建了。 ![8.png](https://oss-club.rt-thread.org/uploads/20240711/304f742c5b0fa7eb2d761750396ef3da.png.webp) **2.2.2 生成文件** **2.2.2.1 mtb_shared文件** 当我们的工程创建好以后,我们会使用到这两个文件 ![9.png](https://oss-club.rt-thread.org/uploads/20240711/83290b86fdeef4da75128a2cb4bf1fd7.png) 在mtb_shared里面存放着: ![10.png](https://oss-club.rt-thread.org/uploads/20240711/7bc99df80e9df7b8b8bf2bccfcbaa620.png) 我们会使用到下面的文件 ![11.jpg](https://oss-club.rt-thread.org/uploads/20240711/58f8d17ee23ee19f0db3344635b112ea.jpg) **2.2.2.2 工程下文件** ![12.png](https://oss-club.rt-thread.org/uploads/20240711/b56dfa2b422688ffa36cb95dc326182d.png.webp) 在生成的示例工程中,bsps目录下会存放着相应开发板的相关链接脚本以、包含板载初始化的文件以及启动文件,这个我们待会也会使用到。 ### 3. 文件移植 我们在同系列下新建一个文件夹。 ![13.png](https://oss-club.rt-thread.org/uploads/20240711/1338ad8f3fb08fe966ef88570d78425b.png.webp) **3.1 applications文件** 在这个文件夹中我们存放的是用户代码,一般初始的时候只有一个main.c和一个Sconscript。可以去其它系列复制一个applications文件夹过来放在底下。 **3.2 board文件** 在这个文件中存放的是一些编译器链接脚本以及板载初始化用到的文件。 **3.2.1 链接脚本** 链接脚本我们去到示例工程下找: ![14.png](https://oss-club.rt-thread.org/uploads/20240711/7b634d036d09bd406d71b4950e54578b.png.webp) 把其修改好名称后放在board下的linker_scripts文件夹下 ![15.png](https://oss-club.rt-thread.org/uploads/20240711/9bf20bfc50017d72d07c3f6d5656e51c.png) **3.2.2 board.c/.h文件** 在board.c/.h文件中,一般会存放一些在板载初始化阶段要使用的函数,每个厂商需要的初始化流程不同,会有不一样内容。在本次移植中,就需要加入cybsp_init()功能,这个函数可以帮我们配置系统时钟、电源管理和资源管理等。这个可以去同系列里面复制粘贴过来就好。 ![16.png](https://oss-club.rt-thread.org/uploads/20240711/96ad952a86e7c263e376a9bf9fa0f450.png.webp) 然后就是要修改board.h里面的SRAM大小跟起始地址,这个需要查看芯片的数据书册。 ![17.png](https://oss-club.rt-thread.org/uploads/20240711/5beceef2e15fd7d195bf386cef192b29.png.webp) **3.2.3 Scons&&KConfig** 还有就是Scons跟KConfig文件,这个主要是涉及编译跟配置的,这个复制过来以后需要做一些修改。 ![18.png](https://oss-club.rt-thread.org/uploads/20240711/6753087939bb9813893924f11ae682d0.png.webp) 首先就是需要指定一下不同编译器实现底层系统库函数,这个源文件在mtb_shared目录下。 ![19.png](https://oss-club.rt-thread.org/uploads/20240711/5d3fd67f055ab981ba9c741a9e42b2f4.png.webp) 然后是各种参与编译的宏,这个需要使用到ModusToolBox编译示例工程,然后在生成的compile_commands.json里寻找以-D开头的参数,这些都是参与编译的宏。然后把这些宏加入到Sconscript里面。 ![20.png](https://oss-club.rt-thread.org/uploads/20240711/59a37de33e4fdaa79bd52d58231068e9.png.webp) ![21.png](https://oss-club.rt-thread.org/uploads/20240711/a031c77f5c6bbc63b92f8670a8e39860.png.webp) 然后是Kconfig的,在这里配置我们需要使用的外设选项,本次移植只需要使用到串口跟GPIO,所以板载外设配置里面就只有这里两项配置。在复制文件过来的基础上进行增删改就可以了。在硬件驱动配置这里我们仿照其它系列进行修改。同时也要在libraries下的Konfig进行修改(后面有提及)。 ![22.png](https://oss-club.rt-thread.org/uploads/20240711/8e5e439070b650ae76dd81744a2118ea.png.webp) **3.3 lib文件** 我们需要把刚刚示例工程下生成bsps目录下的TARGET_APP_KIT_XMC72_EVK文件复制过来,同时也要编写一个Sconscript,在这里我们需要使用到里面的配置、启动文件。 ![23.png](https://oss-club.rt-thread.org/uploads/20240711/208d75e80c65cf8f1469ed6d2808d4a2.png) ![24.png](https://oss-club.rt-thread.org/uploads/20240711/7e39374284eba41583756e90a14255cf.png.webp) **3.4 MDK工程** 先从其它工程里面把有关MDK的工程文件复制过来。 ![25.png](https://oss-club.rt-thread.org/uploads/20240711/454d28a3608813350ae6e9aa540ba6e2.png.webp) 然后修改模板工程里面的芯片类型。如果没有显示的话需要先下载一下英飞凌的Pack包。 可以通过Keil内置的下载器下载,也可通过链接路径下载 ![26.png](https://oss-club.rt-thread.org/uploads/20240711/f41d5cb8ad3070e70b7819ddecef09a2.png.webp) ![27.png](https://oss-club.rt-thread.org/uploads/20240711/996a66110bc755a5b4acc28cb47962dc.png.webp) 下载路径:https://raw.githubusercontent.com/Infineon/cmsis-packs/master/CAT1C_DFP/Infineon.CAT1C_DFP.1.0.0.pack **3.5 rtconfig.h/.py、Konfig、.config** 这几个文件是负责硬件配置相关的,我们复制过来后可以根据需求直接修改.config里面的设置,然后用ENV进入menuconfig保存一下更新rtconfig.h。例如这里需要把控制台串口设置为串口3。 ![28.png](https://oss-club.rt-thread.org/uploads/20240711/3b14b6f5bdf0b2cecf7abf1e1eaaaf21.png.webp) 也可以用ENV进入到menuconfig里面去修改: ![29.png](https://oss-club.rt-thread.org/uploads/20240711/9ac8a2f450208643ca158ec3ec48429e.png) **3.6 SConscript、SConsturct** 这类型的文件主要与编译相关。从其它BSP复制过来后,SConscript文件一般不需要进行修改,SConstruct文件要看自己的需要修改一下文件路径。 如这里将英飞凌驱动库做成了软件包的形式,就需要重新指定一下路径,大家根据自己的需求修改。 ![30.png](https://oss-club.rt-thread.org/uploads/20240711/8338f1ff3e30edf44b80b031c18c3ffd.png.webp) ** 3.7 Libraries修改** **3.7.1 修改Kconfig** 在libraries目录下的Kconfig里,我们需要添加上我们的板子信息,仿照其它系列就好了。 ![31.png](https://oss-club.rt-thread.org/uploads/20240711/f386d9c819f39d752202195650b484e5.png) **3.7.2 修改HAL_Drivers文件** 在驱动库中,有些地方还需要我们进行调整。 在uart_config.h里,修改串口的引脚。 ![32.png](https://oss-club.rt-thread.org/uploads/20240711/2b411c5e2a7f57c7be16fe52c6c5cdc2.png.webp) 不同于已适配的英飞凌Psoc6系列,中断配置会有所不同,这里也需要修改。如果是相同系列同样配置的话无需操作。 ![33.png](https://oss-club.rt-thread.org/uploads/20240711/7b1bbed7dd566a56e76c2958f8e2bdb5.png.webp) ![34.png](https://oss-club.rt-thread.org/uploads/20240711/8262f028ee24a7374ff33c851572fce6.png.webp) ### 4. 做成软件包 移植工作完成后,我发现英飞凌自身的驱动库体积比较大,所以将其整合了一下,做成了软件包的形式。同时也将其它系列也修改为依赖软件包的形式,大家在使用的时候记得先进入ENV中使用pkgs --update的命令将软件包下载下来。如果是其它系列的则可以参考其它文章将生成的驱动库放在合适的位置。 ![35.png](https://oss-club.rt-thread.org/uploads/20240711/8b0ceda6dc99b637e3379e1c1b460394.png.webp) ### 5. 使用 到这里就适配完成了,接下来就是进行编译与下载。 **5.1 生成MDK工程** 待软件包安装好后,在ENV环境下输入SCons --target==MDK5命令,ENV会自动生成MDK5工程。 ![36.png](https://oss-club.rt-thread.org/uploads/20240711/cec85165285fdaa4310000278d085587.png) ![37.png](https://oss-club.rt-thread.org/uploads/20240711/70e4d64b40e17ea80403267956d943dd.png.webp) 然后进入MDK中进行编译 ![38.png](https://oss-club.rt-thread.org/uploads/20240711/2f1dd74c7d0dfa6c48ad9b6a87390d38.png.webp) (可以看到,刚刚所写的编译宏会显示在这里) ![39.png](https://oss-club.rt-thread.org/uploads/20240711/1bb47ce5716b4129b56ba55e4127ea9a.png) 这里记得勾选上生成HEX文件用于待会的烧录 ![40.png](https://oss-club.rt-thread.org/uploads/20240711/acfe00e823c36c64e1d436ec2ada6d44.png) **5.2 烧录** 打开官方的烧录软件Cypress。选择好对应的板子。 ![41.png](https://oss-club.rt-thread.org/uploads/20240711/77ed61f8739ec743b07fab3b92ee5bc0.png.webp) 选择刚刚编译好的.hex然后点击连接。 ![42.png](https://oss-club.rt-thread.org/uploads/20240711/268fd1a0f029a7946d1d9d56b1eb4c29.png.webp) 然后点击这个按钮进行下载即可 ![43.png](https://oss-club.rt-thread.org/uploads/20240711/a0d9ee0819992eaa12f1476d3ede5062.png.webp) ——————End——————
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RT-Thread小师弟
微信:rtthread2020
文章
292
回答
171
被采纳
33
关注TA
发私信
相关文章
1
RTThread支持loongson2k1000了么?
2
终端出现The aht10 is under an abnormal status
3
为什么系统一直在重启?
4
RT-Thread支持英飞凌芯片吗?
5
RT-Thread系统在英飞凌TC364芯片上仅能在 Cpu 0 运行
6
请问版主RTT有没有移植到infineon的XC2000系列MCU上
7
关于RTT对于infineon 的Aurix系列的支持。
8
RT-AK使用,插件如何构建
9
PSOC6 BSP工程导入不成功
10
PSoCTM 62 初始化串口后进入休眠,功耗增加。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部