物联网作业系统( 二 )


物联网作业系统

文章插图
物联网作业系统与传统的个人计算机作业系统和智慧型手机类作业系统不同 , 它具备物联网套用领域内的一些独特特点 , 现说明如下 。特点核心的特点核心尺寸伸缩性强 , 能够适应不同配置的硬体平台 。比如 , 一个极端的情况下 , 核心尺寸必须维持在10K以内 , 以支撑记忆体和CPU性能都很受限的感测器 , 这时候核心具备基本的任务调度和通信功能即可 。在另外一个极端的情况下 , 核心必须具备完善的执行绪调度、记忆体管理、本地存储、複杂的网路协定、图形用户界面等功能 , 以满足高配置的智慧型物联网终端的要求 。这时候的核心尺寸 , 不可避免的会大大增加 , 可以达到几百K , 甚至M级 。这种核心尺寸的伸缩性 , 可以通过两个层面的措施来实现:重新编译和二进制模组选择载入 。重新编译措施很简单 , 只需要根据不同的套用目标 , 选择所需的功能模组 , 然后对核心进行重新编译即可 。这个措施套用于核心定製非常深入的情况下 , 比如要求核心的尺寸达到10K以下的场合 。而二进制模组选择载入 , 则用在对核心定製不是很深入的情况 。这时候维持一个作业系统配置档案 , 档案里列举了作业系统需要载入的所有二进制模组 。在核心初始化完成后 , 会根据配置档案 , 载入所需的二进制模组 。这需要终端设备要有外部存储器(比如硬碟、Flash等) , 以存储要载入的二进制模组;核心的实时性必须足够强 , 以满足关键套用的需要 。大多数的物联网设备 , 要求作业系统核心要具备实时性 , 因为很多的关键性动作 , 必须在有限的时间内完成 , 否则将失去意义 。核心的实时性包涵很多层面的意思 , 首先是中断回响的实时性 , 一旦外部中断发生 , 作业系统必须在足够短的时间内回响中断并做出处理 。其次是执行绪或任务调度的实时性 , 一旦任务或执行绪所需的资源或进一步运行的条件準备就绪 , 必须能够马上得到调度 。显然 , 基于非抢占式调度方式的核心很难满足这些实时性要求;核心架构可扩展性强 。物联网作业系统的核心 , 应该设计成一个框架 , 这个框架定义了一些接口和规範 , 只要遵循这些接口和规範 , 就可以很容易的在作业系统核心上增加新的功能的新的硬体支持 。因为物联网的套用环境具备广谱特性 , 要求作业系统必须能够扩展以适应新的套用环境 。核心应该有一个基于汇流排或树结构的设备管理机制 , 可以动态载入设备驱动程式或其它核心模组 。同时核心应该具备外部二进制模组或应用程式的动态载入功能 , 这些应用程式存储在外部介质上 , 这样就无需修改核心 , 只需要开发新的应用程式 , 就可满足特定的行业需求; 核心应足够安全和可靠 。可靠性就不用说了 , 物联网套用环境具备自动化程度高、人为干预少的特点 , 这要求核心必须足够可靠 , 以支撑长时间的独立运行 。安全对物联网来说更加关键 , 甚至关係到国家命脉 。比如一个不安全的核心被套用到国家电网控制当中 , 一旦被外部侵入 , 造成的影响将无法估量 。为了加强安全性 , 核心应支持记忆体保护(VMM等机制)、异常管理等机制 , 以在必要时隔离错误的代码 。另外一个安全策略 , 就是不开放原始码 , 或者不开放关键部分的核心原始码 。不公开原始码只是一种安全策略 , 并不代表不能免费适用核心;节能省电 , 以支持足够的电源续航能力 。作业系统核心应该在CPU空闲的时候 , 降低CPU运行频率 , 或乾脆关闭CPU 。对于周边设备 , 也应该实时判断其运行状态 , 一旦进入空闲状态 , 则切换到省电模式 。同时 , 作业系统核心应最大程度的降低中断髮生频率 , 比如在不影响实时性的情况下 , 把系统的时钟频率调到最低 , 以最大可能的节约电源 。外围模组的特点外围模组指为了适应物联网的套用特点 , 作业系统应该具备的一些功能特徵 , 比如远程维护和升级等 。同时也指为了扩展物联网作业系统核心的功能範围 , 而开发的一些功能模组 , 比如档案系统、网路协定栈等 。物联网作业系统的外围模组(或外围功能)应该至少具备下列这些:支持作业系统核心、设备驱动程式或应用程式等的远程升级 。远程升级是物联网作业系统的最基本特徵 , 这个特性可大大降低维护成本 。远程升级完成后 , 原有的设备配置和数据能够得以继续使用 。即使在升级失败的情况下 , 作业系统也应该能够恢复原有的运行状态 。远程升级和维护是支持物联网作业系统大规模部署的主要措施之一;支持常用的档案系统和外部存储 , 比如支持FAT32/NTFS/DCFS等档案系统 , 支持硬碟、USB stick、Flash、ROM等常用存储设备 。在网路连线中断的情况下 , 外部存储功能会发挥重要作用 。比如可以临时存储採集到的数据 , 再网路恢复后再上传到数据中心 。但档案系统和存储驱动的代码 , 要与作业系统核心代码有效分离 , 能够做到非常容易的裁剪;支持远程配置、远程诊断、远程管理等维护功能 。这里不仅仅包涵常见的远程操作特性 , 比如远程修改设备参数、远程查看运行信息等 。还应该包涵更深层面的远程操作 , 比如可以远程查看作业系统核心的状态 , 远程调试执行绪或任务 , 异常时的远程dump核心状态等功能 。这些功能不仅仅需要外围套用的支持 , 更需要核心的天然支持;支持完善的网路功能 。物联网作业系统必须支持完善的TCP/IP协定栈 , 包括对IPv4和IPv6的同时支持 。这个协定栈要具备灵活的伸缩性 , 以适应裁剪需要 。比如可以通过裁剪 , 使得协定栈只支持IP/UDP等协定功能 , 以降低代码尺寸 。同时也支持丰富的IP协定族 , 比如Telnet/FTP/IPSec/SCTP等协定 , 以适用智慧型终端和高安全可靠的套用场合;对物联网常用的无线通信功能要内置支持 。比如支持GPRS/3G/HSPA/4G等公共网路的无线通信功能 , 同时要支持Zigbee/NFC/RFID等近场通信功能 , 支持WLAN/Ethernet等桌面网路接口功能 。这些不同的协定之间 , 要能够相互转换 , 能够把从一种协定获取到的数据报文 , 转换成为另外一种协定的报文传送出去 。除此之外 , 还应支持简讯息的接收和传送、语音通信、视频通信等功能; 内置支持XML档案解析功能 。物联网时代 , 不同行业之间 , 甚至相同行业的不同领域之间 , 会存在严重的信息共享壁垒 。而XML格式的数据共享可以打破这个壁垒 , 因此XML标準在物联网领域会得到更广泛的套用 。物联网作业系统要内置对XML解析的支持 , 所有作业系统的配置数据 , 统一用XML格式进行存储 。同时也可对行业自行定义的XML格式进行解析 , 以完成行业转换功能;支持完善的GUI功能 。图形用户界面一般套用于物联网的智慧型终端中 , 完成用户和设备的互动 。GUI应该定义一个完整的框架 , 以方便图形功能的扩展 。同时应该实现常用的用户界面元素 , 比如文本框、按钮、列表等 。另外 , GUI模组应该与作业系统核心分离 , 最好支持二进制的动态载入功能 , 即作业系统核心根据应用程式需要 , 动态载入或卸载GUI模组 。GUI模组的效率要足够高 , 从用户输入确认 , 到具体的动作开始执行之间的时间(可以叫做click-launch时间)要足够短 , 不能出现用户点击了确定、但任务的执行却等待很长时间的情况;支持从外部存储介质中动态载入应用程式 。物联网作业系统应提供一组API , 供不同应用程式调用 , 而且这一组API应该根据作业系统所载入的外围模组实时变化 。比如在载入了GUI模组的情况下 , 需要提供GUI操作的系统调用 , 但是在没有GUI模组的情况下 , 就不应该提供GUI功能调用 。同时作业系统、GUI等外围模组、应用程式模组应该二进制分离 , 作业系统能够动态的从外部存储介质上按需载入应用程式 。这样的一种结构 , 就使得整个作业系统具备强大的扩展能力 。作业系统核心和外围模组(GUI、网路等)提供基础支持 , 而各种各样的行业套用 , 通过应用程式来实现 。最后在软体发布的时候 , 只发布作业系统核心、所需的外围模组、应用程式模组即可 。集成开发环境的特点集成开发环境是构筑行业套用的关键工具 , 物联网作业系统必须提供方便灵活的开发工具 , 以开发出适合行业套用的应用程式 。开发环境必须足够成熟并得到广泛适用 , 以降低应用程式的上市时间(TTM) 。集成开发环境必须具备如下特点:物联网作业系统要提供丰富灵活的API , 供程式设计师调用 , 这组API应该能够支持多种语言 , 比如既支持C/C++ , 也支持Java等程式设计语言;最好充分利用已有的集成开发环境 。比如可以利用Eclipse、Visual Studio等集成开发环境 , 这些集成开发工具具备广泛的套用基础 , 可以在Internet上直接获得良好的技术支持;除配套的集成开发环境外 , 还应定义和实现一种紧凑的应用程式格式(类似Windows的PE格式) , 以适用物联网的特殊需要 。通过对集成开发环境进行定製 , 使得集成开发环境生成的代码 , 可以遵循这种格式;要提供一组工具 , 方便应用程式的开发和调试 。比如提供应用程式下载工具、远程调试工具等 , 支撑整个开发过程 。可以看出 , 上述物联网作业系统核心、外围模组、套用开发环境等 , 都是支撑平台 , 支撑更上一层的行业套用 。行业套用才是最终产生生产力的软体 , 但是物联网作业系统是行业套用得以茁壮生长和长期有效生存的基础 , 只有具备了强大灵活的物联网作业系统 , 物联网这棵大树才能结出丰硕的果实 。典型实现案例物联网作业系统是一个通用的概念 , 与“嵌入式作业系统”一样 , 是一类作业系统的统称 。其中最典型的一个例子 , 就是HelloX作业系统 。这是一个自2004年就开始开发的作业系统 , 原名为“Hello China作业系统“ , 后来为了更加聚焦物联网套用 , 更名为”HelloX作业系统“ 。该作业系统专注于物联网套用 , 完全符合物联网作业系统的上述特点 , 代码完全开源 , 同时具备如下主要特点: 完全自主智慧财产权的核心HelloX作业系统的核心基于面形对象思想进行开发 , 具备完全的自主智慧财产权 , 代码完全开放 。这与基于成熟作业系统核心进行定製开发的做法不同 , 这种一开始就瞄準物联网特点 , 从头开始全新定製开发的做法 , 才能确保作业系统完全满足物联网的套用需求 。而基于已有成熟核心进行定製或二次开发的模式 , 则由于原有核心的开发理念不同 , 无法完全满足物联网套用特徵 。同时 , 未来的开发计画还必须要匹配原有核心的版本计画 , 这两者之间的割裂会严重阻碍物联网作业系统的发展 。因此 , 具备完全智慧财产权的核心 , 对物联网作业系统的开发异常重要;具备高度的可伸缩性和丰富的外围功能模组HelloX作业系统核心基于模组化和面向对象思想开发 , 可以通过定製 , 来匹配各种硬体的需求 。比如 , 可以通过修改配置档案 , 把核心尺寸控制在10K级别 , 满足非常低端的硬体需求 。同时可以通过添加丰富的外围组件 , 满足功能丰富的高端硬体配置需求 。目前来说 , HelloX作业系统除尺寸可伸缩的核心外 , 还具备TCP/IP协定栈 , GUI , Java虚拟机 , 档案系统 , 乙太网管理框架 , POSIX API , WLAN/蓝牙/串口通信支持等外围模组 , 并根据需要 , 增加更加丰富的外围模组 。这些外围模组可静态或动态载入和卸载;完善的硬体建模功能硬体建模能力 , 是物联网作业系统的核心能力之一 。通过硬体建模 , 为上层套用禁止硬体差异 , 提供统一的运行期API , 是构筑物联网良好生态环境的基础 。HelloX作业系统支持完善的JAVA虚拟机 , 基于Java语言对不同的底层硬体进行建模 , 同时支持模型的扩展性 。除此之外 , HelloX还具备很多其它的满足物联网本身特徵的特性 , 比如安全和加密 , 统一配置和管理框架等 , 在此不做详细描述 。