IOT时代谈驱动/MCU软件技术
扫描二维码
随时随地手机看文章
8048的面世标志着控制专用CPU MCU(Microcontroller Unit)的延生,而作为互联网基石的PC,其CPU8088却是在3年以后的1979年才出现。自1979年以后,PC的CPU从16位、4.77MHz时钟、单核发展到了今天的64位、常见的3GHz时钟和多核。而比PC的CPU历史悠久的MCU,其字节停止在32位已有10多年了。相对于芯片,MCU软件技术进展更慢,在PC机软件开发已由工厂化发展到全社会协同的今天,MCU软件技术仍停留在单打独斗的个人英雄时代。
尽管MCU的应用领域和市场规模都要比PC大得多,其MCU软件技术进展仍然十分缓慢,其中原因包括应用领域的碎片化导致公有技术抽象困难,开发力量难以聚焦。软件技术进展缓慢直接影响MCU芯片技术的发展,芯片的性能又反过来阻碍软件技术的发展。随着物联网(IOT)在人们生活中的渗透,高性能MPU的价格已下降接近MCU的价格区间,互联网软件技术不断向MCU领域浸入,加速MCU软件技术发展的时机已到来。
由无规则向OOA及OOD转化
MCU软件的前期分析设计将由无规则向OOA及OOD转化。传统的MCU软件开发,其分析设计和实施通常是由封闭的团队,甚至一个人独立完成。尽管团队内部成员理念一致、配合默契,项目实施敏捷。但整个开发过程都在同一团队进行,几乎不涉及团队外的协同开发,因此分析设计简陋,甚至只停留在口头上。随着IOT时代的到来,其封闭单一的团队难以适应今天的发展,团队外的协同是MCU软件开发的必然趋势,但前期分析设计的不足,会使问题变得更复杂。
将PC软件开发成熟的方法论引入MCU软件领域,则是促进MCU软件技术发展的捷径。OOA(Object OrientedAnalyzing)和OOD(Object Oriented Design)是系统工程理论在PC软件技术中的体现,它们是支撑软件技术工厂化和社会化的重要理论基础。OOA及其OOD通过对应用进行分层、分类抽象处理,将部分层与类从应用中剥离出来,从而使协同者不需要了解应用就能进行软件开发。从1997年开始,作者以系统工程理论为基础开始探索OOA及OOD在MCU软件开发中的应用,并于2005年将初步成果应用于继电保护装置开发。其方法是将继电保护装置分层分类封装在4个不同的MCU之中,在不具备独立开发继电保护装置的团队中实施,其开发时间和开发投入远低于当时同行业经验丰富的开发团队。该系列继电保护装置已经应用10多年了,不仅维护升级方便,而且至今竞争力不减。
编程方法由FP向OOP融合
编程方法由FP向OOP融合是另一个发展趋势。在编程方法上,FP(FuncTIonal programming)与OOP(Object Oriented Programming)之间的战争从来没有停止过。作者认为脱离应用背景,讨论FP与OOP是毫无意义的,因为FP强调的是精英技术,它是开发人员的综合个人能力的体现,是一门精致而美的艺术,艺术的特点就是难以复制;OOP则是实施软件开发工厂化与社会化的一门技术,其不足在于CPU及其资源利用率低,但高速发展的芯片产业弥补了它的不足。MCU软件技术是FP的代表者之一,但它实在是无奈之举。因为直到2000年,主流MCU还停止8位、256Byte内部RAM和12MHz的时钟,在这样低的资源下进行软件开发,不仅仅是FP编程方法,更有C与汇编的交融,它已超越技术,升华为一门艺术。
2000年以后,OOP己成为PC软件开发的主流技术,现在主流MCU内核ARM cortexM3/M4与2000年时PC的资源配置接近,在MCU软件开发中实施OOP的条件已具备。PC软件开发成功的经验证明:实施OOP,是降低软件研发的门槛,是将软件开发从精英模式走向工厂化和社会化的有效措施。同时也是解决软件开发人员短缺的唯一手段。作者于两年前通过对OOP编程语言JAVA的归零学习,已感悟OOP之真谛。然后亲自编程将OOP技术应用于MCU软件开发中,并向同行、同事介绍OOP在MCU软件开发中的体会,让目前的MCU软件开发人员拓展思路,使他们从封闭的思维方式中解脱出来,走向社会化,其效果也是非常明显的。
软件开发的分离与成熟
中间件成熟,推动驱动软件与应用软件开发分离。过去因MCU性能和资源的限制,MCU软件开发与硬件开发是密不可分的,驱动软件是联接MCU硬件与软件之间的桥梁,它是MCU开发最重要的环节。因为驱动软件涉及软件和硬件技术,要求开发人员同时具备硬件和软件知识,所以驱动软件开发是MCU开发中最难的一个环节,它是MCU开发的主要成本。
2010年与ARM cortex M系列MCU先后出现的还有CMSIS(Cortex Microcontroller Software InterfaceStandard)。CMSIS是ARM公司制定的ARM Cortex-M系列MCU软件接口标准,它将MCU外设与软件无关抽象化。自此,MCU驱动软件由MCU制造商或MCU开发软件商提供,从而降低了MCU开发的难度,提高了MCU软件的重用性。
Ethernet、WiFi和Bluetooth是主要通信标准。作为IOT前端的MCU也必需具备信息交互功能。Ethernet、WiFi和Bluetooth等协议软件经过多年发展,已成熟、规范和专业,作为MCU的公有技术把它们植入到MCU软件之中是十分必要的。将它们封装成中间件,MCU软件开发时,在硬件的支持下只需要将这些中间件集成到MCU软件之中就能使MCU与互联网实现灵活的信息交互。例如ucTCPIP、CMX-TCP/IP、IwIP等是MCU软件开发常用的Ethernet中间件。在MCU开发时,不需要了解TCP/IP的细节,仅需将这些中间件集成到MCU软件中就能实现Ethernet功能。目前除了上述互联网信息功能外,还有大量的其他中间件,如MCU图形中间件emWin、USB中间件ecc-USB等。同时,MCU软件开发主流平台KEIL将自己的和第三方提供的中间件集成在同一开发平台上。MCU软件开发时,只需要将这些中间件集成到自己的软件中,就可实现相应的功能。
总之,MCU中间件的广泛应用,标志作MCU软件开发由封闭走向开放。在原生市场本来就广阔的MCU应用领域,借助IOT的推动,MCU软件技术必将迎来新的发展浪潮。作为经历了电子管时代,并且电路设计和代码编写己成为人生一大爱好的作者,将激情满怀地迎接MCU软件技术的又一次变革。
【相关推荐文章】华为正在力挺的NB-IoT是什么鬼!