物联网(IoT)是个新名词,顾名思义,就是把物体用网络连接在一起。却是一个新瓶装旧酒的新名词,它不是一个新事物。看官你说,当年克兰罗克和比尔.杜瓦利手中的互相连接的两台计算机,算不算物联网设备,他们的确是用通信介质连接在一起的“物体”啊,谁说计算机不算物体的?
今天的物联网通信,与40多年前传输的两个字节,并没有本质的不同,说来也就是通信速度、通信成本、设备体积和功耗方面,逐步进化而已。然而,量变引起质变,上世纪末计算机网络通信的发展,引发了互联网革命,现在,随着通信成本的降低,功耗的减小、无线通信的普及,又引发了物联网革命。
互联网时代,承载网络应用的是通用计算机或者个人终端数字助理,例如手机、iPad等。通信主要关注的是数据流量,也就是带宽,应用主要关注的是界面的友好性、丰富性、个性化。同时,CPU功能比较强大,内存配置等也比较丰富,并不强调实时性,也不特别强调可靠性,开发平台也很一致,功能丰富。
物联网应用开发的挑战
物联网应用,与互联网应用有着巨大的不同,物联网应用开发是典型的嵌入式开发,从硬件配置到运行环境等等,都千差万别。
在裸C时代,首先出手改进开发平台的是MCU厂商,ST、ATMEL、Freescale、NXP等知名MCU厂家,都推出了越来越完善的固件,使用这些固件,尽可能地抹平不同型号CPU之间的差异,使用户的应用程序更加通用。同时,他们还推出了越来越完善的IDE,利用他们的IDE,可以自动化地生成一部分跟CPU相关的代码,减轻了工程师的工作。但是,所有这些工作,都仅限于同一厂家的不同型号MCU之间,甚至只在同一厂家的同一系列MCU之间,才能体现出其价值。为什么MCU厂家要做这些工作呢?因为他们要卖东西,他们的客户,大多数还使用裸机C开发,而不像系统级CPU那样有完善的开发平台支持。他们的客户,迫切需要一个开发平台,来规避晦涩难懂的硬件驱动开发,使应用和驱动相分离。一个非常典型的现象是freescale,它主要为MCU产品线提供驱动固件,而对于PPC产品线,原厂提供的驱动就是垃圾,谁用谁知道。
在物联网时代,也许某一天,牧场跑的每一只羊,农场里的每一株黄瓜,我们喝水的杯子,都是IoT的一个节点,里面都有一颗MCU,都有一套嵌入式程序,如此爆炸性发展的网络规模,使我们面临什么挑战呢?
IoT时代的嵌入式开发平台
从完整开发平台的角度,看看几十年来涌现的数以百千计的RTOS,能不能算合格的IoT开发平台呢?答案恐怕是否定的,即使有些非常知名的RTOS,也是如此,有许多RTOS,充其量是一个调度器。有意思的是,从开发平台完整性来看,目前流传的绝大多数嵌入式操作系统,甚至比不上Industrial Programming Inc(IPI)公司在上世纪70年代的MTOS。