开发板/工具日益成熟mbed OS生态系统大步前进

mbed OS是安谋近年来除了CPU核心外, 最重要的策略性产品. 硬件, 软件, 开发工具三位一体的布局到位, 对安谋未来的发展十分关键.

安谋公司(ARM)最初与芯片设计业者相同, 期望自研自售芯片, 但由于财务困境被迫转向以纯设计电路授权的营利模式. ARM在陆续推出各种处理器核心电路后, 于1994年推出ARM7TDMI(ARM7+16 bit Thumb+JTAG Debug+fast Multiplier+enhanced ICE)处理器核心, 此核心开始广受欢迎, 使ARM公司及其产品业务的知名度渐开.

ARM之后陆续推出ARM9, ARM10, AMR11核心, 原有ARM7也衍生出各种版本供客户选择, ARM9/10/11亦然. 但随着时间与技术发展, ARM决议发展全新系列核心, 并逐步汰除旧的授权核心.

2008年ARM提出以Cortex为名的新系列核心, 包含Cortex-A, Cortex-R, Cortex-M, 三系列恰好如安谋公司的3个字母A, R, M. A系列着眼在应用程式处理器(Application Processor, AP)市场, M系列则为微控制器(Microcontroller Unit, MCU)市场, R系列也着眼于微控制器市场, 但更偏重于即时控制的应用, 如产业设备控制, 车用电子等.

Cortex-A/R/M提出后, ARM将过往ARM7/9/10/11等系列称为古典, 经典(Classic)系列, 仍持续提供授权, 但逐渐放淡, 将推行心力转向新技术, 新架构的Cortex.

CMSIS试图统一软件标准

随着Cortex新系列的提出, ARM也试图解决一些过往的问题, 过去许多芯片业者取得ARM核心授权后, ARM并不过问芯片业者如何增订修订芯片内的电路, 更不过问芯片的软件程式开发.

不过, 由于芯片业者各自为政, 即便不同芯片业者采行相同的ARM核心, 对于周边电路的操控方式, 程式的开发撰写等也各自不同, 甚至同芯片商的前后款芯片也不同, 相容性, 交换性低落, 程式的撰写无法共通与沿用, 导致软件开发上的重复浪费, 此使ARM难以发展完整连续的ARM核心软件生态.

因此ARM提出CMSIS(Cortex Microcontroller Software Interface Standard)标准(图1), 试图提供各芯片商一个共同参考依据, 凡采行Cortex-M系列核心的芯片, 若依循此标准发展软件, 则有较高的通用, 延续性.

图1 CMSIS软件堆叠架构图

而之所以锁定Cortex-M系列, 在于经典系列最畅销普及的核心ARM7TDMI, 此核心多数时候被芯片商定位为微控制器, CMSIS的提出, 正是期望减少微控制器软件重复开发, 难以交换, 难以延续使用等难题.

至于Cortex-A系列属较新的发展, 包袱较少, 且运算力较强, 硬件资源较充沛, 较无ARM7TDMI, Cortex-M等微控制器的软件开发困扰, 事实上ARM也在2009年提出mbed后, 在2010年提出Linaro, Lianro试图提出与建构一套共通的ARM架构Linux软件生态系统, 使Cortex-A系列所用的Linux软件有一个共通依循标准, 用意一样在减少各自为政的重复开发, 累积完整连续的软件技术资产.

不过由于Android(根基于Linux)的强力发展与普及, 推行Linaro的产业重要性已减少, Cortex-A系列的主要软件生态依循已是Android.

CMSIS架构解析

CMSIS严格而论仅是一个架构的泛称, 具体内容包含多项软件零件, 如CMSIS-CORE, CMSIS-Driver, CMSIS-RTOS等. 其中最根基的部份为CMSIS-CORE, 它定义了存取函式, 周边与中断定义等, 所有其他软件若想操控Cortex-M核心电路, 核心周边电路或其他周边电路等, 均要透过CMSIS -CORE.

CMSIS-CORE外另两个重点即是CMSIS-Driver, CMSIS-RTOS, 两者均是应用程式介面, 可供应用程式呼叫(Call, 对岸称调用)使用, 前者提供一致的硬件驱动, 操控方式, 后者提供提供应用程式与即时操作系统间的一致互动呼叫方式.

CMSIS-Driver也可以由芯片商再行定义硬件抽象层(Hardware Abstraction Layer, HAL), 以及透过协力业者(Third Party)的中介软件(Middleware, 对岸称中间件)来呼叫使用; CMSIS-RTOS也只在定义规范, 实际执行的即时操作系统(Real-Time Operating System, RTOS, 对岸称实时操作系统)可弹性换替, 可用ARM官方提供的, 也可替换成协力业者提供的, 只要合乎CMSIS- RTOS规范即可平顺换替. ARM官方提供的称为RTX, 是ARM购并Keil后取得的.

其他软件部份则视需求采行, 针对除错需求而有CMSIS-SVD(System View Description), CMSIS-DAP(Debug Access Port). 或针对数位讯号处理运算需求而提出CMSIS-DSP(Digital Signal Processing), 以及针对神经网路运算需求而提出CMSIS-NN(Neural Network).

mbed进一步简化软件开发

ARM提出CMSIS后已达到提倡软件规范的目标, 但CMSIS的架构设计依然是以专业软件程式开发者而著眼, 而微控制器的软件开发, 早在2005年Arduino提出后, 便积极朝平民简易路线发展, 使微控制器的软件开发者人数增加, 年龄层下降, 甚至也对创客(Maker)风潮带来推助力量. 有鉴于此, ARM以CMSIS标准为基础进行更多的包装简化工程, 提出mbed软件标准.

mbed确实在开发上提出更多简便法, 过去微控制器的软件工程师必须自行安装开发环境软件, 但mbed改成网页型开发环境(图2), 只要申请免费帐号密码, 透过网页登入, 便可进行程式开发(编译器位在云端, 为ARMCC C/C++编译器).

图2 mbed整合开发环境(IDE)不需要下载与安装, 直接帐号密码登入网页即可使用.

当程式撰写, 编译完成后, 也不需要透过层层选单选项, 才能将程式上载(Upload)到开发板上, 开发板透过USB埠接上PC, 在PC端被视为一个可插拔的USB随身碟, 只要将编译好的档案拖拉放到随身碟内, 即完成上载动作, 轻松直觉.

mbed发展路线改变

2009年mbed提出, 历经1.0, 2.0发展后, 到了2013年, 2014年间, 由于Intel, TSMC等全球半导体大厂相继倡议物联网(Internet of Things, IoT)的新市场概念, ARM也积极争取市场机会而展开技术布局. 例如2013年购并芬兰通讯协定软件业者Sensinode Oy, 2014年购并SSL, TLS协定软件业者PolarSSL, 2015年购并以色列硬件加密电路设计商Sansa Security, 购并蓝牙协定与型态软件业者Wicentric, 购并物联网加密软件业者Offspark等.

在2013年开启的半导体业者购并风潮中, ARM自身也由软件银行(SoftBank)所购并, 诸多观察家谈论软银为何购并ARM? 其著眼可能在于5G, 车联网(V2X)等, 但物联网也多在讨论范围中.

ARM购并诸多物联网技术业者后, 将取得的软件移植至mbed中, 例如收购PolarSSL后改称Mbed TLS, 并将mbed技术范畴扩大, 区分成用于感测器节点端的mbed OS, 以及闸道器端的mbed Device Server, 同时也将mbed版本自2.0推进至3.0, 另也推展装置端的资讯安全防护技术mbed µVisor(图3).

图3 mbed从单纯微控制器端转变成两端, 一端较接近原有的微控制器应用领域, 即用于物联网感测器节点的mbed OS, 另一端则是物联网闸道器的mbed Device Server.

mbed路线统整回归

由于mbed引入大量物联网相关技术, 无法全然沿袭相容原有的2.0版, 新的3.0版成为一个分岔(fork), 即分支性的另立发展, 但此发展也造成过往mbed开发者的抱怨. 因此2016年ARM提出mbed 5.0版, 试图统整过去的分歧发展. mbed 5.0提出后, 版本数字上明显跳略过4.0, 此主要是期望在于「5.0是2.0, 3.0的统合版」, 即2+3=5.

虽为统合版, 但mbed 5.0主要承袭原有2.0, 过往2.0时代的函式库几乎都可相容沿用, 但不容于3.0版, 过去3.0版的物联网功能在5.0版上重新诠释, 3.0版被视为整体发展上的短暂过渡, 主线在于2.0到5.0的演进(图4).

图4 mbed版本路线推进图

此外, ARM也进一步扩张mbed发展范畴, 由于物联网应用多要上传感测数值至云端, 过去ARM曾在2015年提出mbed Client与mbed Device Connector, 做为mbed装置连上云端的技术方案, 但很快ARM在2016年11月推出mbed Cloud取代了mbed Client与mbed Device Connector, 成为新的云端支持技术; 2017年ARM也强化感测现场在地端的技术, 提出mbed Edge, 强化物联网闸道器对节点的管理能力.

以mbed为基础Micro:bit趁势兴起

mbed已是朝亲民路线发展的软件开发模式, 环境, 但控制开发不仅吹平民风, 进一步还吹出学童风, 教育界开始倡议STEM/STEAM(Science, Technology, Engineering, Art, and Mathematics)学习, 因而有方块, 积木式的图像开发环境出现, 例如Arduino领域有S4A(Scratch for Arduino), Google也提出Blockly等.

因此也有业者以mbed技术为基础, 发展出名为Micro:bit的学童教育系统电路板(图5). Micro:bit使用与mbed相同的网页型开发环境, 不需要在PC端安装任何软件即可进行开发, 但开发方式从C/C++的文字数字式的撰写式开发, 变成积木方块式的拼凑式开发, 上载程式方式也与mbed相同. Micro:bit设定的推行对象为11, 12岁学童(图6).

图5 Micro:bit系统电路板说明图, Micro:bit软件环境技术源自于mbed.

图6 Micro:bit网页版图型化的积木方块程式开发.

Micro:bit很快成为学校教材, 许多政府已购置大量Micro:bit电路板而捐赠给学校, 如英国, 新加坡, 马来西亚等, 并已推展至20多国, 且获得Microsoft, ARM等科技大厂的支持.

更多配套开发工具强化mbed易用性

前面已述, mbed只需要帐密登入即可使用网页版开发环境与工具, 但mbed并没有限定仅能使用网页版环境进行程式开发, mbed还有许多配套开发工具. 例如mbed也提供PC端的编译, 例如以传统命令列介面操作的mbed CLI(Command Line Interface); 程式测试方面有mbed Greentea(Generic Regression Environment for Test Automation, 缩写成绿茶); 除错方面有除错用函式库mbed pyOCD, 除错用韧体mbed DAPLink.

或者也可用专业的程式开发工具, 例如Keil公司(2005年由ARM收购)的µVision, IAR公司的Workbench, 开放原始程式码GCC(GNU Compiler Collection)的makefile程序等; 在程式码的分散式版本控制系统(Distributed Version Control System, DVCS)上, 也支持git, GitHub, mercurial, GitLab, mbed也有自己的mbed.org/code等.

mbed生态系统日益健全

在进行更深广的布局后, mbed生态系统更健全提升, 已在网页上开设帐号注册的开发者超过20万个, 社群网页累积不重复的浏览人数超过200万个, 有10多家芯片商, 20多家板卡商, 累计推出130片以上的mbed系统开发板, 并有诸多的周边支持零件, 包含30种致动器, 61种通讯功能装置, 92种显示器, 59种扩充卡, 27种物联网模组, 187种感测器, 17种机器人模组, 15种储存装置, 甚至有8种线上支持服务, 如推特(Twitter), IFTTT(If This Then That)等(图7) .

图7 支持mbed的系统开发板已经达130片以上.

mbed概念引来追随/竞争者

mbed的发展结合了亲和化, 创客文化, 物联网概念市场等多种元素后, 似有一统嵌入式操作系统的态势, 但其实mbed仍有其相近竞争标准, 并非是唯一选择.

一是以亲和开发起家的Arduino, Arduino自2005年以来一直是以8位元AVR架构微控制器为主, 但近年来开始尝试升级发展, 如2014年推出Arduino Zero开发板, 使用的芯片改采Cortex-M0+核心, 或推出Arduino Due开发板, 开发板上的主控芯片采Cortex-M3核心.

二是英特尔在2013年以x86架构推出超微小的夸克(Quark)嵌入式处理器后, Intel旗下的Wind River也于2015年11月提出针对物联网应用的即时操作系统Rocket, 2016年2月转交给Linux基金会发展, 并改名Zephyr(和风), 并获得Intel, NXP, Nordic等芯片商的支持.

三是华为提出的LiteOS, 宣称10KB RAM记忆体即可执行, 并已获得意法(ST), 爱特梅尔(Atmel), 恩智浦(NXP), 芯科(Silicon Labs)等欧美芯片商支持, 大陆芯片商如北京兆易创新, 上海灵动微电子, 以及华为旗下的海思半导体等也都支持.

四是亚马逊(Amazon)雇用了FreeRTOS的创始软件工程师, 而后推出自有版本的Amazon FreeRTOS, 成为Amazon整体端缘运算(Edge Computing)技术策略的一环.

上述四种OS均为mbed的潜在竞争标准, 需求的硬件资源也多属同一量级, 多在16KB~64KB RAM记忆体便可运作. 至于其他知名的嵌入式操作系统, 如OpenWrt或Google提出的Android Things, 均属8MB~ 64MB量级, 与mbed不属于同一层次, 高低互补关系多过重叠竞争.

而在三种与mbed竞逐的软件标准中, Arduino的发展并不顺利, 原有在8位元AVR架构下执行的软件移植到32位元Cortex-M架构后, 仍有许多臭虫(Bug)未除, 且多数创客仍钟意原有8位元系统, 仅少数转移使用32位元.

Zephyr方面, 由于英特尔在2017年停止嵌入式Atom, Quark处理器的相关发展, Zephyr顿失最大的支持呼应芯片, 气势大减, 有待新支持或新方向.

因此, mbed的主要竞争者估为Amazon FreeRTOS, 一是Amazon未支持FreeRTOS前, FreeRTOS即已发展使用10余年, 二是获得Amazon大厂的加持, 包含Amazon官方云端服务(Amazon Web Services, AWS)的支持与Amazon官方硬件产品(Fire系列, Dash系列)的支持. Amazon既是全球最大的公有云(Public Cloud)营运商, 在Amazon硬件产品也讲究薄利多销, 且不吝于开放或授权技术, 如Alexa语音辨识技术正广泛运用到非Amazon官方的硬件产品上, 此均有助于推展Amazon FreeRTOS.

不过Amazon FreeRTOS仍须强化亲和开发性, 且因为Amazon至2017年11月才宣布支持, 官方认可的开发板仅4片, 但如前所述mbed已达130片, mbed尚具若干优势.

另外mbed也可能要与其他嵌入式操作系统竞争, 例如同属轻量性的µC/OS-II, embOS, 这些操作系统已存在一段时间, 若比照FreeRTOS模式, 获得某些国际技术大厂的支持, 发展则可能立即改观. 或其他因应物联网概念兴起的新嵌入式操作系统专案, 如爱尔兰公司提出的Mongoose OS, 或也是长期存在但开始转聚焦物联网的嵌入式操作系统, 如Contiki.

最后, mbed后续发展也可能不如预期, 如同Linaro的初衷已由Android代行, 但即便如此ARM自身原有的电路授权业务并没有损​​失, 只是由他人主导其软件生态系统, 如同英特尔主导x86芯片, 但也未主导x86软件生态系统, 而是Microsoft公司, Linux社群所主导.

2016 GoodChinaBrand | ICP: 12011751 | China Exports