640?wx_fmt=gif

640?wx_fmt=jpeg

继互联网、移动互联网之后,万物互联的物联网时代正袭面而来。而作为开发者,想要入门物联网,首先需要对该领域的计算机及相关设备中唯一管理计算机硬件与软件资源的计算机程序之操作系统有一个全面的了解。

在本文中,我们将以 IoT OS 的基石嵌入式实时操作系统为核心,解读物联网时代那些不容错过的操作系统发展与应用。


640?wx_fmt=png

何为嵌入式系统操作系统?


嵌入式系统是一种完全嵌入在装置或设备内部为满足特定需求而设计的计算机系统,生活中常见的嵌入式系统就有:电视机顶盒、路由器、电冰箱、微波炉与移动电话等。它们都具有某种特定的功能:对于电视机顶盒而言,它用来播放网络中的电视节目;同样,路由器用于选择最优路径并正确转发网络报文。这类系统专用性强、功能相对单一,通常只针对特定的外部输入进行处理,然后给出相应的结果,这样的特点使得嵌入式系统只需具备相匹配的少量硬件资源,就可完成所需的特定功能,因而能使成本得到有效的控制。

通用计算机系统则恰恰相反,它们并不针对特定的需求,而是尽可能地去满足各种需求,甚至在构造硬件系统时还会考虑未来几年的需求变化。例如,在人们购买电脑时,在自身有限的资金情况下,都希望尽可能获得更高端的性能,用于多媒体、游戏及工作等。

640?wx_fmt=png

嵌入式系统硬件框图

嵌入式系统的硬件设备由一些芯片及电路组成,包括主控芯片、电源管理、开发调试时用到的JTAG接口,也可能包含一些数据采集模块、通信模块及音频/视频模块等。


640?wx_fmt=png

实时系统


系统的实时性指的是在固定的时间内正确地对外部事件做出响应。在这段“时间内”,系统内部会做一些处理,例如输入数据的分析计算、加工处理等。而在这段时间之外,系统可能会空闲下来,做一些空余的事。以一个手机终端为例:当一个电话拨入的时候,系统应当及时发出振铃、声音提示以通知主人有来电,询问是否进行接听;而在非电话拨入的时候,人们可以用它进行一些其他操作,例如听音乐、玩游戏等。

从上面的例子我们可以看出,实时系统是一种需求倾向性的系统,对于实时的任务需要在第一时间内做出回应,而对非实时任务则可以在实时事件到达时为之让路——被抢占。所以也可以将实时系统看成是一个等级系统,不同重要性的任务具有不同的优先等级:重要的任务能够优先被响应执行,非重要的任务可以适当往后推迟。

实时计算可以定义成这样一类计算,即系统的正确性不仅取决于计算的逻辑结果,还依赖于产生结果的时间。有两个关键点,即正确地完成和在给定的时间内完成,且两者重要性是等同的。如果计算结果出错,这将不是一个正确的系统,而计算结果正确,但计算所耗费的时间已经偏离需求设定的时间,那么这也不是一个实时系统。下图中描述了一个实时系统。

对于输入的信号、事件,实时系统必须能够在规定的时间内得到正确的响应,而不管这些事件是单一事件、多重事件,还是同步信号或异步信号。

举一个例子说明:假设一颗子弹从20米外射向一个玻璃杯,子弹的速度是v米/秒,那么经过t1=20/v秒后,子弹将击碎玻璃杯。而如果有一个保护系统在检测到子弹射出后,把玻璃杯拿走了,假设整个过程持续t2秒的时间,如果t2<t1,玻璃杯就不会被击碎,那么就可以将这个系统看成是一个实时系统。

640?wx_fmt=png

实时系统

和嵌入式系统类似,实时系统中也存在一定的计算单元,这些单元可对系统的环境及其内部的应用做出预计,这也就是很多关于实时系统的书中所谈及的可确定性,即系统可以在给定的时间(t秒)内对一个给定事件做出响应。多个事件、多个输入的系统响应的可确定性构成了整个实时系统的可确定性(实时系统并不代表着对所有输入事件具备实时响应,而是在指定的时间内完成对事件的响应)。嵌入式系统的应用领域十分广泛,我们并不是要求所有的专用功能都具备实时性,只有当系统对任务有严格时间限定时,我们才关注它的实时性问题。具体的例子包括实验控制、过程控制设备、机器人、空中交通管制、远程通信、军事指挥与控制系统等。而对打印机这样一个嵌入式应用系统,人们并没有严格的时间限定,只有一个“尽可能快”的期望要求,因此,这样的系统称不上是实时系统。

软实时与硬实时

正如上面所描述的,实时系统关注的不外乎两点,即时间的正确性和功能的正确性。事实上,衡量一个实时系统的正确性正是如此,就是要求系统能在给定的时间内正确地完成相应的任务。但现实中也存在这样一种系统,即在多数情况下,它能够严格地在规定的时间内完成任务,但偶尔它也会稍微超出这个给定的时间范围才能正确地完成任务,我们通常把这种系统称为软实时系统。从系统对规定时间的敏感性的要求来看,实时系统可以分为硬实时系统和软实时系统。

硬实时系统严格限定在规定的时间内完成任务,否则就可能导致灾难的发生,例如导弹拦截系统,汽车引擎系统等,当这些系统不能满足规定的响应时间时,即使只是偶尔,也将导致车毁人亡等重大灾难的发生。

软实时系统,可以允许偶尔出现一定的时间偏差,但是随着时间的偏移,整个系统的正确性也会随之下降,例如可以将一个DVD播放系统看成一个软实时系统,允许它偶尔出现画面或声音延迟。

下图绘制了这三种系统(非实时系统、软实时系统和硬实时系统)的时效关系。

640?wx_fmt=png

时间与效用的关系

从上图中我们可以看出,当事件触发,在时间t内完成,则三类系统的效用是相同的。但是当完成时间超出时间t时,则效用发生了变化。

  • 非实时系统:超过规定的时间t后,其效用缓慢下降。

  • 软实时系统:超过规定的时间t后,其效用迅速下降。

  • 硬实时系统:超过规定的时间t后,其效用立即归零。


640?wx_fmt=png

嵌入式实时操作系统


在嵌入式设备中,除嵌入式操作系统之外,还有裸机程序,在主函数中编写一个大循环,循环中是各个任务的功能实现,而所有的任务都是平级顺序执行,下一个任务必须等待上一个任务运行完毕才能开始运行,这个运行着的大循环我们称之为后台程序。中断可以打断系统当前的后台任务优先执行,等中断处理完毕,再回到原先后台被中断处继续执行后台程序,中断处理程序称为前台程序。下图所示是一个前后台系统。

640?wx_fmt=png

前后台系统

这样的前后台系统在实时性处理方面存在缺陷,例如任务1是重要任务,需要能够得到及时响应,在运行任务4的时候,产生中断,执行任务1的条件被满足,最理想的快速响应方式是任务1立即被投入运行,但是在前后台程序中做不到,因为任务是被顺序执行的,即使任务1焦急万分,也必须等待任务4处理完毕后才能被运行。

嵌入式实时操作系统被设计成为一个抢占式系统,能够解决上述的实时性问题,它把任务分为不同的优先级,当运行条件被满足时,高优先级任务可以打断低优先级任务优先运行,从而极大地提高了系统实时性。实时操作系统执行任务示意图如下图所示。

640?wx_fmt=png

实时操作系统

当然,嵌入式实时操作系统相比前后台程序,不仅有实时性方面的进步,它在多任务管理、任务间通信、内存管理、定时器管理、设备管理等方面,也提供了一套完整的机制,极大程度上便利了嵌入式应用程序的开发、管理和维护。如果要和桌面操作系统进行类比,那么前后台程序开发好比直接使用BIOS进行开发,而使用嵌入式实时操作系统好比在Windows上进行应用开发。

总体来说,嵌入式操作系统是应用于嵌入式系统的软件,用来对接嵌入式底层硬件与上层应用软件,操作系统将底层驱动封装起来为开发者提供功能接口,极大地提高了应用程序的开发效率。


640?wx_fmt=png

主流嵌入式实时操作系统


uC/OS是美国的一款RTOS,发布于1992年。2001年,北航的邵贝贝教授第一次将有关uC/OS的书籍翻译成中文,该书出版后获得了大量好评,当时该书遇上了“嵌入式系统开发”风口,大量的高校学生开始学习嵌入式系统,将该书作为学习嵌入式操作系统的入门书籍,将学习的内容带入各类项目和产品后,它的特点才渐渐崭露头角。在2010年以前,uC/OS一直是国内大多企业的首选RTOS。2010年以后,开源免费的RTOS开始流行,而uC/OS本身的商业收费策略一直未能及时调整,导致很多厂商转而选择开源免费的操作系统,如FreeRTOS、RT-Thread。

FreeRTOS诞生于2003年,按照开源、免费的策略发布,可用于任何商业和非商业场合。2004年,英国的ARM公司推出第一款基于ARMv7-M架构的Cortex-M3 IP核,主打高性价比的MCU市场,随后美国德州仪器公司推出了第一款基于Cortex-M3内核的MCU,接下来意法半导体、恩智浦、飞思卡尔、爱特梅尔等欧美厂商相继推出了基于Cortex-M内核的MCU,出于性价比的考虑,这些厂商都选择了FreeRTOS作为芯片默认使用的嵌入式操作系统,趁着这波热潮,FreeRTOS迅速崛起,在国内外流行开来。

RT-Thread是国内的一款嵌入式实时操作系统,诞生于2006年,许可证类似FreeRTOS,以开源、免费的方式进行发布。与FreeRTOS和uC/OS不同的是,RT-Thread自创建之初的定位就不仅是一个RTOS内核,而是包含网络、文件系统、GUI界面等组件的中间件平台,它秉承开源、免费的思想,积聚吸收社区的力量来不断发展壮大。经过十多年的积淀,RT-Thread已经成为一款知名度较高、口碑极佳、高度稳定可靠的实时操作系统。RT-Thread支持市面上所有的主流编译工具,如IAR、GCC、Keil等;在硬件支持方面,它完成了超过50款MCU芯片和所有主流CPU架构上的移植工作,包括ARM、MIPS、C-Sky、Xtensa、Andes与RISC-V等。在行业应用上,因为RT-Thread的高可靠性和组件丰富等特点,它被广泛应用于安防、医疗、新能源、车载、北斗导航以及消费电子等众多行业。

......

以上内容没看够,偷偷告诉你,本文节选自机械工业出版社华章公司的书籍《嵌入式实时操作系统:RT-Thread设计与实现》的部分精华。

这是一本有关完全自主知识产权 RT-Thread 系统的设计与实现;

十年磨一剑;

由 RT-Thread 创始团队联合撰写;

深入剖析了嵌入式操作系统的原理;

大幅度降低了物联网开发门槛;

为整个行业带来了巨大的价值!

640?wx_fmt=png

适读人群 :

  1. 所有使用C/C++进行编程的开发人员

  2. 高校计算机/电子/通信类专业学生

  3. 嵌入式/物联网工程师

  4. 电子工程师

目前,针对此书,

CSDN联合机械工业出版社华章公司

推出限时 7.8 折的优惠活动,

扫描下方二维码,即可订阅哦!

640?wx_fmt=png

点击阅读原文,秒购《嵌入式实时操作系统:RT-Thread设计与实现》↓↓↓

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐