RT-Thread学习--系统简介
最近接触到RT-Thread,然后一朋友提醒我最好能学过之后,自己再记录一下,因为只有能将它讲出来的时候,自己才算是真正能说略知一二。所以,也借此机会,一边学习,一边记录,希望能加深一下自己的印象。如有谬误,还望不吝赐教。本博客内容仅为学习笔记,学习的资料来自于RT-Thread官网,链接为:https://www.rt-thread.org/document/site/
RT-Thread简介
RT-Thread全称:real time-thread,是一款完全由国内团队开发并维护的嵌入式实时操作系统(RTOS,Real Time Operating System)。RTOS与分时系统(如:Linux)比较起来,其对于实时性的要求更高。而对于计算机稍有了解的人都知道,CPU在处理任务的时候,其实并不是多个任务同时进行的,而是根据一定的规则进行有选择地处理。但是由于CPU地处理速度很快,所以会给我们造成一种计算机在同时处理多个任务的错觉。RT-Thread就是采用了一种任务调度机制(线程调度)对不同的任务进行资源的调度,进而满足实时要求。说到这里,相信很多人就看出来了,在RT-Thread中,任务是通过线程来实现的,对于任务的调度就是对线程的调度。
另外,RT-Thread是采用C语言来编写的,所以其代码更加浅显易懂,便于移植。另外,RT-Thread将面向对象的设计方法来进行系统架构的设计,所以其模块化做的很好,这样就更加便于剪裁,而这种良好的剪裁性对资源受限的微控制器(MCU)是十分友好的。这里只是一个简介,对于其更加详细的说明,还是得查看其官网资料。
RT-Thread系统架构
RT-Thread与其他很多RTOS(例如:FreeRTOS、uc/os)的区别在于,RT-Thread,它不仅仅是一个实时内核,而且具有较为丰富的中间组件。其软件框架如下图所示:
从上图可以看出,其软件架构从底层到上层总共包括以下几部分:
- 内核层:在这一层包括了内核对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理以及定时器等。 libcpu/BSP(芯片移植相关文件/板级支持包)与硬件密切相关,有外设驱动和CUP移植构成。内核层也是也是RT-Thread的核心部分。
- 组件与服务层:在内核层之上,包括虚拟文件系统、FinSH命令行界面、网络框架、设备框架等。
- RT-Thread软件包:该层运行在RT-Thread物联网(IoT)操作系统平台之上,对于不同应用领域的通用软件组件,有描述信息、源代码或者库文件组成。软件包的可重用性比较高的话,可以很大地减少开发所需要的时间。目前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。
今天暂且这样吧,个人感觉东西挺多,对于我这种小白,只能是慢慢啃了。想要学习的小伙伴,一起加油啊!