Q1:小迪小迪,什么是嵌入式系统呀?
嵌入式系统由嵌入式硬件和与之相对应的软件组成,是能够独立进行运作以达成特定目标的器件组合。这里的“软件”包括了软件的运行环境及其操作系统。
Q2:可以再具体讲讲嵌入式软件吗?
嵌入式软件是基于嵌入式系统设计的软件,专为控制、监视或管理嵌入式硬件。华为手机上的鸿蒙操作系统、智能门锁中的控制程序就属于嵌入式软件。
Q3:好像有点了解了。如何区分嵌入式软件与普通软件呢?
最显著的区别在于其专用性,嵌入式软件专为嵌入式系统服务,与硬件设备紧密相连,存在特定的使用场景和运行环境。除此之外,嵌入式系统的应用要求比较苛刻,汽车电子、工业控制、航空航天等安全关键领域对嵌入式软件往往要求有高可靠性,需具备错误处理、故障恢复等功能。
Q4:哇,感觉好专业。那嵌入式系统研发的流程是怎样的呢?
早期的嵌入式系统设计通常采用“硬件优先”的方法,只对软件需求进行粗略估计,首先进行硬件的设计与实现。
Q5:听起来好像存在很多隐患。
是的,一旦在测试时发现问题需要进行修改,就要重复整个设计流程,成本高不说,研发周期也需要拉长。20世纪90年代后期,嵌入式系统的研发就开始普遍使用软硬件协同设计的模式了,即使用统一的方法和工具协同设计软硬件体系结构,从而得到高性能、低代价的优化设计方案。
Q6:现在的开发模式有哪些痛点?
由于嵌入式系统软硬件的耦合性较高,嵌入式软件相比于普通的软件开发存在更多的不确定性,其硬件的多样性与灵活性也成为了阻碍。前期设计软件时需与硬件紧密结合,这种过度依赖硬件的开发模式,使得调试和测试都存在不便,开发人员深受其累。
Q7:针对嵌入式系统的开发痛点,有没有解决方案?
当然有。仿真作为系统工程中不可缺少的一环,在嵌入式系统中也能发挥很大的作用。仿真可以验证模型和程序逻辑的正确性,使开发人员可以在特定的仿真软件环境下进行调试和测试,待到完成后再移植到硬件平台,嵌入式软件的开发进度便能够平行甚至超前于硬件开发进程。
Q8:如何从五花八门的仿真软件中选择适合自己的呢?
首先要明确需求,根据需求进行选型。仿真软件是多领域细分的,大体上可分为两类:
1、物理基类。指通过物理模型计算实现仿真,主要用于对硬件结构进行电磁学、化学、热学、声学、动力学等分析。
2、离散集成类。指将离散的对象抽象化为简化的单元后集成在一起仿真,如将芯片上成千上万个器件进行集成,每个器件被模化为实际模型,集成在一起模拟仿真,用于进行集成电路设计。
Q9:我想找一款用于嵌入式软件测试与程序逻辑验证的仿真软件,有推荐吗?
A9:这就得给你讲讲SkyEye了。SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,其仿真对象是嵌入式系统的硬件环境,可以为嵌入式系统开发和测试验证提供虚拟运行环境,满足你的需求自然不在话下。
Q10:具体是如何实现的呢?
SkyEye可以通过对真实硬件系统的单元模块进行软件化建模仿真,来运行不同架构的目标系统软件。开发人员可在SkyEye所搭建的仿真环境中进行与在真实环境中完全一致的开发测试工作,执行过程和结果验证可保持一致,有效解决了嵌入式软件研发过分依赖硬件资源的问题。
Q11:使用仿真环境的必要性是什么?
可以从三个方面来看:
1、仿真环境相较硬件更易搭建和管理,可以节省大量金钱、场地、人力成本。
2、硬件环境难以支撑分布式开发团队的开发需求,而仿真环境可以无限复制,供团队多人协同使用。
3、开发人员可以在SkyEye中完成在真实硬件上无法完成的工作,如逆向执行、保存现场等,对于查找软件缺陷很有帮助。
Q12:好厉害,SkyEye有已经成功落地的案例吗?
当然。以SkyEye在综合航空电子系统(ICP,Integrated Core Processor)中的应用为例:ICP是非常典型的大型嵌入式复杂系统,硬件测试环境耗费时间长、占用场地大、维护成本高,而SkyEye可采用分布式部署的方式,通过数据传输总线将多种子系统交联在一起,实现复杂机载系统信息的测量、采集、传输、监控和显示功能,并完成飞行控制、发动机控制、导航、性能管理等任务。
Q13:除了测试、调试以外,SkyEye还有哪些应用场景呢?
SkyEye可以通过迪捷软件自研的协同仿真平台与其他仿真软件进行联合仿真,从而实现嵌入式系统的全面模拟,实现真实设备的数字孪生。同时,SkyEye配置了自动化测试接口和命令行控制功能,可以通过GitLab、Jenkins等持续集成平台加入到嵌入式开发的持续集成流水线中,提升研发效率。