嵌入式应用系统开发分为硬件开发和软件开发。应用系统的开发一般都采用“宿主机/目标板”的开发模式,即利用宿主机(PC)上丰富的软硬件资源、良好的集成开发环境和调试工具来调试硬件与目标板上的程序,然后通过交叉编译环境生成目标代码和可执行文件,通过联合测试行动小组(Joint Test Action Group,JTAG)接口/串行接口/USB接口/网络接口等下载到目标板上,利用交叉调试器监控程序运行,根据调试器来观察运行的状态,实时分析、处理软硬件出现的问题。调试完成后,将目标程序下载到目标板上,完成整个开发过程。
当前嵌入式系统开发已经逐步规范化,开发过程主要包括用户系统需求、体系结构设计、系统软硬件设计、外围控制装置电路设计、抗干扰设计、系统集成、硬件调试、软件调试、系统联合调试、系统最终测试,最后形成产品。具体描述如下。
1)用户系统需求分析。根据用户的需求,确定设计任务与设计目标,提炼出系统设计说明书文本,作为设计依据和验收标准。系统的需求一般分为功能性需求和非功能性需求,功能性需求是系统的基本功能,如输入的开关量个数、输出的开关量个数、模拟量的输入/输出路数、操作方式、与外部设备的连接与通信方式等;非功能性需求包括系统的稳定性、成本、功耗、体积和重量等。
2)系统结构设计。描述系统如何实现所述的功能性需求和非功能性需求,包括对硬件、软件和执行装置的功能划分,以及系统软件、硬件的选取等。有些功能既可以用硬件实现,也可以用软件实现。用硬件实现的特点是元器件费用的投入大,但系统的运行速度快;用软件实现,系统开发的人工投入大,器件开销小,系统运行的速度较慢。一个好的结构设计是设计成功与否的关键所在。
3)系统软硬件设计。为了加快产品的开发速度,软硬件的设计往往是同步进行的。对于嵌入式系统的开发,硬件的开发难度大,涉及的知识面较宽,但是它占用总开发时间为10%~20%;软件的开发难度小一些,但占用了开发的大部分时间。如果要求系统具有较高的程序运行效率且复杂度不高,可以采用裸机开发,但是它的开发周期相对长一些;如果要求系统开发周期短且系统的复杂度高,可以在移植操作系统后进行软件开发,但是系统程序的运行效率相对低一些。
4)系统软硬件联合调试。一般先进行硬件、控制装置的调试,必要时也需要控制程序的配合;然后进行软件的调试,可以先在宿主机上进行软件的仿真调试,这里主要调试一些算法或数据处理程序的结果,最后把硬件、软件和控制装置集成在一起调试。实际上集成调试时并没有严格的层次,发现哪有问题就及时解决,不断地完善系统设计存在的不足之处。
5)系统实验室测试和现场测试。对设计调试好的系统按照系统确定的任务和目标进行逐一测试,看是否满足系统的功能要求。最后客户进行现场测试,检查能否在实际的工况环境下可靠运行,如果不能可靠运行则还要进行硬件和软件的修改。