关于RT-Thread这款实时操作系统,它的特色有很多哦。之所以叫“RT-Thread”,是因为它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。实际上是因为任务与任务之间通过调度器来不停地切换,人的视觉感应没那么快,因此会产生同时运行的错觉。而这调度器正是我们所说的线程处理机制,调度器根据任务的优先级进行先后处理。RT-Thread基本上都是采用C语言编程,这样很容易让开发人员熟悉应用,代码的可移植性也比较强。它能够将我们的面向对象的编程方法实现到RTOS中,让系统模块化,可裁剪性非常好。RT-Thread可以通过在线的软件包管理工具,配合系统配置工具添加丰富的软件功能包,从而实现类似于Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。从ALIENTEK提供的RT-Thread官方示例源码中可以得知,编译出来的可执行二进制文件相较于Linux操作系统有很大的精简。RT-Thread由于采用多个线程的处理任务机制,因此实时性非常高,占用的资源也很小,为智能物联网提供了坚实的保证。
RT-Thread与其它实时操作系统的主要区别在于它不仅仅是一个实时内核,它还有丰富的中间层组件。 RT-Thread有三大部分,即内核层、组件与服务层、RT-Thread软件包。正如“RT-Thread内核入门视频”中介绍的,RT-Thread内核是内核系统中实现对象的核心部分,例如多线程创建及调度、信号量、邮箱、消息队列、内存管理、定时器等。至于组件与服务层是基于RT-Thread内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。RT-Thread软件包这一部分运行在RT-Thread物联网操作系统平台上,支持不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread提供了开放的软件包平台,存放着官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,因而极大的方便了应用开发者在最短时间内,打造出自己想要的系统。同时RT-Thread推出了开发辅助工具ENV,它能够为项目开发提供编译构建环境、图形化系统配置及软件包管理,其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。
从官方提供的36个demo示例中,我们很容易知道,每个例程都有非常详细的注释,代码风格统一,根据工程文件夹命名就知道分为四个类别,由基本例程到高级例程,循序渐进,方便初学者更好的学习。例程的四个类别分别是:基本类、驱动类、组件类和物联网类。这些不仅包括了熟悉对w601硬件资源的使用,更是为学习开发者提供了丰富的物联网领域的应用示例。
本人已验证多个基本类、驱动类的工程示例,这里就分享一下“03_basic_rgb_led”与“06_driver_lcd”两个工程的测试。这里采用Keil编译,采用SDK包中的“6软件资料”文件夹下的“1软件”目录下“星通智联串口调试下载助手”下载,无需JLink下载器,直接通过Micro USB即串口0下载。编译好的可执行FLS文件在SDK下的“examples”下对应的工程包中的“Bin”文件夹下,我们下载通常选择“rtthread_layout_1M.FLS”版本。部分工程源码截图如下:
“03_basic_rgb_led”工程下,“星通智联串口调试下载助手”软件设置好后下载FLS文件的界面信息如下图所示:
串口打印的信息及实测效果如下:
“06_driver_lcd”工程烧录后的实测效果图示:
此次评测就与大家分享到这里,关于RT-Thread软件包的强大之处远不能在于此基本类,驱动类体现出来,它是物联网下的优质产物,其强大之处主要体现在组件类,物联网类的工程示例中,后续有时间再对ENV这款开发辅助工具的使用进行经验分享,谢谢!