航芯ACM32G103开发板评测 07 RT-Thread Nano移植 线程管理测试
1. 软硬件平台
- ACM32G103 Board开发板
- MDK-ARM Keil
- RT-Thread Nano 源码

2. 物联网RTOS—RT-Thread
RT-Thread诞生于2006年,是一款以开源、中立、社区化发展起来的物联网操作系统。 RT-Thread主要采用 C 语言编写,浅显易懂,且具有方便移植的特性(可快速移植到多种主流 MCU 及模组芯片上)。RT-Thread把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。RT-Thread完整版,通过在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,并且可以无缝地导入丰富的软件功能包,从而实现复杂功能。
RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于大量使用的 32 位 ARM 入门级 MCU 的场合。下图是 RT-Thread Nano 的软件框图,包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件:

支持架构:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。
功能:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。
RT-Thread Nano的特点
-
下载简单
RT-Thread Nano 以软件包的方式集成在 Keil MDK 与 CubeMX 中,可以直接在软件中下载 Nano 软件包获取源码,获取方式详见 基于 Keil MDK 移植 RT-Thread Nano 与 基于 CubeMX 移植 RT-Thread Nano 。同时也提供 下载 Nano 源码压缩包 的途径,方便在其他开发环境移植 RT-Thread Nano,如 基于 IAR 移植 RT-Thread Nano。
-
代码简单
与RT-Thread 完整版不同的是,Nano 不含 Scons 构建系统,不需要 Kconfig 以及 Env 配置工具,也去除了完整版特有的 device 框架和组件,仅是一个纯净的内核。 -
移植简单
由于 Nano 的极简特性,使 Nano 的移植过程变得极为简单。添加 Nano 源码到工程,就已完成 90% 的移植工作。 -
易裁剪:Nano 的配置文件为 rtconfig.h,该文件中列出了内核中的所有宏定义,有些默认没有打开,如需使用,打开即可。
-
易添加 FinSH 组件:FinSH 组件 可以很方便的在 Nano 上进行移植,而不再依赖 device 框架,只需要对接两个必要的函数即可完成 FinSH 移植。
-
资源占用小:对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右。
移植过程
-
先准备好rt-thread nano 源码


-
建立工程,添加相关文件
直接全部添加src文件,添加port文件时选择了arm cortex-m4架构的。ACM32G103是基于ARMv8-M架构,支持Cortex-M33和Cortex-M4F指令集,支持浮点运算和DSP。但rt-thread nano里面没有Cortex-M33文件,可能标准版支持的力度好点,因此就选择了cortex-m4的,里面的具体差别不怎么清楚,我也没有找到相关官方资料,目前按照这个去移植吧,后续出现问题的时候再移植。


-
注释中断处理函数
RT-Thread 会接管异常处理函数HardFault_Handler()和悬挂处理函数PendSV_Handler(),这两个函数已由 RT-Thread 实现,所以需要删除工程里中断服务例程文件中的这两个函数,避免在编译时产生重复定义。如果此时对工程进行编译,没有出现函数重复定义的错误,则不用做修改。因此在我们的工程里面需要把gd32f30x_it.c文件中的HardFault_Handler、PendSV_Handler、SysTick_Handler函数注释掉。void PendSV_Handler(void); void SysTick_Handler(void); void HardFault_Handler(void); -
添加board.c rtconfig.h文件,这两个文件非常重要。重点需要修改这两个文件。
参考官方教程 基于 Keil MDK 移植 RT-Thread Nano
(1)初始化HAL库
(2)配置系统时钟
(3)对系统时钟进行更新
(4)RT-Thread nano OS tick频率配置


最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



