教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社
嵌入式软件系统
嵌入式软件开发工具
嵌入式软件开发工具的分类
根据不同的阶段
嵌入式软件开发工具可以分为
需求分析工具(Requirement Analysis Tools)
软件设计工具(Software Design Tools)
编码、调试工具(Coding Tools)
测试工具(Testing Tools)
配置管理工具、维护工具等
从嵌入式软件开发分类
嵌入式软件开发工具可以分为
- 与嵌入式OS相关的开发工具,用于开发:
- 基于嵌入式OS的应用
- 部分驱动程序等
- 与嵌入式OS无关的开发工具,用于开发:
- 基本的驱动程序
- 辅助硬件调试程序
- 系统软件等
嵌入式软件的交叉开发环境
交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器交叉调试器仿真器、下载器
交叉开发环境
交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接
宿主机(Host) 是用于开发嵌入式系统的计算机
目标机(Target):即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的
在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作
物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种:串口、以太口、OCD(On Chip Debug)方式,如JTAG、BDM
逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接,目前逐步形成了一些通信协议的标准
嵌入式软件实现阶段的开发过程
设计完成后,嵌入式软件的开发进入实现阶段,可分为三个步骤:生成、调试和固化运行
软件的生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。
调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。
固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行
嵌入式软件生成阶段
源代码程序的编写
编译成各个目标模块
链接成可供下载调试或固化的目标程序
交叉编译
把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序
嵌入式软件的调试
交叉调试方式:Rom Monitor、On Chip Debugging
ROM Monitor
- 是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对应用程序的调试
- 在目标机上电或复位后首先执行的就是ROM Monitor,它对目标机进行一些必要的初始化
- 几乎所有的交叉调试器都支持这种方式
- Debug Monitor需要用Crash and Burn方法开发
- ROM Monitor要占用目标机一定数量的资源,如CPU、RAM、ROM和通信设备等资源
仿真(Simulator)开发方式(非交叉)
- 硬件仿真开发:ROM Emulator、ICE、OCD
- 软件仿真开发
嵌入式软件的测试
嵌入式软件测试中经常用到的测试工具有:内存分析工具、性能分析工、覆盖分析工具、缺陷跟踪工具等
测试工具实例:逻辑分析仪
嵌入式软件的固化运行
当调试完成之后,程序代码需要被完全烧入到目标板的非易失性存储器(如ROM或闪存)中,并且在真实的硬件环境上运行,这个过程叫做固化
嵌入式软件开发工具发展趋势
嵌入式软件技术发展
向着开放的、集成化的方向发展
具有系统设计、可视化建模、仿真和验证功能
自动生成代码和文档
具有更高的灵活性