前言
i.MX RT 是 NXP 推出的跨界处理器系列。该系列下又包括 i.MX RT1020、i.MX RT1050 及 i.MX RT1060 等子系列芯片。为了方便管理各个子系列的 BSP 与 RT-Thread 适配的通用驱动,同时也为了让广大开发者更好、更方便地使用 BSP 进行开发。RT-Thread 开发团队联合 NXP 半导体公司在现有 i.MX RT 系列 BSP 的基础上进行了重构,推出了新的 BSP 框架。新的 BSP 框架在易用性、移植便利性、代码规范性等方面都有较大提升,在新的 BSP 框架下进行开发,可以大大提高应用的开发效率。
和 RT-Thread 以往提供的 i.MX RT 的 BSP 不同,新的框架将不会出现一个 BSP 通过 Env 配置来适配不同开发平台的情况。而是将这些不同的开发平台通过不同的 BSP 文件展示出来。这种方式不仅大大降低了代码的耦合性,减少了 BSP 的维护成本,而且让开发者可以更容易地找到自己需要的资源。
新的 BSP 框架还引入了 NXP 推出的图形化配置工具 MCUXpresso Config Tools
,可以使用该工具来对 MCU 的引脚和时钟进行配置。MCUXpresso 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然。
新 BSP 框架的主要特性如下:
提供使用和说明文档,使开发者可以快速上手。
提供多系列 BSP 和 BSP 模板,降低了添加新 BSP 的难度。
BSP 驱动文件比较完善,开发者可以方便地使用驱动。
使用 MCUXpresso Config Tools
工具配置引脚及时钟,解决引脚冲突问题。
框架介绍
BSP 框架结构如下图所示:
i.MX RT 系列新框架按模块可以分为五部分,分别是使用和说明文档、特定开发板的 BSP,NXP 官方 SDK、RT-Thread 通用驱动和各个系列的工程模板。
文档 imxrt/docs
:BSP 的说明和使用文档,包括外设驱动使用教程、BSP 制作教程、驱动介绍和外设驱动添加指南等文件,开发者通过阅读这些文件可以快速添加自己需要的外设来进行开发。
特定开发板的 BSP:目前新框架已经支持的 BSP 有:
imxrt1052-atk-commander
imxrt1052-fire-pro
imxrt1052-nxp-evk
imxrt1064-nxp-evk
NXP 官方 SDK imxrt/libraries/MIMXRT1050NXP
:NXP 官方提供和维护的不同系列的 SDK,例如:MIMXRT1050
、MIMXRT1064
等。
RT-Thread 通用驱动 imxrt/libraries/drivers
:RT-Thread 为不同 i.MX RT 系列适配的通用驱动,例如:drv_gpio.c
、drv_uart.c
等。
工程模板 libraries/templates:RT-Thread 为不同 i.MX RT 系列提供的 BSP 通用模板,开发者可以根据不同系列模板快速的将 RT-Thread 移植到自己的板卡。
BSP工程文件组成
本节以 imxrt1052-fire-pro
开发板的 BSP 为例,讲解 i.MX RT 新框架是如何生成一个 BSP 工程的。下图展示了新 i.MX RT 框架生成工程所需的所有文件:
各个文件的具体描述如下。
applications
一般自己的应用代码都放在这个文件夹,在一个基础的 BSP 中,如果有 LED 的话,main 函数里会只放一个 LED 1HZ 闪烁的程序。
board
存放具体硬件相关的文件。
linker_scripts
:IAR、MDK 和 GCC 的链接脚本文件
MCUX_Config
:图形化配置工具生成的工程文件。虽然 MCUXPresso Config
工具生成了很多工程文件,但是 RT-Thread 只使用 clock_config.c
和 pin_mux
以及对应的头文件来生成工程。所以这里只保留相应的时钟和引脚的初始化文件。这里使用 MCUXpresso 工具的一个好处就是可以图形化的配置引脚,不同子系列的芯片外设之间的区别一般是使用的引脚不一样,使用 RT-Thread 外设驱动的第一步就是需要配置外设对应的引脚,而外设的初始化不需要使用工具配置,这个过程在 RT-Thread 外设驱动中完成。MCUXPresso Config
生成的需要保留的工程文件如下图所示:
borad.c
:完成硬件相关的初始化工作。
由于 i.MX RT 系列下载时需要特定的算法,为了方便程序的下载,对应 BSP 的下载算法文件也会放在 board 文件夹下面。
IAR/MDK4/MDK5工程文件
根据命令 scons --target=xxx
通过 Env 工具生成基于不同开发平台的工程文件,常用的开发平台如下所示:
1scons --target=iar
2scons --target=mdk4
3scons --target=mdk5
如果 BSP 目录下提供其他 IDE 工程的模板文件也可以使用此命令生成对应的新工程,比如 ua、vs、cb、cdk。
生成工程所需的脚本文件
使用 Env 生成工程时会根据 rtconfig.py
、Sconscript
和 Sconstruct
文件指定的编译器以及源文件、头文件路径来生成工程。
用于生成 IAR/MDK4/MDK5 工程的模板文件
在基于 Env 使用脚本生成基于不同开发平台的工程时,需要不同开发平台提供相应的模板文件来生成目标平台开发的工程。
工程使用示例
本节基于 imxrt1050-fire-pro
开发板生成 MDK5 开发平台工程为例,讲解如何使用基于 i.MX RT 新框架 BSP。
打开 Env 工具并输入 scons --target=mdk5 -s
命令来生成 MDK5 的工程,如下图所示:
生成工程之后使用 MDK5 打开并编译工程
将编译生成的代码下载到开发板中,此时开发板自带 LED 会以 1HZ 的频率闪烁。打开串口调试助手,波特率设置为 115200 ,复位开发板,串口会有 RT-Thread 的 logo 打印,如下图所示:
开发与维护
为了支持更多 i.MX RT 系列 BSP,完善 RT-Thread 驱动,同时也为了便于开发者关于 i.MX RT 系列的学习与交流,RT-Thread 为开发者提供了学习交流群,可以添加小师妹微信:RT-Thread2006
为好友,审核通过后拉你进官方 i.MX RT 学习交流群!
加好友请备注:姓名 + 职业 + i.MX RT
参考资料
《RT-Thread 源码》
链接:https://github.com/RT-Thread/rt-thread
《i.MX RT 系列 BSP 制作教程》
链接:https://github.com/RT-Thread/rt-thread/blob/master/bsp/imxrt/docs/IMXRT%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md
《Env 手册》
链接:https://www.rt-thread.org/document/site/programming-manual/env/env/
(请将以上链接复制至外部浏览器打开)
END
RT-Thread线上活动
1、【RT-Thread能力认证考试12月——RCEA】经过第一次考试的验证,RT-Thread能力认证得到了更多社区开发者和产业界的大力支持!(点此查看)如果您有晋升、求职、寻找更好机会的需要,有深入学习和掌握RT-Thread的需求,欢迎垂询/报考!
能力认证官网链接:https://www.rt-thread.org/page/rac.html(在外部浏览器打开)
立即报名
#题外话# 喜欢RT-Thread不要忘了在GitHub上留下你的STAR哦,你的star对我们来说非常重要!链接地址:https://github.com/RT-Thread/rt-thread
你可以添加微信18917005679为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群
RT-Thread
让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。
长按二维码,关注我们
看这里,求赞!求转发!
点击阅读原文进入Github