“全员编程,广泛嵌入”(九)—— 现代嵌入式操作系统模型

前面10来篇文章,啰嗦了一大通后,"全员编程,广泛嵌入"时代的操作系统模型,也逐步清晰,呼之欲出了。本质上来说,无论什么时代的操作系统,都有其基本内涵和外延构成。内涵就是由内核构成,是一个基本稳定的选择题,例如是否支持mmu,是否支持多进程等。对于需求的变化和发展,则通过外延的变化来适应。其内涵和外延,共同组成了现代操作系统。

我们需要开发新操作系统么?答案是肯定的,没有听说过有了格力空调,美的空调就不需要了。

我们需要从新开发操作系统内核么?不一定!

对于操作系统来说,有一个好内核永远都是最重要的,但是,最重要的事情,并不一定是工作重点,为什么呢?操作系统理论早在50年前就成熟了,嵌入式操作系统内核,也在几十年前就成熟了,选一个合适的内核,还是自己开发内核,需要仔细斟酌。据内部人士消息,华为的liteOS,就是选用成熟的t-kernel内核。

如果你有足够的创新,为用户提供别人提供不了的价值,那么,你可以自己做一个内核,像djyos那样。否则,使用成熟内核就可以了,像华为的liteOS那样。操作系统开发,应该把主要精力放在整合操作系统外延特性上,以适应时代的发展,营造一个自主可控的应用生态系统。

下图是"全员编程,广泛嵌入"时代的djyos操作系统模型(部分尚未实现):

djyos内核特征

这里介绍的是djyos内核突出的优点,其他操作系统内核都有的性能,就不再介绍了。

实时性

实时性是rtos永恒的话题,硬件能力的发展,软件完全不变的情况下,客观上提升了rtos的实时性,但是rtos的日益复杂化,使得上下文需要保存的内容越来越多,又降低了实时性。即使是消费品类的智能硬件,也有相当部分实时性要求相当高,例如像飞行器、机器人这样的多姿态运动控制。而在工业控制领域,就更不用说了,有兴趣的了解下金切削和纺织机的数控系统,对实时性、抖动要求都非常高,要达到几个微秒甚至亚微秒。一旦在实时性方面出问题,就会导致撞刀、撞机床、撞丝杠等事故,千万元的设备,瞬间没了。长期以来,对于超高实时性的控制设备,都是裸跑的,其实这些设备并不是没有跑操作系统的需求,而是没有能满足要求的操作系统。Djyos能实现裸跑级别的实时性,详见这篇文章:http://www.djyos.com/?page_id=43

安全可靠性

虽然安全性和可靠性是两个概念,但他们是有联系的,这里暂且撸在一起讲。

谈到操作系统的可靠性,许多人会把焦点集中在操作系统本身是否可靠稳定,在运行中是否会出错等。可是,你看到过哪个品牌汽车,谈安全时是以汽车本身安全可靠而不是以乘客安全为重的?djyos除确保自身可靠外,更加注重用户应用程序的正确和设备的安全可靠性,主要体现在以下几个方面:

1、 简洁的事件调度器,体现高可靠设备"简单可靠"的理念。虽然实现上很简洁,但功能并不简单,比传统线程调度更加强大,实时性更高。

2、 明确易用的中断编程,降低用户自己犯错的机会。

3、 深思熟虑的api,帮助用户避免写出模块间高度耦合的程序,间接提高可靠性。

4、 完善的异常捕捉机制,以及看门狗支持。

5、 极高的安全性,就算系统崩溃重启,也能将失控时间控制在us级以内。

关于安全性和可靠性,本文不打算详细论述,有兴趣的同学,可以看看我写的这些文章:

http://www.djyos.com/?page_id=39

http://blog.csdn.net/djyos/article/details/45695217

易用性

在"全员编程,广泛嵌入"的时代,嵌入式工程师队伍空前壮大,对于这些半专业的程序员来说,简单易用的开发环境,至关重要。消费品智能硬件,已经向JavaScript、Python等脚本编程发展了。而工业应用,还基本上是C,无论是从性能上,还是从可靠性上,都不信任复杂的脚本解析器。

用c语言进行事件触发编程,天生就比用线程编程简单,而传统的嵌入式事件触发编程,基本上是一个状态机程序,并不是真正的并行、解耦的运行平台。难得的是,djyos使事件触发编程比线程编程更加高效,不同的事件处理,是一个真正的并行运算。

其他

Djyos还拥有实时的内存分配,不但允许malloc在ISR中执行,其执行时间是O(1)级的。

比epoll还高效的多路复用,帮助你高效实现网络服务。

适应从8~64位机,不需要修改代码。

独特的看门狗机制,可帮助用户降低硬件成本。

天生具有高效的线程池功能。

资源体系,既统一管理应用中的所有资源,有能帮助用户解耦组件。

Timer组件,提供us级定时。

Djybus组件,统一管理总线设备。

操作系统外延特性

与时俱进地,操作系统通过其不同的外延,来适应时代的需要。一般来说,行业内广泛需要的功能和特征,就可以划入操作系统的外延范畴。在"全员编程,广泛嵌入"时代,典型应用是物联网,包括消费品物联网和工业物联网,核心问题,是"连接、区别、识别、沟通、操作、安全",操作系统的外延,需要结合这6个方面来进行。如这篇博文分析,:http://blog.csdn.net/djyos/article/details/46455851。目前,操作系统提供的服务,主要集中在"连接"方面,"区别"方面,IPV6虽然有点不便,但总是有奔头,"识别"方面呢,还暂无良策,用远程界面能解决"物与人"之间沟通的问题。

连接能力

1、 接入公网的能力,虽然不是所有智能设备都需要接入公网,但操作系统必须具备接入公网的能力,且必须支持IPV6接入。

2、 适用各种介质组建局域网的能力,现场若干设备组成一个局域网络,是物联网设备最常见的联网方式,操作系统应该支持ZigBee、蓝牙、WiFi等无线联网协议;对于高可靠的工业应用,还应该支持Modbus、Canopen、ethercat等。

3、 支持P2P,C/S,P2P+C/S混合,三种通信方式。

4、 统一的消息服务,如这篇博文http://blog.csdn.net/djyos/article/details/46363593所述,物联网中所传递的信息时无法标准化的,但是,数据包的格式(即消息格式)是可以标准化的。既然不能确保物体间互相"听得懂",全网使用相同的消息协议,至少能确保互相"听得见"。

沟通能力

在物联网上,"物与物"之间的沟通,还没有标准的解决方案,还处于一事一议的状况,而"物与人"之间的沟通,用远程界面可以解决。远程界面可用远程桌面或者HTML5实现,用于解决物与人之间的沟通问题,分别有其适用场合,这在本人博客
blog.csdn.net/djyos 上已经有了广泛论述,这里不再重复了。这里需要说明的是,工业控制方面,远程桌面的作用更大:

1、 工业设备秉承"简单可靠"的原则,不喜欢用复杂的webserver。工业设备也不喜欢液晶屏,液晶显示器的可靠性较低,降低了设备的整体可靠性;液晶显示器开这么大一个窗口,直接提高了设备的EMC和EMI成本。

2、 工业设备还可能安装在有人身危险的区域,人员无法接近,当然也无法查看显示器了。工业智能硬件要求生产厂家提供更多的维护,如何能够不去现场却能看到现场的一切,也要依赖远程桌面。

3、 工业液晶屏很贵,差不多是民用品的5~10倍价格,工业设备往往成批安装,少数几个人维护。不安装显示屏,而是给少数维护人员配置手持显示设备,用远程桌面显示,大大节省成本,又方便使用。因为手持终端只是显示器而已,可以用手机实现,因为即使手机出现不可靠的情况,也无损被控设备的可靠性。

4、 通过远程桌面,利于厂家远程维护设备,无须用户现场操作和查看设备输出,厂家就能拿到设备运行的第一手资料,比由用户在现场观察,用电话或邮件传递信息,准确度更高,资料更全面,而且还可以做一些不希望外部看到的操作。

广泛适用性

在"全员编程,广泛嵌入"的时代,嵌入式操作系统的使用场合大大扩展,在"全员编程,广泛嵌入"的时代,嵌入式操作系统的应用场景至少以下几大类:

1、 低端智能硬件。

2、 高端智能硬件。

3、 高可靠工业应用。

4、 手持设备移动,通常是手机。

Djyos凭借高度且简易的可裁剪性,同时适应几类设备。

一个企业内,就可能有超低端、低端、中端、高端的硬件平台,产品的复杂程度也各不相同,但一个企业内的产品,往往有联系,会公用一些组件。如果这些产品,能够用同一个操作系统、同一套开发工具、同一种编程语言下开发,同一套代码,应用于各种层次的设备中,无疑对降低企业工作量,节约人工,以最广泛的重用,使代码在产品快速迭代中迅速稳定,都非常有帮助。

同一个操作系统适应所有平台,意味着操作系统应该有特别出色的可裁剪性,仅仅局限于可以自由增加和减少组件是不够的。更重要的是,djyos的重要组件可以无区别地适用于不同场合:

1、 djyos是自裁剪的,你只要不去调用某个组件的初始化函数,该组件就被裁掉了。

2、 djyos的djygui组件,弹性极大,既可以在只有几十K内存,连framebuffer都不够的屌丝平台上适用,又可以在拥有数百M以上内存、带硬件加速的高大上平台上运行,用户编程方法一致,功能一致(只是性能不一样),都可以实现远程桌面。

3、 djyos的TCPIP、filesystem、IO系统,都有上述特性。

编程环境

在"全员编程,广泛嵌入"时代,非专业嵌入式程序员大量涌入,再让他们掌握传统的、高度深入的嵌入式编程,已经不太现实了。现代操作系统,需要有一个友好的、易于掌握的编程环境,主要是通过编程语言、api封装、开发工具来体现的。

1、 "脚本+C语言"混合编程,是未来智能硬件发展的潮流,JavaScript、Python、lua等,都是当前非常热门的脚本编程语言,操作系统应该予以支持。对于部分性能要求高的功能,例如飞控,须能使用c语言进行优化,须实现c语言和脚本语言的无缝接口。

2、 对于工业物联网用户,需要有一个简单易用的C语言api,djyos的事件触发式编程较传统的线程控制编程更加简单易学,符合人类自然思维。在易用性上,介乎于脚本编程和传统线程编程之间,而在效率和稳定可靠方面,也优于传统线程编程。

3、 物联网使得智能硬件已经不是独立运行了,整个系统的一部分功能,是在手持设备、云服务器上实现的。在智能硬件和手持设备等的上面,需要提供一致的开发平台。Djyos同时适用于多种类型平台的特性,非常适合。

其他

1、 数据库能力,显而易见,有不少智能硬件需要大量数据的存储和检索,操作系统支持数据库跑不了。

2、 信息安全支持,只要连入网络的设备,信息安全是跑不掉的话题。

3、 低功耗管理,物联网中有许多电池供电或者太阳能供电设备,低功耗必须重视。

4、 云服务器环境,这是生态系统相关的了。物联网中的设备,并不是孤立的,C/S连接、大数据分析等,都需要一个云端服务。

主页:www.djyos.com

djyos是国内唯一由大企业出资开发的、类bsd许可证发布的,功能完整的RTOS,欢迎关注。

时间: 2024-12-10 03:28:57

“全员编程,广泛嵌入”(九)—— 现代嵌入式操作系统模型的相关文章

“全员编程,广泛嵌入”(六)—— 物联网时代(四)

物联网操作系统是个伪命题,很多人炒物联网概念,炒物联网操作系统,其实,物联网操作系统,与其说是一个技术概念,还不如说是一个商业概念.这也无可厚非,你不炒,老百姓怎么知道物联网,投资人怎么知道物联网,运营商怎么知道物联网呢?但这就把嵌入式开发者弄许云里雾里,不知道物联网操作系统是何方神圣,有什么特点,怎么样才算物联网操作系统.待我把它的皮剥掉,露出忽悠过的本质. 物联网的核心,在于"连接"和"智能",进而引申出"协同"的概念,云端和本地端协同,本地

“全员编程,广泛嵌入”(七)—— 智能硬件

系列文章已经写到第七篇了,终于终于,当前业界最热们.最被投资界追捧的----智能硬件出现了.智能水杯.智能手表.智能手环.只等鞋子.智能球拍.......不胜枚举,产品形态五花八门,应用程序也五花八门,操作系统基础都差不多,智能硬件提出了新的需求,开发平台就要做相应的调整,本篇继续分析只能硬件相关的开发平台需求. 上一篇提到,物联网时代的RTOS须提供脚本编程,有些网友不明白,MCU上能用脚本编程么?本篇也一并解答这个问题. 智能硬件是物联网时代的产物,也是物联网的必然发展结果,智能硬件和物联网

嵌入式操作系统与物联网演进之路

文/屠敏 物联网是新一代信息技术的重要组成部分,回顾其发展,其中不得不提的必然是嵌入式系统.传统的嵌入式系统与互联网的发展衍生出物联网,而在如今的物联网热潮之下,嵌入式系统也面临着全新的机遇与挑战.那么,两者的碰撞融合究竟会带来怎样的火花?对于传统的嵌入式开发者,我们应该如何改变应对新格局?在此我们采访了著名的嵌入式系统专家何小庆,跟他一起探索嵌入式操作系统与物联网演进之路. 何小庆,著名的嵌入式系统专家,国内最早涉足嵌入式 OS 者之一,创办了北京麦克泰软件技术有限公司,有 30 年嵌入式技术

如何快速理解一个全新的嵌入式操作系统(续)

---基于TI CC254X OSAL的分析 当工具链配置完成后,SourceInsight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 上一篇<如何快速理解一个全新的嵌入式操作系统>我们已经分析了如何快速理解OSAL的任务调度和任务间通信(其实OSAL只是酷似多任务操作系统的单任务系统),再理解好OASL的消息产生和处理过程,我们就能够进行快速开发了. 一.消息的来源 嵌入式系统的消息包括两种,一是系统消息,包括低电.热插拔等,由系统

什么是嵌入式系统?什么是嵌入式操作系统?

嵌入式系统: 嵌入式系统是指计算机作为某个专用系统中的一个部件而存在,嵌入到更大的.专用的系统中的计算机系统,是一种以应用为中心.以计算机技术为基础.软件硬件可裁剪,功能.可靠性.成本.体积.功耗有严格要求的专用计算机系统. 嵌入式操作系统: 嵌入式操作系统是一种用途广泛的系统软件. 补充 嵌入式系统与普通计算机系统的区别: 1.嵌入式系统的资源一般是专用系统,而普通计算机系统是通用的计算平台. 2.嵌入式系统的资源比普通计算机系统少得多. 3.嵌入式系统软件故障带来的后果比普通计算机系统大得多

深圳嵌入式操作系统好吗

深圳嵌入式操作系统好吗?深圳凌阳教育嵌入式培训中心老师说,嵌入式计算机的真正发展是在微处理器问世之后.1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器Intel 4004,其后各厂家陆续推出了许多8位.16位的微处理器,包括Intel 8080/8085.8086,Motorola 的6800.68000,以及Zilog的Z80.Z8000等.以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表.医疗设备.机器人.家用电器等领域.微处理器的广泛应

RT-thread嵌入式操作系统相关的问题

面试中问到 RT-thread嵌入式操作系统相关的问题 RT-thread操作系统调度器的实现细节 RT-Thread中提供的线程调度器是基于优先级的全抢占式调度: 在系统中除了中断处理函数.调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身. 系统总共支持256个优先级(0 - 255,数值越小的优先级越高,0为最高优先级,255分配给空闲线程使用,一般用户不使用. 在一些资源比较紧张的系统中,可以根据实际情况选择只支持8个或32个优先级的系

C#编程总结(九)字符编码

C#编程总结(九)字符编码 相信大家一定遇到过乱码的问题,为什么会乱码呢?输出的数据怎么就跟输入的不一样呢? 最近在总结加密问题,也遇到了同样的困扰.所以今天来集中解决这个问题. 什么是字符? 字符是指计算机中使用的字母.数字.字和符号,包括:1.2.3.A.B.C.~!·#¥%……—*()——+等等. 字符集(Charset) 字符集(Charset)是一个系统支持的所有抽象字符的集合. 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等. 什么是字符编码? 字符编码(Ch

[C# 网络编程系列]专题九:实现类似QQ的即时通信程序

转自:http://www.cnblogs.com/zhili/archive/2012/09/23/2666987.html 引言: 前面专题中介绍了UDP.TCP和P2P编程,并且通过一些小的示例来让大家更好的理解它们的工作原理以及怎样.Net类库去实现它们的.为了让大家更好的理解我们平常中常见的软件QQ的工作原理,所以在本专题中将利用前面专题介绍的知识来实现一个类似QQ的聊天程序. 一.即时通信系统 在我们的生活中经常使用即时通信的软件,我们经常接触到的有:QQ.阿里旺旺.MSN等等.这些