一、前言
RT-Thread诞生于2006年,是国内以开源、中立、社区化发展起来的一款实时操作系统,由上海睿赛德电子科技有限公司拥有并负 责开发、维护和运营。因其十四年的沉淀积累,加上最近两年在资本的加持下专业化的运营推广,其高可靠性、超低功耗、高可伸缩性和中间组件丰富易用等特性极 大地满足了物联网市场的需求,目前已经成为市面上装机量最大(超 6 亿台)、开发者数量最多、软硬件生态最好的物联网操作系统之一,被广泛应用于智能家居及安防、工业车载、穿戴、智慧城市等众多行业领域.
- RTT为国内的一款嵌入式RTOS,诞生于2006年,其与FreeRTOS类似,以开源、免费的方式进行发布。
- RT-Thread,全称是 Real Time-Thread(简写RTT),顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务。
- RTT自创建之初的定位就不仅是一个RTOS的内核,而是包含网络、文件系统、GUI界面等组件的中间平台。
源码下载链接:
https://gitee.com/rtthread/rt-thread
二、RTT介绍
RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片。RT-Thread从v3.1.1版本开始,是一个以Apache许可证2.0版本授权的开源软件。
- 物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS,支持多任务,采用 C 语言编写
- 把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好
- 对于微处理器,有仅需要 3KB Flash、1.2KB RAM 内存资源的 NANO 版本
- 对于资源丰富的物联网设备,RT-Thread 又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。
- 虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。
1.特点
- 体积小,成本低,功耗低、启动快速、实时性高、占用资源小
- RT-Thread 系统完全开源,从 3.1.0 以后的版本遵循 Apache License 2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码。
- 不仅仅是一个实时内核,还具备丰富的中间层组件
2.RT-Thread架构
- 内核层:RT-Thread 内核,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
- 组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
- RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:
- 物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
- 脚本语言相关的软件包:目前支持 JerryScript、MicroPython。
- 多媒体相关的软件包:Openmv、mupdf。
- 工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
- 系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
- 外设库与驱动类软件包:RealTek RTL8710BN SDK。
3.支持的芯片架构
- ARM Cortex-M0
- ARM Cortex-M3/M4/7
- ARM Cortex-R4
- ARM Cortex-A8/A9
- ARM920T/ARM926 etc
- MIPS32
- x86
- Andes
- C-Sky
- RISC-V
- PowerPC
RT-Thread Smart(以下简称为rt-smart) 是基于RT-Thread操作系统衍生的新分支——混合微内核操作系统,主要面向带 MMU(内存管理单元Memory Management Unit)的中高端处理器,为众多领域提供更具竞争力的操作系统基础软件平台,具备快速启动、兼容POSIX 接口、开发调试便利、应用与内核分离、高安全性等特性。已正式上线,目前源代码可在Github、Gitee下载,采用Apache License 2.0。官方消息,RT-Thread Smart已正式上线,目前源代码可在Github、Gitee下载,采用Apache License 2.0。RT-Thread Smart(以下简称为rt-smart) 是基于RT-Thread操作系统衍生的新分支——混合微内核操作系统,主要面向带 MMU(内存管理单元Memory Management Unit)的中高端处理器,为众多领域提供更具竞争力的操作系统基础软件平台,具备快速启动、兼容POSIX 接口、开发调试便利、应用与内核分离、高安全性等特性。
RT-Thread Smart架构
- rt-smart在硬件平台的基础上通过MMU、系统调用的方式把整个系统分成了内核态及用户态,并具备独立的地址空间(32位系统上是4G的独立地址空间)。
- rt- smart内核即可包含基本功能,同时也可定制裁剪。rt-smart用户态应用环境采用musl libc提供POSIX接口调用及C运行环境,延续 RT-Thread 原有的生态,使用scons构建或其他的构建工具,例如xmake,cmake等,并对接 RT-Thread 在线软件包;同时支持 POSIX,方便 Linux 应用的移植。
- 目前,rt-smart已支持QEMU、树莓派4B运 行,开发者即可通过rt-smart开源仓库获得相关代码和文档,参考学习、了解RT-Smart的架构和代码。同时,rt-smart还在持续演进中, 欢迎开发者参与其中,共同打造创新平台,构建支持多处理器、开放的操作系统,推动行业生态发展。
源码下载链接:
https://github.com/RT-Thread/rt-thread/tree/rt-smart
https://gitee.com/rtthread/rt-thread/tree/rt-smart
因此,就RT-Thread整体而言,RT-Thread平台的软件包、中 间件对部分人来说还是有一些复杂度。所以,针对相应的问题已经持续发展系列配套的工具。从文本的env/scons工具(使 用scons --dist
来帮助大家精简代码)到图形界面的——RT-Thread Studio集成开发环境,在社区,RT-Thread Studio 已经获得了许多小伙伴的支持与使用!并根据用户反馈做了相应的优化,提升时钟频率、自动化配置控制台串口 、完善配置界面等,优化后的版本大家可以持续关注官网 RT-Thread Studio版页:https://www.rt-thread.org/page/studio.html
三、RTL8762DW
支持蓝牙5.1,超低功耗,搭配90MHZ ARM Cortex-M4高性能处理器,以及内置高密度大容量闪存,拥有相当灵活可配置的GPIO资源,极大的方便用户设计产品,可应用于智能家居、穿戴、智能门锁㩐等应用。
一般说明
- 支持蓝牙5.1
- LE 2Mbps
- LE 广播扩展
- LE 远距离
- High Duty Cycle Non-Connection Adv
- Supports OTA(Over-the-Air)
- 支持AoA/AoD
Cortex-M4处理器
- ARM Cortex-M4 最大90MHz
- 总共192KB SRAM
- 串行闪存控制器(一位和四位模式),具有16KB 4-way cache
- 支持AES128 / 192/256加密/解密引擎
- 内存Flash512KB(RTL8762DGF/DDF/DKF)
- 内存Flash1024KB(RTL8762DGF-VS/DKF-VS)
RF性能
- 发射功率: 0/4/7.5dBm可配(具体参考datasheet)
- 接收灵敏度: -97dBm BLE
- 快速AGC 控制, 用以改善接收动态范围
周边接口
- 灵活的GPIO设计
- 硬件Keyscan和Quad-decoder
- 嵌入式IR收发器
- 实时计数器(RTC)
- SPI主/从x 2;定时器x 8;I2C x 2;PWM x 8;UART x 2
- 400ksps,12bit,8通道AUXADC
- 用于外部音频编解码器的I2S 接口
- I8080接口用于LCD
- 内部32K RCOSC保持BLE链接
- 嵌入式PGA和音频ADC,带有5频段均衡器
四、RT-Thread环境搭建与工程编译
一、搭建开发环境
参考开发环境搭建
1.基于windows
-
下载 RT-Thread 源码,推荐下载3.1.0及以上版本。
-
安装 python 以及 SCons 工具
- 将路径加入到系统 PATH 变量中
-
安装 GCC 编译工具链 【动态模块只支持gcc编译】
- 选择Sourcery G++ Lite 2011.03-42
- Windows 环境下使用 GCC
- 将路径加入到系统 PATH 变量中
-
下载 RT-Thread Env 工具,推荐下载1.0.0及以上版本。
- QEMU 模拟的 ARM vexpress A9 开发板的板级支持包 (BSP) 位于 RT-Thread 源码 BSP 目录下的 qemu-vexpress-a9 文件夹,此 BSP 实现了 LCD、键盘、鼠标、SD 卡、以太网卡、串口等相关驱动。
-
Env 中携带了
Python & scons
环境
2.基于ubuntu环境
- 下载 RT-Thread 源码,使用命令:
git clone https://github.com/RT-Thread/rt-thread.git
- 安装 QEMU,使用命令:
sudo apt-get install qemu
- 安装 Scons,使用命令:
sudo apt-get install scons
- 安装编译器,使用 apt-get 命令安装的编译器版本太旧会导致编译报错,可依次使用如下命令下载安装新版本,下载链接和解压文件夹名因下载版本而异:
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2
cd /opt
sudo tar xf ~/Downloads/ gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2
- 安装 ncurses 库,使用命令:
sudo apt-get install libncurses5-dev
二、开发编译
1.RT-Threand Realtek 的SDK通常需要簽訂NDA,源码目录如下:
components是放置各种组件的。所谓组件,就是一些配套的,做好的应用,方便你使用。(我理解的意思)。里面的finsh组件很不错,一定要去涉及。(看需求移植,开发过程中最好配上finish)
documentation是,哦。
examples是一些关于rt_thread应用时一些API、编程、使用样例程序。还没细细研究过,仅供参考。
include是包含了RT-Thread内核头文件,移植的时候需要包含路径。(移植需要文件)
libcpu是存放各种内核文件,在移植中必需找到与自己芯片对应的内核文件。比如现在要开发STM32F103ZE芯片->对应arm目录下->cortex-m3内核。(移植需要文件)
src是RT-Thread内核源文件。(移植需要文件)
tools是支持各种集成开发环境的python文件,如常见的iar.py/keil.py/sconsui.py/vs2012.py(不会用)
RT-Thread 的通过 SCons 支持三种编译器,编译器的选择在 rtconfig.py 中指定
-
使用GCC编译
CROSS_TOOL='gcc'
...
if CROSS_TOOL == 'gcc':
EXEC_PATH ='D:/Program Files/CodeSourcery/Sourcery G++ Lite/bin' -
使用keil编译
CROSS_TOOL='keil'
...
elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc'
EXEC_PATH = 'D:/Keil' -
使用MDK IDE编译
-
SCons 自动生成 MDK 工程 ,然后用IDE打开工程编译
scons --target=mdk4 -s
#或
scons --target=mdk5 -s
-
执行编译
scons [-j4]
#清除编译目标
scons -c
编译完成后,会在 BSP 当前目录下生成rtthread.bin和rtthread-stm32f4xx.axf
编译注意:由于windows端的路径表示方式与linux不同,该工程是基于linux编写的,所以有些文件路径需要使用转义符r来做转义处理。
评论