0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

免费测评 | 英飞凌XMC7200系列MCU在RT-Thread上的移植经验大公开!

jf_12300286 2024-07-11 08:36 次阅读

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的移植经验:

89bc8d0c-3f1d-11ef-a655-92fbcf53809c.png

XMC7200测评活动


1. 前期准备

1.1 英飞凌烧录工具——Cypress programmer

我们把代码编译好后使用Cypress programmer进行烧录。

官方下载链接:Cypress Programmer - Infineon Developer Center

1.2 英飞凌官方IDE——ModusToolbox

我们会使用到官方的IDE去获取所需要的文件,如驱动文件、启动文件、编译脚本等等。

官方下载链接:ModusToolbox - Infineon Developer Center

1.3 Keil_MDK && ENV环境

ENV环境会帮我们生成Keil工程,然后使用Keil进行代码编写。(如果是用主线代码,需要下载ENV2.0)

使用参考:RT-Thread之ENV工具_rt-thread env-CSDN博客

ENV2.0下载教程【重要通知】ENV-Windows v2.0.0版本发布

2. 移植准备

2.1 了解RT-Thread目录结构

在大多数的BSP中,都会包含一下文件:

文件名称

文件说明

.settings

用于生成RT-Thread Studio工程

applications

存放用户代码,通常会有一个main.c文件

board

里面通常会放有linker_scripts(各类编译器的编译脚本)、board.c/.h(板级相关的初始化和配置)

drivers

设备驱动代码,里面存放各种外设的驱动,例如GPIO、UART等等,一般会放在BSP上一级目录下的libraries下的HAL_Drivers里面

figures

开发板照片以及.md说明里用到的图片

.config, rtconfig.h, Kconfig

Kconfig配置系统相关文件(在本篇中不涉及语法使用教程)

rtconfig.py, SConscript, SConstruct

scons构建系统相关文件(在本篇中不涉及语法使用教程)

template.uvprojx, template.uvoptx

keil模板工程

project.uvprojx, project.uvoptx

keil工程(由模板工程生成得来)

template.eww, template.ewp

iar模板工程

project.eww, project.ewp

iar工程

在了解了目录以后我们就能根据所需要的文件一步一步完成BSP了。

2.2 使用ModusToolBox生成示例工程

2.2.1 生成工程

接下来我们使用官方的IDE生成一个示例工程获取其驱动库、启动文件、链接脚本等。

89f11a36-3f1d-11ef-a655-92fbcf53809c.png

在弹出的窗口中选择我们本次用到的芯片类型然后点击Next。

89fd2290-3f1d-11ef-a655-92fbcf53809c.png

然后选择‘Hello World’工程,选择好保存位置后就可以创建了。

8a07d50a-3f1d-11ef-a655-92fbcf53809c.png

2.2.2 生成文件

2.2.2.1 mtb_shared文件

当我们的工程创建好以后,我们会使用到这两个文件

8a2e5bb2-3f1d-11ef-a655-92fbcf53809c.png

在mtb_shared里面存放着:

8a38eba4-3f1d-11ef-a655-92fbcf53809c.png

我们会使用到下面的文件

文件名称

文件说明

cat1cm0p

包含了与基于 Cortex-M0+ 核心的微控制器相关的代码和资源,低功耗的控制代码

cmsis

ARM的一套标准化软件接口

core-lib

核心库,定义一些参数、类型的值

mtb-hal-cat1

硬件抽象层库

mtb-pdl-cat1

硬件驱动层库

retarget-io

包含重定向输入输出的文件

2.2.2.2 工程下文件

8a4d0648-3f1d-11ef-a655-92fbcf53809c.png

在生成的示例工程中,bsps目录下会存放着相应开发板的相关链接脚本以、包含板载初始化的文件以及启动文件,这个我们待会也会使用到。

3. 文件移植

我们在同系列下新建一个文件夹。

8a74d6be-3f1d-11ef-a655-92fbcf53809c.png

3.1 applications文件

在这个文件夹中我们存放的是用户代码,一般初始的时候只有一个main.c和一个Sconscript。可以去其它系列复制一个applications文件夹过来放在底下。

3.2 board文件

在这个文件中存放的是一些编译器链接脚本以及板载初始化用到的文件。

3.2.1 链接脚本

链接脚本我们去到示例工程下找:

8a931fe8-3f1d-11ef-a655-92fbcf53809c.png

把其修改好名称后放在board下的linker_scripts文件夹下。

8aae1898-3f1d-11ef-a655-92fbcf53809c.png

3.2.2 board.c/.h文件

在board.c/.h文件中,一般会存放一些在板载初始化阶段要使用的函数,每个厂商需要的初始化流程不同,会有不一样内容。在本次移植中,就需要加入cybsp_init()功能,这个函数可以帮我们配置系统时钟电源管理和资源管理等。这个可以去同系列里面复制粘贴过来就好。

8ad73f8e-3f1d-11ef-a655-92fbcf53809c.png

然后就是要修改board.h里面的SRAM大小跟起始地址,这个需要查看芯片的数据书册。

8af68196-3f1d-11ef-a655-92fbcf53809c.png

3.2.3 Scons&&KConfig

还有就是Scons跟KConfig文件,这个主要是涉及编译跟配置的,这个复制过来以后需要做一些修改。

8b03289c-3f1d-11ef-a655-92fbcf53809c.png

首先就是需要指定一下不同编译器实现底层系统库函数,这个源文件在mtb_shared目录下。

8b0749f4-3f1d-11ef-a655-92fbcf53809c.png

然后是各种参与编译的宏,这个需要使用到ModusToolBox编译示例工程,然后在生成的compile_commands.json里寻找以-D开头的参数,这些都是参与编译的宏。然后把这些宏加入到Sconscript里面。

8b296d22-3f1d-11ef-a655-92fbcf53809c.png8b346434-3f1d-11ef-a655-92fbcf53809c.png

然后是Kconfig的,在这里配置我们需要使用的外设选项,本次移植只需要使用到串口跟GPIO,所以板载外设配置里面就只有这里两项配置。在复制文件过来的基础上进行增删改就可以了。在硬件驱动配置这里我们仿照其它系列进行修改。同时也要在libraries下的Konfig进行修改(后面有提及)。

8b548cc8-3f1d-11ef-a655-92fbcf53809c.png

3.3 lib文件

我们需要把刚刚示例工程下生成bsps目录下的TARGET_APP_KIT_XMC72_EVK文件复制过来,同时也要编写一个Sconscript,在这里我们需要使用到里面的配置、启动文件。

8b7ae42c-3f1d-11ef-a655-92fbcf53809c.png8b917f3e-3f1d-11ef-a655-92fbcf53809c.png

3.4 MDK工程

先从其它工程里面把有关MDK的工程文件复制过来。

8bc0fd36-3f1d-11ef-a655-92fbcf53809c.png

然后修改模板工程里面的芯片类型。如果没有显示的话需要先下载一下英飞凌的Pack包。

可以通过Keil内置的下载器下载,也可通过链接路径下载

8be12d22-3f1d-11ef-a655-92fbcf53809c.png8c03dfe8-3f1d-11ef-a655-92fbcf53809c.png

下载路径: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。

8c17ac08-3f1d-11ef-a655-92fbcf53809c.png

也可以用ENV进入到menuconfig里面去修改:

8c226ab2-3f1d-11ef-a655-92fbcf53809c.png

3.6 SConscript、SConsturct

这类型的文件主要与编译相关。从其它BSP复制过来后,SConscript文件一般不需要进行修改,SConstruct文件要看自己的需要修改一下文件路径。

如这里将英飞凌驱动库做成了软件包的形式,就需要重新指定一下路径,大家根据自己的需求修改。

8c467204-3f1d-11ef-a655-92fbcf53809c.png

3.7 Libraries修改

3.7.1 修改Kconfig

在libraries目录下的Kconfig里,我们需要添加上我们的板子信息,仿照其它系列就好了。

8c4f680a-3f1d-11ef-a655-92fbcf53809c.png

3.7.2 修改HAL_Drivers文件

在驱动库中,有些地方还需要我们进行调整。

在uart_config.h里,修改串口的引脚。

8c709caa-3f1d-11ef-a655-92fbcf53809c.png

不同于已适配的英飞凌Psoc6系列,中断配置会有所不同,这里也需要修改。如果是相同系列同样配置的话无需操作。

8c9442c2-3f1d-11ef-a655-92fbcf53809c.png8caa2204-3f1d-11ef-a655-92fbcf53809c.png

4. 做成软件包

移植工作完成后,我发现英飞凌自身的驱动库体积比较大,所以将其整合了一下,做成了软件包的形式。同时也将其它系列也修改为依赖软件包的形式,大家在使用的时候记得先进入ENV中使用pkgs --update的命令将软件包下载下来。如果是其它系列的则可以参考其它文章将生成的驱动库放在合适的位置。

8cc2ba8a-3f1d-11ef-a655-92fbcf53809c.png

5. 使用

到这里就适配完成了,接下来就是进行编译与下载。

5.1 生成MDK工程

待软件包安装好后,在ENV环境下输入SCons --target==MDK5命令,ENV会自动生成MDK5工程。

8cd9fdee-3f1d-11ef-a655-92fbcf53809c.png8cf25ac4-3f1d-11ef-a655-92fbcf53809c.png

然后进入MDK中进行编译

8d212570-3f1d-11ef-a655-92fbcf53809c.png

(可以看到,刚刚所写的编译宏会显示在这里)

8d42aac4-3f1d-11ef-a655-92fbcf53809c.png

这里记得勾选上生成HEX文件用于待会的烧录

8d4ce07a-3f1d-11ef-a655-92fbcf53809c.png

5.2 烧录

打开官方的烧录软件Cypress。选择好对应的板子。

8d66f67c-3f1d-11ef-a655-92fbcf53809c.png

选择刚刚编译好的.hex然后点击连接。

8d8c346e-3f1d-11ef-a655-92fbcf53809c.png

然后点击这个按钮进行下载即可

8d98d8e0-3f1d-11ef-a655-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英飞凌
    +关注

    关注

    66

    文章

    2078

    浏览量

    137647
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16597

    浏览量

    347152
  • RT-Thread
    +关注

    关注

    31

    文章

    1234

    浏览量

    39330
收藏 人收藏

    评论

    相关推荐

    6月6日杭州站RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    嵌入式软件工程师郭占鑫老师为您讲解有关技术知识和实践经验。通过本次workshop能深入理解RT-Thread专业版与混合部署的潜力,RK3568平台提升系统实时
    的头像 发表于 05-28 08:35 295次阅读
    6月6日杭州站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    XMC7200是否支持从外部QSPI/OctalSPI闪存到XMC7200内部SRAM的M-DMA传输?

    我的团队正在进行一项关于项目中使用 XMC7200 的可行性研究。 我们的一个要求是从外部闪存向 XMC7200 内部 SRAM 进行 DMA 传输。 我们考虑使用的外部闪存是 QSPI 或
    发表于 05-27 08:26

    XMC7200 ETH1可以使用RMII吗?

    大家好, 我正试图使用 XMC7200 的设备设计一个以太网连接器。 我想使用 RMII - 根据手册,我需要以下信号: 另外,我不确定 ETHx_RXD 的手册写的行数是 4
    发表于 05-20 08:21

    【上海】5月25日-基于恩智浦MCX N系列MCU结合RT-Thread的应用与实践 线下培训

    5月25号,RT-Thread将携手恩智浦共同举办基于恩智浦MCXN系列MCU结合RT-Thread的应用与实践线下培训。我们将为大家带来恩智浦MCXN
    的头像 发表于 05-13 18:19 333次阅读
    【上海】5月25日-基于恩智浦MCX N<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>结合<b class='flag-5'>RT-Thread</b>的应用与实践 线下培训

    4月25日北京站RT-Thread线下workshop,探索RT-Thread混合部署新模式

    嵌入式软件工程师郭占鑫老师为您讲解有关技术知识和实践经验。通过本次workshop能深入理解RT-Thread专业版与混合部署的潜力,RK3568平台提升系统
    的头像 发表于 04-16 08:35 299次阅读
    4月25日北京站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    嵌入式软件工程师农晓明老师为您讲解有关技术知识和实践经验。通过本次workshop能深入理解RT-Thread专业版与混合部署的潜力,RK3568平台提升系统实
    的头像 发表于 03-27 08:34 369次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    将应用程序从XMC7200开发套件移植XMC7100芯片的指南/时钟问题求解

    我正在为 XMC7100D-F176K4160AA开发一个应用程序。 我首先开发了这个应用程序,然后 XMC7200 开发套件运行它。 效果很好,一切都很顺利。 但是,我们刚刚收到
    发表于 01-30 06:04

    如何在DAVE IDE中使用XMC7200

    能否 DAVE IDE 中为 XMC 7200 EVK KIT 构建应用程序。我尝试打开一个项目但它最多只能显示 XMC48000。如何在 DAVE IDE 中使用
    发表于 01-26 06:32

    xmc7200如何将KEIL的算法库移植到MTB?

    你好我正在使用xmc7200芯片,我想将 KEIL 算法库移植到MTB使用,我应该如何操作?最好的问候
    发表于 01-25 06:08

    【PSoC™62 for RT-ThreadRT-Thread携手英飞凌举办嵌入式网络应用开发沙龙,圆满落幕!

    2023年12月09日,深圳,全球半导体解决方案的领导者英飞凌科技(中国)有限公司(以下简称:英飞凌)与上海睿赛德电子科技有限公司(RT-Thread深圳塘朗联合举办了“嵌入式网络
    的头像 发表于 12-14 16:25 452次阅读
    【PSoC™62 for <b class='flag-5'>RT-Thread</b>】<b class='flag-5'>RT-Thread</b>携手<b class='flag-5'>英飞凌</b>举办嵌入式网络应用开发沙龙,圆满落幕!

    BL808 RT-Thread Wi-Fi驱动适配

    BL808 WiFi 属于 SOC 单芯片型无线 MCU,片上集成 WiFi 功能,移植 RT-Thread 过程中,需要使用 RT-Thread wlan 框架。
    的头像 发表于 12-04 11:38 643次阅读

    i.MX RT1170:VGLite移植RT-Thread Nano过程讲解(下)

    上篇介绍了如何移植 RT-Thread Nano 内核与 Finsh 控制台到 RT1170。本篇继续介绍如何将 NXP 官方的 VGLite API 移植
    的头像 发表于 11-09 11:22 730次阅读

    i.MX RT1170:VGLite移植RT-Thread Nano过程讲解()

    RT-Thread 是国人自主研发的开源实时操作系统(RTOS),RT-Thread Nano 是极简版的硬实时内核,内存占用小,移植简单。VGLite 是 NXP 提供的轻量级 2D 图形 API,基于 FreeRTOS 实现
    的头像 发表于 11-09 11:20 2055次阅读
    i.MX <b class='flag-5'>RT</b>1170:VGLite<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> Nano过程讲解(<b class='flag-5'>上</b>)

    RT-ThreadLan8720a和 lwip基础移植ntp流程

    开发环境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2。以RT-Thread中Lan8720和lwip协议栈的使用文章创建的工程为基础。
    的头像 发表于 10-12 16:59 1411次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>在</b>Lan8720a和 lwip基础<b class='flag-5'>上</b><b class='flag-5'>移植</b>ntp流程

    RT-Thread v5.0.2 发布

    RT-Thread 代码仓库地址: ●  https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本发布日志详情: ●  htt
    的头像 发表于 10-10 18:45 1170次阅读
    <b class='flag-5'>RT-Thread</b> v5.0.2 发布