码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-15 09:23:48      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

    前面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,欢迎关注。


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

标签:

原文地址:http://blog.csdn.net/djyos/article/details/46494815

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!