RT-Thread--Nano 拼搏现实的明天。 2022-10-12 12:56 13阅读 0赞 ## 1、RT-Thread Nano简介 ## RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。 下图是 RT-Thread Nano 的软件框图,包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p3Yl81NzgyMDkxNjA_size_16_color_FFFFFF_t_70][] **支持架构**:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。 **功能**:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。 ## 2、Nano 的特点 ## **1)、下载简单** RT-Thread Nano 以软件包的方式集成在 Keil MDK 与 CubeMX 中,可以直接在软件中下载 Nano 软件包获取源码,获取方式详见 [基于 Keil MDK 移植 RT-Thread Nano][Keil MDK _ RT-Thread Nano] 与 [基于 CubeMX 移植 RT-Thread Nano][CubeMX _ RT-Thread Nano] 。 同时也提供 [下载 Nano 源码压缩包][Nano] 的途径,方便在其他开发环境移植 RT-Thread Nano,如 [基于 IAR 移植 RT-Thread Nano][IAR _ RT-Thread Nano]。 **2)、代码简单** 与 RT-Thread 完整版不同的是,Nano 不含 Scons 构建系统,不需要 Kconfig 以及 Env 配置工具,也去除了完整版特有的 device 框架和组件,仅是一个纯净的内核。 **3)、移植简单** 由于 Nano 的极简特性,使 Nano 的移植过程变得极为简单。添加 Nano 源码到工程,就已完成 90% 的移植工作。 在 Keil MDK 与 Cube MX 中还提供了 Nano 的软件包,可以一键下载加入到工程。另外,在 RT-Thread Studio 中可以基于 Nano 创建工程直接使用。以下是使用不同开发环境时,可以选择移植或使用 Nano 的方法: * [在 RT-Thread Studio 上使用 RT-Thread Nano][RT-Thread Studio _ RT-Thread Nano] * [基于 KEIL MDK 移植 RT-Thread Nano][Keil MDK _ RT-Thread Nano] * [基于 CubeMX 移植 RT-Thread Nano][CubeMX _ RT-Thread Nano] * [基于 IAR 移植 RT-Thread Nano][IAR _ RT-Thread Nano] * [移植 RT-Thread Nano 到 RISC-V][RT-Thread Nano _ RISC-V] **4)、使用简单** RT-Thread Nano 在使用上也非常简单,带给开发者友好的开发体验。 * 易裁剪:Nano 的配置文件为 rtconfig.h,该文件中列出了内核中的所有宏定义,有些默认没有打开,如需使用,打开即可。具体的配置可见 Nano 版块的 [RT-Thread Nano 配置][RT-Thread Nano] 教程。 * 易添加 FinSH 组件:FinSH 组件 可以很方便的在 Nano 上进行移植,而不再依赖 device 框架,只需要对接两个必要的函数即可完成 [FinSH 移植][FinSH]。 * 自选驱动库:可以使用厂商提供的固件驱动库,如 ST 的 STD 库、HAL 库、LL 库等,可以自行选择。 * 完善的文档:包含 内核基础、线程管理 (例程)、时钟管理 (例程)、线程间同步 (例程)、线程间通信 (例程)、内存管理 (例程)、中断管理,以及 Nano 版块的移植教程。 ## 4、小巧 ## **资源占用小**:对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右。 Nano 资源占用情况举例:在运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸。以下是基于 Cortex M3 的 MDK 工程编译结果(优化等级 3)。 Total RO Size (Code + RO Data) 4000 ( 3.91kB) Total RW Size (RW Data + ZI Data) 1168 ( 1.14kB) Total ROM Size (Code + RO Data + RW Data) 4092 ( 4.00kB) [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p3Yl81NzgyMDkxNjA_size_16_color_FFFFFF_t_70]: /images/20221005/c6474c0d64914435b5a6e054878fbf4a.png [Keil MDK _ RT-Thread Nano]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-keil/an0039-nano-port-keil [CubeMX _ RT-Thread Nano]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-cube/an0041-nano-port-cube [Nano]: https://www.rt-thread.org/download/nano/rt-thread-3.1.3.zip [IAR _ RT-Thread Nano]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-iar/an0040-nano-port-iar [RT-Thread Studio _ RT-Thread Nano]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-studio/an0047-nano-port-studio [RT-Thread Nano _ RISC-V]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-gcc-riscv/an0042-nano-port-gcc-riscv [RT-Thread Nano]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-config/an0043-nano-config [FinSH]: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/finsh-port/an0045-finsh-port
还没有评论,来说两句吧...