升级换代不受内核困扰 MCU传统模式遭颠覆
扫描二维码
随时随地手机看文章
嵌入式系统的出现彻底改变了整个电子技术行业,在全球范围内形成了从高校教育和科学研究、电子元件生产厂和电子产品生产厂全方位产业链。因MCU的市场容量大,MCU厂家为了获得更多的市场份额,不断地加大MCU的开发力度,自Intel在1980年发布MCU标志性产品MCS-51开始,到现在的30多年中出现了近100种MCU内核,涉及MCU型号超过3000种。在世界电子元件史上,除了MCU外,还没有一种功能相近,涉及型号如此之多的电子元件,自MCU一出世就进入了战火纷飞的战国时代。但ARM核的出现使MCU领域产生了巨大的变革。
天下一统 ARM核MCU性能价格优势明显
ARM7TDMI模式的出现,使嵌入式系统开发逐渐统一到相同MCU内核和软件开发工具上来,为嵌入式系统走出“不断地学习新内核MCU,不断地放弃老内核MCU”的怪圈创造了条件。
相对于普通电子元件,MCU除了电气特性外,还涉及指令系统,不同内核的MCU具有不同的指令系统。指令系统的不同,意味着MCU软件开发平台和嵌入式软件的不同。
30多年里出现近100种MCU内核,除了说明MCU技术进步快之外,还意味着不仅是MCU厂家在不断“重造车轮”的过程中浪费了大量的人力和财力,更使处于MCU产业链的终端的嵌入式系统苦不堪言。对于嵌入式系统厂家,如果坚守同一内核的MCU,则产品性价比差,特别是MCU到了生命期后还会停产;如果不坚守同一内核的MCU,则需要推翻已成熟的硬件和软件,因硬件是可视的,不同内核MCU的电气特性相差不大,更新比较容易,而软件则很困难。更换了不同内核的MCU,首先是要重新购买软件开发工具,其次软件人员要重新学习指令系统和软件开发工具,最后才是将过去的软件移植到新内核MCU上。其实软件移植也是十分困难的,因为首先遇到的软件开发工具存在BUG(软件开发工具也是软件,开发软件开发工具的软件开发人员对MCU指令系统的理解程度决定软件开发工具的质量,并且他们理解MCU指令系统也需要时间);其次是不同内核的MCU其软件架构和算法差异性大,软件移植过程投入的人力物力和重新开发投入的人力物力能相比拟。因此对于嵌入式系统来说,这30多年里主要精力不是放在让嵌入式系统更好地服务于特定应用,而是放在不断地更换不同内核的MCU,被迫跟随MCU厂家陷入“不断地学习新内核MCU,不断地放弃老内核MCU”的怪圈。
ARM7TDMI模式的出现使MCU产业链的源头发生本质性的变化。ARM7TDMI模式是:ARM向各MCU厂家出售ARM7TDMI内核,MCU厂家根据其市场目标将购买的ARM7TDMI内核与不同外设集成,形成内核相同、外设不同的MCU,保证了内核的一致性;同时ARM协助第三方编译厂家开发软件开发工具,如IAR、Keil,而且ARM也推出了相应的软件开发工具STD和ADS,从而保证了MCU软件开发工具的一致性。通过上述的工作,使嵌入式系统开发逐渐统一到相同MCU内核和相同的软件开发工具上来,保证了MCU的升级换代不受MCU内核的困扰,为嵌入式系统走出“不断地学习新内核MCU、不断地放弃老内核MCU”的怪圈创造了条件。
ARM公司在MCU产业链源头的创新,使基于ARM核的MCU型号迅速增加,以满足不用应用领域的需求。在性能上,基于ARM核的MCU完全超过目前4位、8位、16位和部分32位MCU的性能;在价格上,基于ARM核MCU的价格从5元以下开始,一直延伸到数百元,完全覆盖了同时期的4位、8位和16位MCU的价格范畴。性能和价格的优势使基于ARM核MCU一统天下的局面开始形成。
软件之痛 嵌入式软件开发实力比PC弱
嵌入式系统的软件开发行业的整体实力却比PC行业弱很多,这是因为开发体系缺乏、开发工具缺乏、软件开发要求低、开发人员不适应嵌入式系统之变。
直到2000年,MCU的性能还不能令人满意,业界广泛应用的MCU,其运行速度低于10MIPS,存储器和外设都很少,许多应用需要外扩存储器和外设。当时的嵌入式系统开发过程,首先最重要的工作是扩展存储器和外设,其次是编写MCU与扩展外设之间的驱动程序,最后才是为特定应用服务的软件开发。因MCU速度低,扩展外设的驱动程序占用了不少MCU运行时间,留给特定应用程序运行的资源很少,所以特定应用服务的软件很简单。因此,当时嵌入系统开发是以硬件及其与硬件直接相关的软件开发为主。
基于ARM核MCU的出现,即使不到5元的32位MCU,其运行速度超过40MIPS,而且还集成了丰富的存储器和各种外设,使MCU不扩展外设也能满足大部分需求,从而简化了硬件开发工作。ADS、MDK-ARM和IAR Embedded Workbench for ARM软件开发工具的不断完善,确保了嵌入式软件开发工具的一致性和连续性;CMSIS标准库的推出,使嵌入式软件外设驱动的标准化,增强了嵌入式系统特定应用软件的可移植性。ARM及其MCU厂家的共同努力,通过上述3方面的工作宣告“重造车轮”式的嵌入式开发模式的结束,使嵌入式开发由以硬件及其与硬件直接相关的软件开发为主转移到以开发为特定应用服务的软件上来。
嵌入式系统是为特定系统定制的,这就要求开发人员除了具备软件开发能力,还应具备服务对象、硬件领域、通信与网络领域、人机介面领域的专业知识。除此之外,它还要求具备较高的软件架构和实时任务调度能力。以上表明嵌入式系统对软件开发人员的要求并不比PC对软件开发人员的要求低,但实际上嵌入式系统的软件开发行业的整体实力却比PC行业低很多,这是因为:
1.开发体系缺乏。PC自Intel和微软在硬件和操作系统上统一后,PC软件作为软件产业中最大一个分支,从方法、理论、实施到维护升级等方面入手,建立了完整的软件开发体系、规范了软件产业的全过程,从而保证了整个PC软件行业沿正确的方向发展。而嵌入式系统30多年里,由于不断“重造车轮”,没有条件也没有时间建立完整的嵌入式系统软件开发体系。
2.开发工具缺乏。嵌入式系统无论从MCU的运行速度,还是其它资源都比PC少。例如:目前PC的速度是以G为单位,而MCU的速度是以M为单位,它们之间相差了1000倍,PC强大的资源保证了PC软件开发能运用各种软件开发工具。目前在PC软件开发过程中,从需求分析、软件架构、系统建模、代码生成、代码分析、人机介面、网络通信和任务调度都有相应的工具支撑,如Windows系统就是PC上集任务调度、人机界面和网络通信一体的标准化平台和工具。在嵌入式系统中,受其资源的限制,妨碍了嵌入式软件开发工具的产生和发展,开发工具的缺乏使嵌入式系统软件的开发难度更加困难。
3.软件开发要求低。嵌入式系统开发的30多年历程中,主要工作集中在硬件设计及硬件驱动程序上,而真正用于增强用户体验、服务于行业的软件无论是工作量还是代码量都很少,因此对软件体系的建立和工具的需求要求不明显。
4.开发人员不适应嵌入式系统之变。MCU厂家的诸侯割据,导致嵌入式系统开发长期奔波于“重造车轮”的低水平重复;在职业教育的源头上,基本上没有一本专业的嵌入式软件开发的教科书,更谈不上设置专门学科。目前除了消费电子领域,嵌入式系统软件开发人员通常来自电子、电气和机械等专业,他们基本上没有受过系统的软件开发教育,所以绝大多数嵌入式软件开发人员的认识还停止在会不会C语言编程这样低层次上。完全不适应嵌入式软件从过去以实现为主的开发模式转化到以服务和维护为主的开发模式。
模式之变 重新定义MCU将颠覆传统应用模式
如果定义MCU是一种低价格、低速度且覆盖面很宽的可编程数模混和型通用集成电路,会产生一种新的电子产品开发模式,这个模式将淡化嵌入式系统概念,颠覆传统MCU应用模式。
曾经MCU是嵌入式系统中最贵的元件,1990年以前,一颗2MIPS速度、128 byte RAM、无ROM的8位MCU MCS8031的价格超过当时一个才出校门本科毕业生的月工资,由于价格高且可编程,不仅一个嵌入式系统只有一个MCU,而且为了更好地发挥MCU的作用,还为它开发了一系列专用外设器件,如:可编程输入/输出芯片8255,可编程定时/计数器8253/8254,可编程串行接口芯片8251……,甚至价格比MCU还高的CPLD和FPGA也是为MCU服务的,所以将MCU定义为 “中央处理器”是名副其实的,因为中央只能有一个,其他芯片都以MCU为中心。
当一颗32位MCU价格还不到北京市最低工资标准的半小时工资时,如果我们再在一颗廉价的电子元件周围配置几颗价格与它相近或者价格比它更高的芯片为它服务时,我们就应该反思这种模式的正确与否。根据目前MCU的现状,笔者将它归纳为以下特点:
一是MCU是普通的集成电路,它不再是中央处理器;二是MCU是可编程的集成电路,它和CPLD和FPGA一样需要二次开发;三是MCU是低速可编程集成电路,MCU以串行运算为主,CPLD和FPGA以并行运算为主,所以MCU的运算速度比CPLD和FPGA要低;四是MCU是数模混和型集成电路,MCU不仅具有DI/DO、PWM、通信和计数等数字外设,而且还含有比较、A/D等模拟外设;五是MCU是通用集成电路,除了速度的限制外,它不仅能实现市场上所有通用集成电路的逻辑运算和数学运算功能外,还能实现它们不能实现的各种复杂科学运算;六是MCU的市场覆盖面很宽,它的价格从5元人民币以下开始,一直延伸到数百元人民币,可以满足不同应用领域的需求。
基于以上方面,我们是否可以这样重新定义MCU:MCU是一种低价格、低速度且覆盖面很宽的可编程数模混和型通用集成电路。如果我们认同上述定义,会产生一种新的电子产品开发模式,这个模式将淡化嵌入式系统概念,颠覆传统MCU应用模式,彻底改变传统电子产品元件体系和开发模式。
在传统的电子产品元件体系和开发模式中,电子产品通常由多个实现数字逻辑运算的数字集成电路、MCU和其他电子元件组成。其开发模式是:首先是从海量的数字集成电路和其电子元件中选出满足系统需求的电子元件,来完成电子产品的硬件开发,接着进行软件开发,但其难度非常高。在笔者从业的20多年里,因元件选型不适当,导致开发不能顺利进行,产品性价比低,产品生命周期短,甚至产品失败的例子举不胜举。
新的电子产品元件体系和开发模式是:电子产品由多个MCU取代了常规的数字集成电路和部分模拟电路,每个MCU通过软件进行二次定制以实现系统中不同的逻辑运算和数学运算,MCU之间通过通信方式进行信息交互。
与传统电子产品元件体系和开发模式相比,新模式一是减少了电子产品的元件种类和数量,减少了开发过程受元件的约束,激发了开发人员的创新激情。二是改变了嵌入式系统的开发模式,由于在同一产品中,MCU由一个变为多个,软件自然由一个大软件分解为多个独立的小软件,增强了嵌入式软件开发人员的专业性,降低了入门门槛。
笔者在开发自动变速器控制器时,将自动变速器中的换档决策控制和换档过程控制分别由两个MCU实施,同样降低了两个不同专业背景在同一控制器中的耦合,使不同的开发人员各司其责,即保证了开发方向朝各个专业的纵向发展,又提高了开发进度。
多年的实践经验证明:在嵌入式系统采用多MCU模式是规避嵌入式系统软件风险(软件开发、维护和更新过程风险)的一项十分有效的措施,其难点在于根据开发团队的具体情况和服务对象特性进行多MCU任务分解,及其MCU之间信息交互模型的建立。
智造之源 基于MCU的ASIC为智造创造条件
嵌入式系统无处不在,投入资金低和技术门槛低的MCU模式扫清了ASIC市场、资金和技术障碍,专业人员只要深入就能找到将知识固化到硅片之中的机会。基于MCU的ASIC模式为全民智造创造了条件。
嵌入式系统是服务于特定对象的,服务对象对嵌入式系统的选择性很小,甚至没有选择。要让嵌入式开发人员掌握服务特定对象的专业知识,或者是具有服务特定对象专业知识的人掌握嵌入式知识,确实不是一件容易的事。
如果不考虑嵌入式系统的接口、通信、人机交互、任务调度等专业功能,MCU只用来完成数据的输入、输出和运算,此时在MCU上进行数据运算与在PC上类似,这就能把在PC上运行的专业程序移植到MCU上运行。嵌入式系统开发人员只需向这颗MCU输入和输出数据就能开发出专业性强的系统。
如果MCU只运行专业程序,它就是“一种为专门目的而设计”的集成电路,与ASIC定义相符合。目前ASIC主要有两种类型,一种是全定制,它是在半导体厂完成制造。另一种是基于CPLD和FPGA的半定制,由用户编程实现功能定制。
利用MCU作为ASIC(称它为“山寨”ASIC也行)的半定制基础元件,投资数百元,非电子信息类的专业人员也能凭将自身的专业知识固化在MCU之中,以实现知识共享。嵌入式系统无处不在,投入资金低和技术门槛低的MCU模式根除了ASIC市场、资金和技术障碍,具备某方面知识的专业人员只要深入就能寻找到将知识固化到硅片之中的机会。基于MCU的ASIC模式为全民智造创造了条件。(本文作者单位为苏州万龙电气集团股份有限公司)