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

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

3天内不再提示

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

RT-Thread官方账号 ? 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

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

    关注

    68

    文章

    2373

    浏览量

    141023
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18108

    浏览量

    371697
  • RT-Thread
    +关注

    关注

    32

    文章

    1444

    浏览量

    42372
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread Nano到MCUXpresso IDE为主,移植的代码可以nxpic.org.cn论坛搜索到。
    的头像 发表于 08-21 09:49 ?1462次阅读
    恩智浦<b class='flag-5'>MCU</b>教程 基于MCUXpresso和FRDM-MCXA346的<b class='flag-5'>RT-Thread</b> Nano<b class='flag-5'>移植</b>

    如何移植 RT-Thread Nano 并创建 2 个线程?

    基于 BSP 中的 GPIO_OutputInput 演示,展示了如何移植 RT-Thread Nano 并创建 2 个线程。
    发表于 08-19 07:45

    RT-Thread联合瑞萨发起移植挑战赛,邀您共创开源生态!| 社区活动

    为丰富嵌入式开源生态,推动开源RT-ThreadRTOS更多硬件平台的落地应用,RT-Thread团队携手全球领先的半导体解决方案商瑞萨电子,正式启动移植挑战赛!本次活动将针对瑞萨8
    的头像 发表于 08-08 10:36 ?435次阅读
    <b class='flag-5'>RT-Thread</b>联合瑞萨发起<b class='flag-5'>移植</b>挑战赛,邀您共创开源生态!| 社区活动

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为、下两篇,将手把手教您移植。上篇对RT-ThreadNano内
    的头像 发表于 07-17 14:40 ?2395次阅读
    <b class='flag-5'>RT-Thread</b> Nano硬核<b class='flag-5'>移植</b>指南:手把手实现VGLite图形驱动适配 | 技术集结

    RT-Thread BSP全面支持玄铁全系列RISC-V 处理器 | 技术集结

    RT-Thread标准版已全面适配玄铁E、R、C系列内核,并在C906内核支持RT-Smart微内核操作系统。本文将以E906运行RT-Thre
    的头像 发表于 07-03 18:03 ?1865次阅读
    <b class='flag-5'>RT-Thread</b> BSP全面支持玄铁全<b class='flag-5'>系列</b>RISC-V 处理器 | 技术集结

    揭秘RT-Thread的AUTOSAR CP系统

    本文探讨了RT-Thread与AUTOSARCP的融合,解决车载ECU开发中实时性、安全性与灵活性的平衡问题。通过分层安全内核(rt-safetyos/autoos)和工具链整合,兼容AUTOSAR
    的头像 发表于 06-23 20:22 ?2468次阅读
    揭秘<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>的AUTOSAR CP系统

    RT-Thread 如何实现 SLAAC?

    大佬们,本菜鸟有一些网络的问题需要帮助: RT-Thread 如何实现 SLAAC(无状态地址自动分配),给连接到我的板子的设备分配 IPv6 地址; RT-Thread 如何发
    发表于 05-27 07:21

    如何将RT-Thread移植到NXP MCUXPressoIDE

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有
    的头像 发表于 02-13 10:37 ?2065次阅读
    如何将<b class='flag-5'>RT-Thread</b><b class='flag-5'>移植</b>到NXP MCUXPressoIDE<b class='flag-5'>上</b>

    Deepseek单片机?RT-Thread跑通大语言模型

    前言单片机也能聊天?RT-Thread跑通大语言模型RT-Thread论坛忽然看到了单片机和大模型对话的文章,想着春节期间看到大语言模
    的头像 发表于 02-07 18:59 ?1613次阅读
    Deepseek<b class='flag-5'>上</b>单片机?<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>跑通大语言模型

    RT-ThreadCAN实践

    开箱测试RT-Thread官方已完成了对英飞凌XMC7200EVK的移植,通过shell可以看到做好了uart3的console。本文将介绍如何进行
    的头像 发表于 11-13 01:03 ?2311次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>CAN实践

    基于NXP MCXA153 MCU实现RT-Thread的MTD NOR Flash驱动

    嵌入式系统中,片Flash存储器是一个关键组件,用于存储程序代码和关键数据。本文将详细介绍如何在NXPMCXA153 MCU实现RT-Thre
    的头像 发表于 11-09 14:00 ?1295次阅读
    基于NXP MCXA153 <b class='flag-5'>MCU</b>实现<b class='flag-5'>RT-Thread</b>的MTD NOR Flash驱动

    Nordic-RT-Thread5.1.0移植笔记

    Nordic-RT-Thread5.1.0移植笔记
    的头像 发表于 10-16 08:09 ?1476次阅读
    Nordic-<b class='flag-5'>RT-Thread</b>5.1.0<b class='flag-5'>移植</b>笔记

    如何在RT-thread studio的裸机例程移植freertos?

    如何在RT-thread studio的裸机例程移植freertos
    发表于 09-13 06:32

    混合部署 | RK3568同时部署RT-Thread和Linux系统-迅为电子

    混合部署 | RK3568同时部署RT-Thread和Linux系统-迅为电子
    的头像 发表于 09-06 15:32 ?891次阅读
    混合部署 | <b class='flag-5'>在</b>RK3568<b class='flag-5'>上</b>同时部署<b class='flag-5'>RT-Thread</b>和Linux系统-迅为电子

    【大连】9月7日RT-Thread巡回线下培训-OpenMV机器视觉

    亲爱的RT-Thread社区成员们:2024年RT-Thread全球开发者线下培训拉开帷幕啦!24年全球巡回培训将覆盖超10座城市及国家,为开发者提供一个深入学习RT-Thread嵌入式开发的绝佳
    的头像 发表于 09-01 08:02 ?4202次阅读
    【大连】9月7日<b class='flag-5'>RT-Thread</b>巡回线下培训-OpenMV机器视觉