ARM公司将在近日发布一款名为mbed OS的全新操作系统:它旨在弥合各类计算系统芯片之间的种种差异,从而帮助高层应用程序顺利与传感器以及其它装置实现交互——无论它们使用的芯片来自Atmel、Marvell、ST、Freescale、NXP还是其它同类厂商。
这款软件将在加利福尼亚州圣克拉拉市当地时间本周三上午举办的ARM TechCon 2014大会上正式得到披露,不过该产品尚未真正投放市场。虽然暂时还无法见识其庐山真面目,但我们已经掌握了以下相关信息。
它基本上由两部分构成:从底层角度看,mbed操作系统内核运行在小型传感设备的系统芯片当中:这款操作系统还提供驱动程序,能够与周边硬件进行交互并同外部环境实现沟通。程序员们能够编写出软件并将其直接运行在这款内核之上,而这部分代码将负责控制设备的运作方式。
而在作为另一半的堆栈方面,ARM则为我们带来了名为mbed Device Server的服务器端软件方案,能够运行在诸多大型x86或者ARM计算设备当中。该软件能够与各类高层应用程序相对接,例如网络后端以及个别物联装置; 它还允许用户以智能化方式管理多种软件,同时将其中部分作用不明显的部分从管理对象当中排除出去。
各类互联网连接网关——可以是智能手机、平板设备或者碗椀中的传感装置——都能通过短程通信设备(例如Wi-Fi或者蓝牙机制)与之进行通信,随后再将信息路由至mbed Device Server处。该服务器可以运行在云环境当中,也可以由本地设备负责充当。有条件允许的情况下,接入设备可以跳过网关阶段直接与该服务器相对接。总而言之,这是一套非常灵活的架构方案。
这套堆栈中的主要组成部分,特别是从底层角度来讲,源自ARM于2009年起即在推进的mbed社区:这里汇聚了规模庞大的资源与工具链,旨在利用C以及C++构建ARM单片机。根据我们掌握的情况,目前已经有超过七万名程序员加入到了mbed.org社区网站当中,并在为成千上万项目贡献自己的力量——现在由mbed代码支持的原型及开发项目超过三十个。
根据目前的情况看,ARM开始将所有要素汇聚在一起并加以整合,这样高层应用程序开发人员就能够更为便捷地为基于ARM架构的传感器与功能性部件提供原型设计方案——而这对于一套刚刚起步的架构平台而言可算是一种通行且定位良好的基础。
ARM方面的计划是利用开放标准,例如TLS以及DTLS之上的HTTP以及MQTT,为设备之间的通信流程乃至软件策划方案以安全方式交付数据。该软件支持Bluetooth Smart; 2G、3G、LTE以及CDMA手机网络; 谷歌Thread; Wi-Fi以及6LoWPAN。据我们所知,ARM并没有在其TLS加密机制当中使用开源库。
这套堆栈还隐藏了诸如设备可用性在内的多种特性:举例来说,高层服务器端软件可以发出命令以获取来自处于节电休眠模式的传感装置的数据,这部分信息将在对应设备被唤醒之后实现交付,并被传递至高层应用程序处。这种方式简化了该堆栈的顶层架构,能够有效帮助开发人员更快地编写代码并将成果发布给用户。
这条消息对于那些热衷于亲手利用汇编语言染指单片机编程工作的技术人员们而言也许有些令人沮丧,但mbed的核心实质在于尽可能让系统芯片设备所带来的困扰与混乱远离开发人员的视野——只留下一套更简洁、更通用的处理接口。
“时下流行的各类编译工具已经相当出色,”ARM公司CTO、同时也是该公司联合创始人Mike Muller告诉我们。
“我们已经不用再像上世纪八十年代时那样大量使用汇编语言了; 时至今日,大家完全可以采取更具效率的处理方式,而在开发流程当中、时间因素真的非常重要。”
深入剖析
新的mbed操作系统专门针对Cortex-M芯片家族所设计,也就是ARM公司的32位单片机核心系列。此类芯片的售价仅为每块五到十美元,性能由低到高依次有M0、M4以及M7等方案供用户选择。这套mbed操作系统所使用的并非像运行在iPhone 6 ARM加密协处理器上的L4微核心、多款汽车仪表板所采用的QNX或者无处不在的ARM GNU/Linux以及uClinux那种移植版内核。
根据我们掌握的情况,这款全新操作系统采用ARM代码,此外再加上由硬件制造厂商以及mbed社区所提供的驱动程序以及源代码。与大家对于单片机操作系统的一贯认知相同,mbed操作系统非常小巧、完全可以通过Cortex-M系统芯片实现运行效果。一套典型的M0以上封装方案所存在的闪存存储容量通常在8KB到128KB之间,而内存则最高为16KB,其时钟速率则最高为48MHz; 常见或者增强版M4系统芯片的时钟速率则最高为180MHz,并包含32KB到2MB闪存以及最高256KB SRAM。我们可以砍,mbed操作系统在设计上完全符合目标设备所提供的闪存容量水平。
这套操作系统是由事件驱动而非典型的实时型方案,ARM公司物联网技术营销事务负责人Zach Shelby告诉我们。换句话来说,这并不是一套复杂的、将处理器根据时间段加以拆分的先占式多任务内核; 其中不存在背景状态切换或者定时器截止机制。相反,mbed操作系统将始终处于休眠状态,直到来自传感器或者其它周边设备将其唤醒,这时它才开始运作并处理相应事件、决定是否触发上层堆栈组件、最终在事件完成后再次进入休眠状态。
如果大家曾经进行过单片机层面的开发工作,那么这样的机制估计并不会让各位感到惊讶。对于此类资源受限性环境而言,这样的处理方式颇具实际意义——也就是说,能够起到很好的能耗削减效果。“电池续航能力可不会受到摩尔定律的引导,”Shelby指出,并提醒我们如今的移动处理器仍然受到孱弱供电能力的严重制约。
上图为ARM提供的mbed操作系统分层示意; 基本上,作为一位开发人员,大家需要关注的只有最上端的蓝色区块,也就是应用程序与库。其余部分则构成了mbed Device Server,这部分内容主要是对底层软件与iOS及Android应用程序或者其它服务的交互机制进行了抽象化总结。
对设计思路加以总结,ARM公司是希望那些利用C++、JavaScript、HTML、Swift以及其它编程语言为智能手机、平板设备以及台式机开发应用程序的编程人员们能够将与硬件相关的所有环节隐藏在mbed堆栈当中,从而帮助他们轻松完成自己的本职工作。这些程序员用不着了解未公开寄存器与控制代码,也没必要掌握困扰着整个系统芯片领域的占先机制; 这些工作都被mbed以抽象化方式解决了,这些零散但复杂的难题不应该成为应用程序开发者面前的阻碍。
“当今的物联网领域在很大程度上仍然处于孤立状态,而且也已经不可能转化为各类设备得以与多种不同云服务无差别对接的大同化互连体系,”ARM公司物联网业务部门总经理Krisztian Flautner指出。
不过这一切到底是为了什么?这个问题指向的正是核心所在。事实上,如果直接要求嵌入式工程技术人员们为物联网打造出示例性传感装置以及表现出色的配套应用程序,那么这次对话恐怕会陷入短暂但却极其尴尬的沉默当中。实际情况是,我们仍然处于“建设物联网且坚信物联网终将成为现实”的“起步阶段”。
ARM正与IBM公司携手打造智慧城市项目。这意味着市区内的路灯能够通过Wi-Fi或者蓝牙机制检测出附近有多少行人,并以此借助运行有mbed Device Server的系统来判断具体照明效果。此类机制能够更为准确、更细致地发挥运动探测器的功能。
家庭环境同样是物联网的普及重点,在这里用户可以在橱柜门上安装运动传感器,从而帮助爸爸妈妈了解自己的小宝宝有没有偷偷跑去大啖甜食——在这种情况下,家长既可以选择利用自己的智能手机接收提醒,也可以直接将其与小朋友的平板设备对接起来。换句话来说,偷吃饼干的小孩儿就不能在自己的平板上玩游戏了。为什么不直接把橱柜锁上呢?这个嘛,也许有时候小朋友表现很出色,这样家长就能更灵活地加以控制、在适当时将甜食作为奖励。
也许大家更希望单纯通过自己的智能手机对家中的烤箱加以控制。ARM希望更多商家加入到这一领域中来,通过解决用户的迫切需求实现产品销售并借此赚取利润。当然,这也意味着ARM能够从此类产品中获得更多授权收益。
这就是物联网的运作机制……街区中的路灯可以检测到道路上的行人
ARM公司指出,他们已经拉拢了大批企业开发新型mbed项目——从IBM公司着力打造的智慧城市项目到系统芯片制造商描绘的Cortex-M核心发展蓝图并以此为中心设计周边产品。这些制造商希望能从芯片到主板全方位为mbed操作系统提供支持。
哪些厂商已经加入阵营……从IBM到爱立信、从Atmel到Marvell,还有很多很多
根据我们掌握的消息,这款mbed操作系统应该会在2014年第四季度被交付至ARM的合作伙伴手中; 不过在2015年之前应该不会有任何采用该软件的设备产品被正式投放市场。Mike Muller认为整个开发流程大概需要三年时间,到那时供应商才能真正拿出理想的mbed物联网产品——当然,前提是这套平台得到广泛认可。而mbed Device Server目前显然已经准备好进入生产流程。
该软件被描述为一款免费且部分开源的解决方案,但是……好吧,事情好像总有但是。据我们所知,mbed操作系统可供大家免费使用,而且其中很大一部分组件都将最终开源。不过固件当中仍然存在二进制机制,而且其中一部分将以受到严密保护的闭源驱动程序形式提供给由芯片制造商推出的系统芯片产品; 这一部分是考虑到安全保护需要,另一部分原因在于某部分代码需要在彻底完成之后才能以开源方式呈现。
举例来说,大家应该可以对处于运行当中的单片机固件进行更新,因此我们肯定希望对升级过程进行严格加密、从而避免攻击者将任意恶意代码上传至设备当中。也就是说,闪存当中将包含有公共密钥。
当然,有一部分人会将这种机制称为控制,但ARM自身却将其形容为一致性。大家可以对mbed堆栈当中的开源部分进行调整与完善,但ARM希望保留让特定组件维持一致性的能力,从而使整套平台实现全面兼容——特别是在安全及无线广播这类完全由代码支撑起具体设备的硬件层。
当mbed操作系统开始启动时,对应设备将能够获取并安装最适合周边机制的固件方案; 为了实现这一目标,系统芯片需要进行初始化,并以安全状态运行其可信命令; 如果设备本身已经遭到入侵,那么再理想的安全更新机制也将形同虚设。
再次强调,二进制组件仍将在系统当中发挥重要作用。不过ARM公司的合作伙伴们将获准对这部分源代码加以访问。
根据我们得到的消息,这套平台的安全机制贯穿到整个系统始终、而非后来添加或者作为额外功能。其内核在设计上已经充分考虑到了芯片软件运行所处的“加密盒”机制——这是一种沙盒类方案,旨在阻止代码对于设备安全性的破坏。Cortex-M家族并不提供内存管理单元或者TrustZone等功能,因此安全机制必须以软件方式实现。
在更多睿智的技术人员开始通过越狱手段让此类价值5美元的传感系统芯片运行任意代码之前,ARM公司仍然能够利用堆栈当中的二进制部分保证对固件的牢牢掌控,从而避免项目陷入碎片化深渊并引导团队始终将注意力集中在单一平台身上。
“开源机制能够大大简化平台改进工作,并让人们更轻松地找到并修复漏洞,”ARM公司的Shelby补充称。
与此同时,mbed Device Server还供大家免费使用并将其作为开发平台,不过我们首先必须获得将其作为商业用途的许可。这毕竟是ARM,许可技术正是其获取收益的主要途径。
原文发布时间为: 2014年10月03日
本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。