基于开源国产物联网操作系统RT-Thread在“RTL8762DW应用开发”介绍

一、前言

      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
 
4.RT-Thread Smart


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编译】

  • 下载 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,源码目录如下:

1

 bsp是放置各种芯片移植开发的配置文件。比如现在要开发STM32F103ZE芯片->对应目录是stm32f10x->目录里面包含应用层、驱动层和各开发环境的工程项目文件,初学者可以就此打开,并且研究其在移植开发中具体需要哪一些必需文件。(移植需要文件)

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来做转义处理。






★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论