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是什么鬼!
体感试衣镜将一键带你开启神奇试衣的非凡体验
煤泥烘干脱水设备集中监控运维系统解决方案
一些超走心、满满治愈系的人工智能“神宠”
CITE 2021开幕在即行业大场面即将来袭
采用状态空间平均法实现Buck变换器小信号的建型与仿真
IOT时代谈驱动/MCU软件技术
ADSL2+低功耗模式简介
HTC U11/三星S8/LG G6拍照哪个好?谁才是“机皇”一目了然
区块链多人联网沙盒游戏NeoWorld介绍
蓝牙低功耗BLE的3大优势及应用市场
承载技术和5G本身是在同步发展和演进的 5G承载技术也在快速走向成熟
微软发布Visual Studio 2010 和 .NET
IR扩充SupIRBuck在线设计工具
GalaxyBuds充电盒拆解 做工怎么样
故障精准定位使配网变得更加“聪明”
自动驾驶越来越近,主控芯片玩家有哪些?
Littelfuse宣布推出MATE-12B磁簧开关系列
DS2786电池电量计在2节锂离子电池包中的使用
日本第五代移动通信为数字化转型注入新动力
机器人在智能快递柜行业中的应用介绍