沈建华
摘要:结合作者多年嵌入式系统和物联网应用开发与实践,探讨了物联网给嵌入式系统带来的影响,物联网操作系统 的技术、产品化发展思路和建议,以及我国在物联网操作系统方面的机遇和挑战。
关键词:RTOS:IoT OS;技术:产品化:机遇
1 嵌入式系统与RTOS
很多嵌入式应用都是基于微控制器(MCU/单片机)的小系统,其中大部分也不使用OS,稍微复杂一点的应用会考虑用一个RTOS,如¨C/OS、MDK中的RTX、FreeRTOS等,它们基本上只是一个任务管理器,也是操作系统内核部分。因为早期的嵌入式系统,应用相对来说比较简单,主要是采集和控制,涉及到数据多一点、要和外部交互的,可能会用一个文件系统(如FAT文件系统)或GUI,涉及到网络应用就加个TCP/IP。很多RTOS是开源的,没有统一标准的API,应用程序要在不同的硬件和RTOS上移植是很困难的,一般都要从底层修改做到应用层。MCU有4位机、8位机、1 6位机、32位机,系统可为有RTOS或无RTOS,RTOS也非常多,开发也没有应用程序的基本框架,加上应用的多样性,传统嵌入式系统开发效率是非常低的。所以很多年前我曾说过:如果说Android开发是碎片化严重,那嵌入式开发就是粉末化的。这种情况对应到PC机或整个计算机发展史上去看的话,目前嵌入式系统的开发就像上世纪六、七十年代的计算机应用开发,每一个新硬件出来,硬件软件都是不通用、不兼容的,非常散乱。但后来PC和移动应用为什么发展这么快?就是标准化问题。物联网给嵌入式系统带来了巨大的机遇,但开发平台、开发工具的逐步标准化是必经之路。
2 物联网与IoT OS
嵌入式系统开发的“散乱”问题,物联网有机会来改变。凡是和互联网相关的应用,发展速度都很快。从某种角度上说,物联网应用系统也可看作是嵌入式系统的网络应用,因为物联网系统中的“物”,基本上都是各种嵌入式设备。在20多年前有一句话,叫“计算机就是网络,网络就是计算机”,现在来看还是非常正确的。嵌入式系统放到物联网背景上来看也是类似的,也许再过个十年二十年,一个不联网的嵌入式设备也没什么用了。嵌入式小设备要联网,还要方便、快速地開发各种物联网应用,并考虑很多安全问题、系统效率问题,使用传统的RTOS加个网络协议栈是不够的。无论从哪个角度来看,使用一个合适的、相对标准化的物联网OS (IoT OS)是更好的选择。就像移动应用开发会选择Android系统,而不是Linux系统。
3 IoT OS技术
大部分物联网设备的“物”,都是基于MCU的小设备。计算机技术发展到今天,针对MCU的RTOS的基本功能、技术都是成熟的。不同RTOS的内核和组件各自有一些小的特点,比如内核调度是用什么算法,任务堆栈怎么处理,任务之间的通信方式、支持的任务状态和任务数等,但是这些已经不重要,因为硬件性能提升很多,应用对这些特点基本无感知了。随着IoT应用系统的复杂化,应用更多关注的是“端到云”整个系统的快速实现和稳定,就像现在移动应用APP开发者并不会去关心Android里面的底层任务调度算法一样。IoT OS更多的要从整体系统架构上思考,而不是在某个技术细节上。有关OS内核与具体处理器的高效融合技术等,可以在处理器体系结构中去研究和实现,并可作为IoT OS中一个与处理器特征相关的组件。
基于MCU的物联网应用需要一个操作系统(IoTOS),它是一个以传统操作系统(RTOS为主)为基础,针对物联网应用特征,扩充了必需的连接、安全、应用协议、应用框架等组件、软硬件协同的功耗管理等组件,同时应该支持多种主流的MCU和SoC芯片,以及国内外主流云平台接入协议的系统软件。
IoT OS也一定是一个“端一云”一体化的OS。如果仅局限在“端”这个层面,那它一定不是一个完整的IoT OS。只有“端一云”深度结合,才能在整个系统层面做到高效、安全。
与IoT OS相关的开发工具、编程语言,也会有变革。现在流行的开发环境,例如JS、Java,Python等,都是有时代特征和应用特点的,对IoT应用开发都不太合适。所以,整一个Java虚拟机放进MCU,想用Java来开发基于MCU的物联网应用或做个Demo验证,可能更多也是技术人员的想法,并不具有普遍实际意义。
总之,作为一个IoT OS,技术重点不是OS内核,而是“端-云”一体化的系统架构。
4
IoT OS产品化
技术是无边界的、是发散的,技术必需与应用需求(场景)结合,输出了产品,技术才发挥出价值。IoT OS的用户是开发者,要被广大开发者所采用loTOS需要产品化。
第一,要有产品思维,要站在用户、开发者的角度考虑问题,尽量保持OS接口的一致性,不断地完善、抽象、迭代。
第二,对新功能、新技术要有一个系统性的规划,也就是产品定义。做好这个IoT OS的产品定义,需要对物联网应用开发方式、开发者需求、系统架构等很多方面有充分的理解,不仅要有丰富的经验,而且要有系统性和前瞻性。
第三,OS产品是用出来的。不要为出一个而去开发一个OS,OS一定是为了适应不同时期的应用需求,从简单到复杂、从不稳定到稳定,是应用拉动技术、不断开发完善出来的。应用需求的激增,使大量开发者寻找易用的开发环境,这就是OS的迭代之路。
另外,作为一个产品,外围的东西也很重要——工具、文档。这方面我们中国的公司以往受制于现实条件,做的都不好。但是作为一个产品,特别是要推向全球的产品,必须把这些配套外围做好。
5 IoTOS商业化
很多OS是科研院所、技术人员个人所为,可以采用一些免授权协议,不太考虑商业问题。但作为一个企业,不谈商务是不行的。任何一个OS早期是没有商业模式的,嵌入式OS的公司也都是很小的公司,更不要说在中国这样不太认可软件价值的环境下。目前,巨头纷纷入场,IoT发展快、应用离散、产品上市时间要求很高,作为一个企业,首先要生存下去。没有商业模式、怎么活下去?所以作为企业,还得想其他的商业模式。
IoT OS要迭代、收敛的话,也需要生态支持。需要芯片厂商、IDH、开发者共同建设,但是这个生态建设的过程是非常漫长的。这个过程谁能够耗得起?要兼顾到公司自己的生存发展和生态建设,这对小公司来说是一件非常难以平衡的事情,商业化的路就更长了。Android到现在可能有一些商业模式了,毕竟大家都离不开它了。OS商业化过程漫长、需要很大的投入,肯定不是短期的商业行为。那么在这个过程当中该怎么办?可能还得借助所谓的互联网思维, “羊毛出在猪身上”,在这个点上没有出口,但总要找到一个出口。
未来的物联网系统可能就是:Al+软件+硬件。
Al是能力,但对绝大部分物联网应用开发而言,用好Al就可以了,云平台公司、芯片公司会提供这种能力。硬件是载体,各种技术、算法做的再好,终究都离不开硬件。软件是“粘合剂”,把各种硬件、Al能力整合在一起,实现各种具体IoT应用。有一句话叫“软件定义世界”,软件是核心竞争力。有了Al、有了硬件,最终用户的应用、服务都得靠软件去实现。如何帮助客户快速开发IoT应用软件? IoT OS是一个较好的平台。不断从各种应用中做共性抽象、丰富OS的内涵,这才是IoT OS发展的方向和路径。只有通过这样的方式,才可能慢慢形成一个真正的IoT OS。
6 结论
应用拉动技术,技术推动应用发展。中国在物联网OS这个点上是有很大机会的,因为物联网时代目前是中国在引领,应用需求很大,会极大地拉动相关技术,包括IoT OS的发展。IoT OS是“端一云”一体化的产品,不断迭代,市场选择,最后可能成为事实标准。必需要有用户思维,OS的用户是开发者,所以需要充分了解物联网应用开发者的需求和感受。IoT OS商业化之路漫长,企业需要用互联网思维来考虑商业模式。
参考文献:
[1]何小庆物联网操作系统研究与思考[J].电子产品世界.2018(1):27-31