软件之痛 嵌入式软件开发实力比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语言编程这样低层次上。完全不适应嵌入式软件从过去以实现为主的开发模式转化到以服务和维护为主的开发模式。