1、嵌入式ARM系统原理与实例开发嵌入式ARM系统原理与实例开发北京大学出版社出版杨宗德编著2007年7月嵌入式ARM系统原理与实例开发嵌入式系统软硬件结构嵌入式系统软硬件结构 嵌入式软件开发工具及开发模式嵌入式软件开发工具及开发模式 第5章嵌入式系统结构及软件开发模式 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著3嵌入式硬件最小系统结构 ARM处理器FLASHSDRAMPOWERRTCGPIOROMUSBRS232RJ45Key嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著4嵌入式软件系统基本模型 嵌入式ARM系统原理与实例开发202
2、3-2-13北京大学出版社出版杨宗德编著5通用计算机系统与嵌入式系统对比 嵌入式ARM系统原理与实例开发嵌入式系统软硬件结构嵌入式系统软硬件结构 嵌入式软件开发工具及开发模式嵌入式软件开发工具及开发模式 第5章嵌入式系统结构及软件开发模式 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著7嵌入式软件开发的特点和技术挑战嵌入式软件开发需要软硬件开发环境和工具 嵌入式软硬件必须协同设计 需要新的任务设计方法 开发过程完成后,系统应用程序代码需要固化到系统中并进行功能、性能和可靠性测试 技术挑战:软件的要求更高,开发工作量和难度更大,需要较大的知识集合 嵌入式ARM系统原
3、理与实例开发2023-2-13北京大学出版社出版杨宗德编著8嵌入式软件开发环境1)交叉开发环境 交叉开发软件一般为一个整合编辑、编译、汇编、链接、调试、工程管理及函数库等功能模块的集成开发环境IDE(Intergrated Development Environment)。所谓交叉是指在一种CPU及其环境上开发另一种CPU及其环境上运行的程序。嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著9嵌入式软件开发环境2)软件模拟环境 软件模拟环境也称为指令集模拟器ISS(Instruction Set Simulator)软件模拟不可能完全代替真正的硬件环境,这种模拟调试
4、只能作为一种初步调试,主要是用作用户程序的模拟运行,用来检查语法、程序的结构等简单错误,用户最终还必须在真实的硬件环境中实际运行调试,完成整个应用的开发。嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著10嵌入式软件开发环境3)评估电路板 一般用来作为开发者使用的开发平台、学习板、实验板,它们可以作为应用目标板出来之前的软件测试、硬件调试的电路板 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著11嵌入式应用软件开发的基本流程基于交叉开发环境的嵌人式应用软件开发主要分如下几个步骤:开发环境的建立、源代码编辑阶段、交叉编译和链接、重定位和下
5、载、联机调试几个基本阶段。开发环境建立 源文件编辑阶段 编译 链接 下载 调试 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著12嵌入式应用软件开发的基本流程链接器命令文件编译预处理编译器汇编器Archive工具链接器和定位器头文件(*.h,*.hpp)可重定位目标文件库文件(*.a,*.lib)头文件(*.h,*.hpp)C/C+源代码汇编源代码源文件列表源文件列表源代码编辑阶段源文件编译阶段链接与重定位调试与下载阶段重定位文件表(*.o,*.a)共享目标文件(*.o,*.a)可执行映象(*.elf,*.coff)链接映射文件(*.map)设备程序员目标开发系统
6、嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著13嵌入式软件开发的可移植性和可重用性 在确保软件的正确性、实时性的前提下,必须关注软件的可移植性和可重用性。嵌入式软件与通用软件的不同在于嵌入式应用软件高度依赖于目标应用的软硬件环境,软件的部分任务功能函数由和处理器密切相关的汇编语言完成,可移植性差。一个运行良好的嵌入式软件或其中的部分子程序可能在今后的开发中被应用于类似的应用领域。原有的代码已被反复应用和维护,具有更好的稳定性。在原有的代码上进行移植将会减少开发的周期、提高开发效率、节约开发成本 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨
7、宗德编著14嵌入式软件开发的可移植性和可重用性 采用下面的方法可以提高应用软件的可移植性和可重用性。多用高级语言少用或者不用汇编语言 将不可移植部分局域化 提高代码的可重用性(标准化接口)嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著15嵌入式开发的考虑要素复杂计算与资源紧缺用户界面的选择实时性多任务多速率制造成本功耗成品的体积嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著16软硬件协同设计嵌入式系统设计是使用一组物理硬件和软件来完成所需功能的过程。系统是指任何由硬件、软件或者两者的结合来构成的功能设备。由于嵌入式系统是一个专用的系统
8、,所以嵌入式产品的设计过程中,软件设计和硬件设计是紧密结合、相互协调的。这就产生了一种全新的发展中的设计理论软硬件协同设计这种方法的特点是在设计时,从系统功能的实现考虑,把实现时的软硬件同时考虑进去,硬件设计包括芯片级“功能定制”设计。既可以最大限度的利用有效资源、缩短开发周期,又能取得更好的设计效果。嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著17软硬件协同设计嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著18嵌入式开发的基本流程系统定义与需求分析 系统设计方案的初步确立 初步设计方案性价比评估与方案评审论证 完善初步方案、初步方
9、案实施 软硬件集成测试 系统功能性能测试及可靠性测试 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著19系统定义与需求分析系统设计初步说明文档系统总体设计完善初步方案、初步方案实施系统功能划分与软硬件协同设计处理器选择与基本接口器件选择操作系统选择开发环境选择初步设计方案性价比评估与方案评审论证元器件选择原理图绘制印刷板设计样板试制与测试硬件最终功能测试系统硬件测试软件引导程序编制操作系统移植驱动程序开发软件测试硬件设计软件设计软硬件集成测试系统功能性能、测试及可靠性测试系统初步设计方案与设计描述文档样机满足要求开发流程图YNYN嵌入式ARM系统原理与实例开发20
10、23-2-13北京大学出版社出版杨宗德编著20常用嵌入式系统软件开发工具 面向硬件的开发工具 如ADS嵌入式操作系统开发 如GCC面向特定操作系统的应用开发工具 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著21使用ADS开发程序流程及调试方式 嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著22嵌入式操作系统开发GCC系列工具嵌入式操作系统多用C/C+开发,因此,要编译操作系统内容,一般都使用GCC系列工具。GCC可以用来编译uClinux、Linux、ECOS、uC/OS-II等操作系统。嵌入式ARM系统原理与实例开发2023-2-
11、13北京大学出版社出版杨宗德编著23面向特定操作系统的应用工具 WinCE应用软件开发:如果选用的操作系统为WinCE,则应用软件需要选择WinCE的Embeded VC开发环境。Symbian应用程序开发:如果开发Symbian手机应用程序,则Symbian应用程序开发选择的是Symbian的C/C+集成开发环境。Linux应用程序开发:如果开发的是Linux应用程序,则选择的开发工具是Linux程序开发工具(GCC/G+/GDB/Makefile)。嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著24Linux交叉编译调试环境开发程序过程 嵌入式ARM系统原理与
12、实例开发2023-2-13北京大学出版社出版杨宗德编著25Linux交叉编译调试环境开发程序过程(1)程序首先在宿主机(安装与应用目标板同样内核的Linux操作系统)编辑编译,生成可执行文件。(2)通过网络共享方式将该程序共享给目标板,因为此处是开发Linux应用程序,目标板已经移植了Linux操作系统,因此,可以充分利用Linux操作系统强大的网络功能,通过共享的方式的原因一方面是减少下载程序的时间,另一方面也是因为目标板资源有很,尽可能少占用目标板资源的考虑。(3)通过Linux操作系统远程登陆方式登陆到目标板Linux,并在目标板上运行交叉调试服务器,然后在目标板上运行共享到目标板的Linux应用程序。(4)通过交叉调用器终端访问目标板的交叉调试服务器,将该程序的运行结果反馈到宿主机上,查看运行结果是否正确。嵌入式ARM系统原理与实例开发2023-2-13北京大学出版社出版杨宗德编著26带BootLoader系统软件开发实例验见教材5.2节。