- 1、本文档共105页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统与软件——第九章
嵌入式系统与软件 软件学院 实验安排(暂定) 第九章 嵌入式软件开发环境 核心内容 9.1 概述 9.2 交叉开发技术 宿主机与目标机的差别 硬件的差别:处理器不同 软件环境的差异:宿主机上有通用操作系统等系统软件提供软件开发支持,而目标机上除了调试代理没有其他用于嵌入式软件开发的软件资源 一、常用的交叉开发方法 优点: ROM Monitor的缺点 : 3. ROM Emulator方式 4. ICE方式 5. OCD方式 二、交叉开发过程 三、交叉开发环境 9.3 仿真开发技术 仿真开发结构示意 一、仿真开发分类 纯软件仿真开发分类 编程接口级仿真 硬件级仿真开发 二、仿真开发过程 三、仿真开发环境 四、仿真开发环境的特点 9.4 开发环境提供的主要工具 一、项目管理 二、配置剪裁 三、源码编辑 四、目标代码编译生成 1.目标代码生成 2.目标代码优化 3.编译提示信息 4. 库的使用 5. 常用文件后缀 五、交叉调试 交叉调试定义 交叉调试与非交叉调试比较 1. 交叉调试支持的功能 交叉调试的过程框架 2. 任务级调试 任务级调试 3. 系统级调试 系统级调试 六、测试工具 1. 仿真测试 纯软件仿真测试结构框架 2. 交叉测试 仿真信号测试的结构 3. 实时性测试 七、版本管理工具 嵌入式软件版本管理工具的功能结构 9.5 GNU的嵌入式开发环境 一、gcc编译器 1. 编译过程 预处理 编译 汇编 链接 test.c的gcc编译过程 2. 交叉gcc的生成 交叉gcc的生成过程 二、项目编译管理工具make 1. Make命令 2. 目标 3. 宏 Make内部预定义的宏 Make内部预定义的宏 4. 符号 符号 5. 函数 6. 注释 示例 三、gdb调试器 1. Gdb的调试过程 Linux环境下test.c的gdb调试过程 2. Gdb远程调试 宿主机端 宿主机端 宿主机端 通讯系统 调试信息数据包 常用调试命令及参数 常用调试命令及参数 目标机端 目标机端 Stub种类 9.6 Windriver集成开发环境Tornado Tornado Workbench Tornado与Workbench的功能对比 9.7 仿真开发工具ARMulator ARMulator的组成 stub的基本结构 在被调试应用程序的main()函数的开头插入两行代码: 利用breakpoint()函数在程序中插入一个断点,使gdb获得控制权。 以i386-stub.c文件为例: Set_debug_traps()函数的源码如下: Breakpoint()函数的源码如下: BREAKPOINT宏定义如下: 系统接到中断请求后,调用中断向量为3的中断处理函数,实现代码如下: 执行源代码的预处理,处理完后生成一个以“.i”为后缀名的临时文件。 将预处理后生成的源代码编译为后缀名为“.s”的汇编文件。 gcc调用as汇编程序,将汇编语言代码转换为以“.o”为后缀名的中间代码。 它调用ld链接程序,把所有目标代码以及静态库,定位链接生成最后的可执行程序或其他格式的目标文件。 gcc的缺省配置是本地使用。当需要交叉gcc时,可利用Linux环境下提供的一些交叉gcc生成工具来重新配置。 重新生成binutils。 生成Llinux Headers 生成目标机的Glibc 生成交叉GCC 自动查找已修改的源程序文件,并对它们进行编译; 对未改动的源程序文件,如果已经存在中间代码文件(“.o”文件)则不再重新编译; 将所有的中间代码文件和库链接成可执行文件或特定格式的目标文件。 一般语法规则是: make [-f makefile文件名] [其他选项] [目标名] 说明: -f:makefile的文件名字。 目标名:所要更新目标的名称。 两个常用选项。: -n:只显示生成指定目标的各命令,并不 实际执行,可以用来检查make文件中的错误。 -p:显示并检查make文件中的所有宏定义和所有内部规则。 make文件中描述了目标依赖于哪些源程序文件,按照什么样的规则生成。目标的状态取决于所依赖的源程序文件状态。语法规则为: 宏的基本定义语法为: marco_name = string 而已定义宏的引用语法规则为: $(marco_name) 或者 ${marco_name} $@,表示当前目标名。 等价于语句: $*,表示去掉后缀的当前目标名。 $,表示目标所依赖文件名。
文档评论(0)