1 如何将RT-Thread移植到NXP MCUXPressoIDE上-德赢Vwin官网 网

如何将RT-Thread移植到NXP MCUXPressoIDE上

描述

RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE上呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有所帮助。

MCUXpressoIDE是由恩智浦官方推出的基于Eclipse的集成开发环境,是LPCXpresso IDE的升级版本。它具有以下特点:

完全免费,支持所有NXP的MCU产品线

包含MCUXpresso配置工具(SDK Builder),可视化配置外设

基于Eclipse平台,支持丰富的插件生态

RT-Thread是一个开源的物联网操作系统,由中国开发者主导开发,具有以下特点:

开源、中立、稳定可靠

组件丰富,生态完善

软件包管理系统,降低开发难度

提供实时性强、资源占用小的内核

支持标准POSIX接口

完善的中文文档支持

本文受众:

本文面向熟悉RT-Thread并需要将其移植到MCUXPressoIDE的用户. 本文以FRDM-MCX C444为例,但是其中的移植步骤基本上是通用的, 其他NXP的芯片移植也可以借鉴这篇文章的内容。

本文所涉及的软件版本:

MCUXPressoIDE: 24.9 [Build 25][2024-09-26]

SDK: SDK_2_16_000_FRDM-MCX C444.

RT-Thread: V5.2.0

软硬件准备:

1. 下载并安装SDK. 导入MCUXpressoIDE并且确保您已经熟悉基本操作(可以导入SDK工程并成功运行一个基本的SDK helloworld).确保下载,调试,串口输出等基本技能已经掌握. 这些内容和RT-Thread没有任何关系,具体教程可以参见官方上手指南:

https://www.nxp.com/document/guide/‍getting‍-started-with-frdm-MCXC444:GS-FR‍DM-MCX C444

2. 下载RT-Thread源码(本文以5.20为准),因为目前RT-Thread主干已经支持了FRDM-MCX C444(Keil, GCC),所以强烈建议先使用Keil编译FRDM-MCX C444 RT-Thread工程,并且运行,确认基本的软硬件配置是OK的.具体Keil下指南见: https://github.com/RT-Thread/rt-thre‍ad/tree/master/bsp/n‍xp/mcx/MCXC

移植步骤: 1. 基于SDK创建一个新的工程(本文以SDKhello_world为蓝本).创建好后可以给整个工程改个名字,方便识别,养成好习惯(可选):

RT-Thread

2. 将RT-Thread源代码文件复制进工程,并且将RT-Thread文件夹添加进编译系统:

RT-Thread

3. 因为RT-Thread没有专门针对MCXPressoIDE的构建系统,所以接下来一个主要的任务就是将RT-Thread中不需要的源代码删除.这个过长相当繁琐(基本占移植工作的95%以上),并且需要对RT-Thread本身的源代码有一定了解,这里仅仅举一个例子:

比如有关真对处理器架构的相关移植文件文件夹在RT-Thread/libcpu中,MCX C444是ARM Cortex-M0+内核的,且MCXPressoIDE是基于GCC编译器的,所以我需要只保留 t-threadlibcpuarmcortex-m0中context_gcc.S其余文件(文件夹)需要通通删除. RT-Thread其他地方的源码,包括C源码也有很多需要类似的处理(总共有100+处),这里就不在一一举例了,可以通过查看GCC构建中的Makefile文件或者env工具自动构建出来的Keil/IAR工程对比进行操作。

4. 添加Include路径: 如下图所示. 这一部分是否完成可以尝试编译来确认,如果都编译通过,则说明这步基本没问题:

RT-Thread

5. 将hello_world.c改名为main.c,并且将hello_world工程中board.c也替换为MCX C444 RT-Thread工程中的board.c 并且修正一些编译过去,使之能通过编译.

6. 对于RT-Thread移植,需要几个特定的保留段(Keep section),因此我们要手动修改Linker File:

RT-Thread

然后在linker File里添加如下字段:

RT-Thread

7. 到此, 移植步骤基本结束. 重新编译整个工程,并且下载到开发板中,复位后,打开串口.波特率115200. 会出现RT-Thread开机log, 并且工程默认已经实现了串口和GPIO驱动, 默认使能了Finish命令行输入”help”会打印帮助信息. ,另外开发板红色LED会以1Hz闪烁;

RT-Thread

到此移植工作结束。注意:本工作只是实现了一个最小系统的移植,RT-Thread有众多的组件和生态,如果需要可以涉及继续手工移植源码,另外本工程的device driver只实现了pin和 serial,如需其他driver需要手工添加。

最后移植成功的完整工程将会随后发布在NXP的 AppcodeHub上,欢迎下载尝鲜!

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

全部0条评论

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

×
20
完善资料,
赚取积分