RTOS实时操作系统概述_rtos zoss_(1)

RTOS内核对比

Freertos的系统功能更为纯粹,可以用于各种需要实时系统的场景。rtthread具备各种第三方组件,尤其是网络组件相关,在物联网产品领域具有很强的优势,可以帮助开发人员配合组件快速完成物联网产品的开发。LiteOS华为大量集成在自己的物联网设备中,包含大量网络云接入接口。

一直在使用rtos作为主要开发内容,却没有详细了解过rtos的内核实现机制。最近一个月,抽了点时间将freertos和rtthread的内核代码看了下,了解了实时系统的实现机制和设计思想。这里学习freertos的代码,先看朱大神的freertos基础篇和高级篇的详细介绍,然后啃源码;搞懂了基本的设计思想和代码的实现逻辑。下面简单列一下自己了解到的两个系统的实现差异。

一、创建任务
两个系统都支持创建静态系统任务和动态任务。区别如下:

freertos 创建的任务添加到就绪任务链表,创建完成后,若调度器已经运行,则可直接参与调度。
rtthread 创建的线程添加到挂起任务列表,创建线程后,需要主动调用start_up,将线程移到就绪任务列表,参与调度。
二、delay
两个系统都支持delay和delayutil。区别如下:

freertos 系统有专用的delay超时计数链表。delay的任务按照超时时间依次排列在超时计数链表中,等待超时时间到达,将其移至就绪任务链表参与调度。
rtthread 系统的每个线程控制块结构体中都定义了一个软件定时器结构体,delay延时函数调用时,将会启动线程自带的软件定时器,完成delay操作,delay超时时间满足时,触发软件定时器超时callback,将任务从挂起列表移到就绪列表参与调度。
三、信号量
两个系统都支持使用信号量。区别如下:

freertos 系统的信号量也是队列,只不过队列的长度为0。freertos使用宏定义封装了计数信号量和二值信号量。
rtthread 系统信号量只支持计数信号量,在创建信号量时传入信号量的初始值。系统中没有二值信号量的接口。可以通过初始值设置1,作为二值信号量使用。
四、邮箱
邮箱与消息队列不同,邮箱常用于传输一个地址,可以直接引用数据,进行数据传输。但是消息队列的实现机制是提前分配好队列最大长度个队列项的内存,在传输数据时,将要发送的数据拷贝到申请的队列内存中,实现的是数据的拷贝。

freertos 系统不支持邮箱
rtthread 系统支持邮箱,邮箱传输的数据大小只有4字节,一般用于传输一个地址,引用这个地址进行数据的传输。

五、时间片

两个系统都支持时间片轮转的机制。时间片轮转是指就绪任务列表中有至少两个相同优先级的最高任务。需要按照轮流执行固定的时间tick进行任务调度。共享cpu资源。两个系统的区别如下:

freertos 系统需要主动打开时间片轮转的宏定义才会开启这个功能,在task调度切换时,每个task只能执行1个tick。
rtthread 系统在创建thread的时候可以直接传入时间片参数,在thread调度切换时,将按照创建时传入的时间片占用CPU资源,进行相同优先级thread的调度。
六、优先级
freertos 系统的优先级定义为,优先级数值越大,task的优先级越高。
rtthread 系统的优先级定义为,优先级数值越小,thread的优先级越高。优先级为0的thread,优先级最高。

ES32 SDK 支持的 RTOS 内核用例

ES32 SDK 为用户提供了 FreeRTOS、RT-Thread-Nano和 Huawei LiteOS 的内核用例,如下图所示。用户可以通过这些用例学习 RTOS 的使用。

RTOS细节说明

FreeRTOS

FreeRTOSFreeRTOS由美国的Richard Barry于2003年发布,与众多半导体厂商合作密切,是目前市场占有率最高的RTOS。遵循 GPLv2+ 许可协议。

FreeRTOS仅仅只是一个操作系统内核,需外扩第三方的 GUI(图形用户界面)、TCP/IP 协议栈、FS(文件系统)等组件才能实现较复杂的系统。不像 RT-Thread 有丰富的组件和软件包生态,可以快速实现丰富多样 IoT 系统。

RT-ThreadRT-Thread 版权属于上海睿赛德电子科技有限公司,于 2006 年 1 月首次发 布,初始版本号为 0.1.0,经过10来年的发展,如今主版本号已经升级到 4.0.3, 累计开发者达到数百万,在各行各业产品中装机量达到了惊人的数亿台, 占据国产 RTOS 的鳌头。其遵循 Apache-2.0 开源授权模式。

RT-Thread 整体结构如下:

RT-Thread操作系统进程管理算法和Linux中RT调度器中的RR调度相同,在严格优先级的基础上增加了时间片轮训。

它具体包括以下部分:

  • 内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
  • 组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合
  • RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 300+。
  • IDE:RT-Thread Studio

RT-Thread 内核结构如下:


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

img

img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

6ee24.jpg" alt=“img” style=“zoom: 67%;” />

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值