随着通信技术、智能终端、云计算等基础支撑技术的发展,嵌入式软件功能的丰富程度日益上升,已不再局限于21世纪初的基础功能,在航空航天、工业控制、医疗设备、消费电子、汽车电子、信息家电、网络通信等领域得到大规模应用,为加快经济发展、提升生活便利水平、提高工作效率起到促进作用。
与之相对应的挑战也接踵而至:伴随着功能的丰富与拓展,嵌入式软件规模逐渐扩大,但因其偏向私域、定制化的特点,导致嵌入式软件的开发缺乏统一规范,很大概率存在一定缺陷。一旦涉及航空航天、汽车等安全关键领域,这些可能存在的缺陷就会对人身、财产安全方面带来极大威胁。
为什么嵌入式软件相较普通应用软件更易存在缺陷?
最根本的原因是,嵌入式软件需要依赖真实硬件才能运行,那么在软件开发初期,硬件资源未生产调试完成之前,软件开发处于盲盒状态,极大地增加了软件开发的不确定性。可以说,在嵌入式软件开发的初期阶段,不具备调试的条件。
要解决这一问题并不难,时至今日,仿真已在众多领域得到了广泛应用,对嵌入式软件而言也是如此,甚至更为有利,因为实物调试对嵌入式软件而言的风险实在太高:
1. 烧录风险:在硬件资源比较充裕的情况下,嵌入式软件的功能开发与验证需要不断重复完成烧录调试,而烧录本身具有一定的风险性和不确定性。烧录失败可能导致集成在板卡上的存储设备失效。由于独立更换存储设备的成本较高,最终结果往往是板卡整体报废,甚至会导致设备的损坏,带来不必要的财产损失。
2. 环境风险:嵌入式软件的实物调试依赖硬件环境,因此外界环境的影响,如静电、水等不确定因素很可能会引起硬件损坏,导致调试工作无法顺利进行,进而影响工期与交付、上市时间。
3. 场景限制:嵌入式软件的调试存在特定场景无法验证的问题,如太空射线导致的设备失灵。根据国内外对航天故障的统计结果,40%左右的故障源自太空辐射:1993年8月21日,美国五颗卫星同时失效,原因是使用的同一批定时器芯片均因宇宙射线辐照而失效;1994年,我国发射的“风云二