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

描述

 

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

RT-Thread

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生成一个示例工程获取其驱动库、启动文件、链接脚本等。

RT-Thread

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

RT-Thread

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

RT-Thread

2.2.2 生成文件

2.2.2.1 mtb_shared文件

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

RT-Thread

在mtb_shared里面存放着:

RT-Thread

我们会使用到下面的文件

文件名称

文件说明

cat1cm0p

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

cmsis

ARM的一套标准化软件接口

core-lib

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

mtb-hal-cat1

硬件抽象层库

mtb-pdl-cat1

硬件驱动层库

retarget-io

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

2.2.2.2 工程下文件

RT-Thread

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

 

3.  文件移植

 

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

RT-Thread

3.1 applications文件

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

3.2 board文件

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

3.2.1 链接脚本

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

RT-Thread

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

RT-Thread

3.2.2 board.c/.h文件

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

RT-Thread

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

RT-Thread

3.2.3 Scons&&KConfig

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

RT-Thread

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

RT-Thread

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

RT-ThreadRT-Thread

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

RT-Thread

3.3 lib文件

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

RT-ThreadRT-Thread

3.4 MDK工程

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

RT-Thread

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

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

RT-ThreadRT-Thread

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

RT-Thread

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

RT-Thread

3.6 SConscript、SConsturct

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

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

RT-Thread

3.7 Libraries修改

3.7.1 修改Kconfig

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

RT-Thread

3.7.2 修改HAL_Drivers文件

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

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

RT-Thread

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

RT-ThreadRT-Thread

 

4.  做成软件包

 

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

RT-Thread

 

5.  使用

 

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

5.1 生成MDK工程

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

RT-ThreadRT-Thread

然后进入MDK中进行编译

RT-Thread

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

RT-Thread

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

RT-Thread

5.2 烧录

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

RT-Thread

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

RT-Thread

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

RT-Thread

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分