RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。
RT-Thread 主要采用C语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。
RT-Thread 系统完全开源,遵循 Apache License 2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码,没有潜在商业风险。
RT-Thread架构
· 内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
· 组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
· RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 400+,如下举例:
· 物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
· 脚本语言相关的软件包:目前支持 Lua、JerryScript、MicroPython、PikaScript。
· 多媒体相关的软件包:Openmv、mupdf。
· 工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
· 系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
· 外设库与驱动类软件包:RealTek RTL8710BN SDK。
RT-Thread的特点相比其他操作系统,RT-Thread 的主打特性是 “小而美的物联网操作系统”。
“小” 体现在 RT-Thread 的体积小,最小资源占用 1.2KB RAM 和 2.5KB flash。RT-Thread 可伸缩、易裁剪的特性,帮助用户在需要一个适用的操作系统的时候,轻松地进行裁减,适应到需要的场景,不占用过多的资源。
“美” 不单止代码质量和代码风格,还有 RT-Thread 的使用和开发体验,以及增加了小程序、SMP 多核调度、PSA 安全支持等多项实用的新功能,使得 RT-Thread 系统能实现灵活极简的应用开发,能扩展至众多高性能、高安全的应用领域。
“物联网” 则体现在 RT-Thread 针对物联网场景提供的众多组件和软件包,比如 AT组件、WiFi、蓝牙、LoRa、Sensor、AI 等等。以及针对安全和低功耗的优化,还有以 JS 为开发方式的柿饼 UI,都使其非常适用于 IoT 领域。
我使用的是野火指南者stm32f103
野火指南者 STM32F103 板级支持包提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境。
准备步骤:
1 MDK 开发环境
需要安装MDK-ARM 5.24(正式版或评估版,5.14 版本及以上版本均可)。
2 使用 USB 线连接开发板的 USB 转串口 到 PC 机。如图1所示
图 1
运行一个程序1.编写一个代码
图 2
2烧录之后,打开串口调试助手
图 3
串口屏显示内容如图3所示。
开发板按下复位键,串口屏上会显示如图4所示
图 4
提示:注:野火一键下载电路和终端工具冲突,在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题。推荐使用串口调试助手如:sscom