随着ARM芯片的出货量越来越多,自信满满的ARM公司统一软硬件平台的战略和雄心壮志越来越凸显。最初ARM公司仅是出售自己的知识产权(IP核)给各大芯片公司,由于最初ARM公司处于劣势,所以给芯片厂商很大的自主权,在ARM7、ARM9和ARM11芯片时代,我们知道每家芯片的地址空间,寄存器操作各异,大不相同,也只能在代码编译的时候才能发现ARM公司的存在。随后ARM公司推出了Cortex系列的芯片,就如我以前文章所提及,其志不小:“对早已经被绑入其战车的各大芯片厂商,又勒紧了一下枷锁,对ARM最新的内核的架构做了进一步限定,如对SysTick、NVIC和FMSC芯片设计的限定。特别是CMSIS接口的标准推出,简直是卡住了各大芯片厂商的脖子,他们不加入这种计划,难免被边缘化,加入了,难免沦为ARM公司的一个生产车间。”
不知道是ARM公司成全了安卓系统(Android),还是安卓系统成全了ARM。在嵌入式领域和PC领域最大的不同就是,嵌入式芯片和X86芯片不同,X86主要有英特尔(Intel)公司把持,所以微软+英特尔软硬结合,很容易一统天下。而嵌入式芯片(32/64位芯片主要就是ARM芯片了)领域属于群雄割据的时代(不过现在高通公司有后Intel王者的气概),各个厂商基本是各自为政,每家芯片的寄存器操作相差比较大,所以对运行其上的操作系统开发者来说,难度很大(所以目前针对操作系统底层的BSP,基本都是芯片厂商自行开发提供)。ARM公司推出Cortex的芯片,及CMSIS等接口标准的努力,就是简化或者说降低这种开发难度,为统一芯片硬件平台打下坚实的基础。
从目前的形势来看,在嵌入式领域,偏软的方面安卓系统已经取代了微软的历史地位。偏硬的芯片方面是不是高通公司?个人认为ARM公司内心绝不会让一家芯片公司独大的,所以ARM公司从近似春秋战国的西周王朝时代,回归东周统一王朝的格局下,继续进行着统一硬件芯片的运作。高通想成为强秦,统一天下的梦想我想绝不会很快来临。
回归正题,谈一谈ARM公司在物联网上的战略布局。
2013年8月27日,ARM公司收购了芬兰物联网软件创业公司Sensinode,将继续推广和深化Sensinode公司的NanoStack、NanoRouter 和 NanoService三大产品。真对此消息,有的网站评论道“看来手机和平板市场的统治地位还不能满足 ARM 的胃口,吞下整个物联网才是它的目标”。
2020年,根据IMS Research的预测,全球联网的设备将有300亿个。ARM的Cortex-M(M0/M3/M4)芯片+ARM的 mbed项目和Sensinode公司的NanoStack、NanoRouter 、NanoService三大产品结合起来,将会从硬件到软件完整的覆盖整个物联网领域(手机和平板一般采用Cortex-A系列的芯片,作为移动互联网的主力,将成为物联网领域必不可少的输入端。另外ARM芯片进军服务器野心,也不可小觑,那是物联网另外一大领域—大数据—重点所在)。
下面就详细介绍一下ARM技术开发大会上《CreatingSecure,Efficient,and Open Standard Iot Systems》的讲座,从题目上来说,是讲“创建安全、高效和开放的标准物联网系统”,至于如何构建,就是采用以上我们所讲述的技术。
我的介绍和ARM技术开发大会上的张先生的讲述有些不同(讲解的顺序不同、着重点不同),我是按照自己的理解,进行说明的。
1、 传感器数据采集– 基于CMSIS的 ARM MBED技术的硬件简易开发
如果你是一个仅有一点开发技术的人,比如会一点C或一点Java,对硬件也是粗略了解一些,那么MBED技术将很快让你进行硬件开发(网上号称60秒让你完成嵌入式编程开发)。
如果你在做硬件原型设计,有不同的芯片去让你选择,或者是对外围的一些器件进行测试研究,那么采用MBED技术将让你这份工作变的轻松简单。
ARM MBED是一个什么样的技术呢?简单的说,它有两点特色,这两点特色分别对芯片提供商(或者说开发板提供商)、软件开发者提供了便利。
第一就是CMSIS,CMSIS就是ARM指定的一套接口框架,通过它,可以屏蔽各家芯片操作的差异。所以针对芯片厂家来说,仅需要实现这些规定的接口就可以了。
第二,对嵌入式开发来说,开发环境的搭建是一个耗时耗力的过程,能成功编写和调试第一个程序,犹如孩子出生一样,不经过一番挣扎和摸索是很难顺利完成的。而MBED技术是一套基于云计算的网页编译工具,可以在Windows、Linux、Mac等各种可以网页浏览的设备上进行编程。所以不需要安装调试工具,只要选好指定的开发板,就立即可以进行编程,编译后直接生成一个bin文件,直接烧写到设备即可运行。
另外的一个优势,由于用户是基于CMSIS的框架接口开发,所以理论上将,你可以很顺利地开发各种厂家的芯片(前提是相关芯片厂商已经提供了CMSIS的支持),不再向以前一样更换不同厂家的芯片是件难以抉择的事。
作为物联网开发来说,你通过AD、串口、SPI、I2C、USB、CAN甚至是以太网接口,用MBED技术很容易把各种传感器数据采集到Cortex-M0/M3设备,采集完毕后,另外一个最重要的环节,就是数据上传。而这一步,就是ARM收购的公司Sensinode的技术优势所在了。
2、 传感器数据上传– 基于CoAP通信协议(NanoStack/NanoRouter)
一直以来,物联网领域最令人头疼的事就是,接口协议繁多,每家都有各自的协议,在这种格局下,收集传感器数据,是件费时费力的事。
而CoAP是一个统一的协议接口,优势不仅仅在于标准统一,而在于对HTTP协议进行了简化,其压缩的数据头仅4个字节。这样在传输过程中,交互的数据量将大大减小,有效地降低了网络通信的负荷。
另外通过协议代理,可以很轻松的把CoAP转换为标准的HTTP协议。
以上不仅仅是ARM一家的标准,由于底层通信基于各种物理链路,所以ARM公司遵照或参与了很多底层标准通信协议的制订。IETF、Sensinode、6LoWPAN,Zigbee IP CoAP,TLS,OMA Lightweight etc等等。
有了MBED作为基础,在Cortex-M0/M3上集成CoAD协议是分分钟钟的事,数据采集和上传在这一步可以说是有效地集成在一起。
3、 数据存储、服务和展示– NanoServer服务支持
通过统一的数据接口,数据收集在NanoServer中,然后借助NodeView Web程序,去浏览去展示相关数据。
4、 小结
通过如下两张图,就可以看到ARM公司的基于IoT物联网领域的技术布局已经亦趋完善了。
MBED技术在最底层,通过标准接口采集各种传感器数据(由于基于CMSIS框架架构,所以各种厂家的芯片,其用户开发代码都是相同的)。
NanoServerClient和NanoStack技术,实现了CoAP通信支持。
NanoServer服务和NodeView进行数据收集和数据服务及展示。
另外这所有的代码、协议标准都是开源的,用户可以自行下载了解。
题外话:从以上介绍看出,ARM自有标准协议、安卓、Java技术在其中占有很很大比重,我从2008年以来就一直参加ARM的会议,一点点看着微软的技术被边缘化,最后完全退出了ARM技术会议的视野,这点替微软惋惜。但是从用户开发角度来看,特别是工控人员开发集成角度来看,微软的开发工具,其本地化界面,开发调试的简易型还是非常有市场的,特别是最近,微软改原来的嵌入式部门为物联网部门,说明还是看好物联网领域,并向这个方向努力发展的。我们所构建的YFIOs/YFHMI(http://blog.csdn.net/yefanqiu/article/details/8423421 )技术架构平台,就是基于微软的技术,在Visual Studio 2010/2012开发工具中,用C#进行统一开发。以上技术总总,可以通过封装,直接支持相关协议,但是用户只需要调用相关C#接口即可,当然也可以成为YFIOs驱动的一部分,用户可以直接加载调用。