嵌入式系统开发基本流程
面向具体应用的嵌入式开发决定了嵌入式开发的方法、流程各有不同,这里仅给出一般的嵌入式开发的具体过程:
- 系统定义与需求分析阶段
- 方案设计阶段
- 详细设计阶段
- 软硬件集成测试阶段
- 系统功能性能测试及可靠性测试阶段
嵌入式软件开发
1.嵌入式软件开发的特点和技术挑战
2.嵌入式软件开发环境
3.嵌入式应用软件开发的基本流程
4.嵌入式软件开发的可移植性和可重用性
嵌入式软件开发的特点和技术挑战
- 开发的复杂度
- 嵌入式软件开发需要软硬件开发环境和工具
- 嵌入式软硬件必须协同设计
- 需要新的任务设计方法
- 需要转变观念,熟悉新的开发模式
- 开发过程完成后,系统应用程序代码需要固化到系统中进行功能、性能和可靠性测试
- 技术挑战:技术门槛提高,需要学习全新的RTOS技术;软件的要求更高,开发工作量和难度更大
嵌入式软件开发环境
嵌入式开发环境组成
- 交叉开发环境
- 软件模拟环境
- 目标板与评估板
交叉开发环境
嵌入式系统应用软件的开发属于跨平台开发,因此需要一个交叉开发环境。
交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式,它通常采用宿主机/目标机模式。用来开发的通用计算机可以选用比较常见的PC机 等,运行通用的Windows等操作系统。
开发计算机一般称宿主机,嵌入式设备称为目标机,在宿主机上编译好的程序,下载到目标机上运行,交叉开发环境提供调试工具对目标机上运行的程序进行调试。
交叉开发环境一般由运行于宿主机上的交叉开发软件、宿主机到目标机的调试通道组成。
运行于宿主机上的交叉开发软件最少必须包含编译调试模块,其编译器为交叉编译器。作为宿主机的一般为基于x86体系的桌上型计算机,而编译出的代码必须在目标机处理器体系结构上运行,这就是所谓的交叉编译了。在宿主机上编译好目标代码后,通过宿主机到目标机的调试通道将代码下载到目标机,然后由运行于宿主机的调试软件控制代码在目标机上运行调试。
远程调试结构图如下:
基于交叉开发环境的嵌入式应用软件开发主要分如下几个步骤:
- 开发环境的建立;
- 源代码编辑阶段;
- 交叉编译和链接;
- 联机调试;
- 固化与测试。
嵌入式应用软件开发的基本流程
软件模拟环境
软件模拟环境也称为指令集模拟器IIS(Instruction Set Simulator),在很多时候为保证项目进度,硬件和软件开发往往同时进行,这时作为目标机的硬件环境还没有建立起来,软件的开发就需要一个模拟环境来进行调试。
模拟开发环境建立在交叉开发环境基础之上,是对交叉开发环境的补充。这时,除了宿主机和目标机之外,还需要提供一个在宿主机上模拟目标机的环境,使得开发好的程序直接在这个环境里运行调试。
目标板与评估板
- 应用目标板是系统最终的电路板。
- 评估板一般用来作为开发者使用的学习板、实验板,可以作为应用目标板出来之前的软件测试、硬件调试的电路板。
- 开发评估电路板并不是嵌入式应用开发必须的,对于有经验的工程师完全可以自行独立设计自己的应用电路板和根据开发需要设计实验板。
- 好的评估电路板一般文档齐全,对处理器的常用功能模块和主流应用都有硬件实现,并提供电路原理图和相关开发例程与源代码供用户设计自己的应用目标板和应用程序作参考。
嵌入式软件开发的可移植性和可重用性
- 在嵌入式软件的开发过程中,在确保软件的正确性、实时性的前提下,必须关注软件的可移植性和可重用性。
- 可移植性和可重用性的程度应该根据实际的应用情况来考虑。因为嵌入式应用软件有自身的许多特点。追求过高的可移植性和可重用性可能会恶化应用软件的实时性能和增加软件的代码量,这对于资源有限的嵌入式应用环境是得不偿失的。
- 我们可以在资源有限、满足系统的需求的情况下尽可能把可移植性和可重用性作为第二目标,致力于开发正确性、实时性能、代码量、可移植性和可重用性相对均衡的嵌入式应用软件。
提高应用软件的可移植性和可重用性的方法:
- 多用高级语言少用汇编语言
- 将不可移植部分局域化
- 提高代码的可重用性