嵌入式系统与软件——第九章_第1页
嵌入式系统与软件——第九章_第2页
嵌入式系统与软件——第九章_第3页
嵌入式系统与软件——第九章_第4页
嵌入式系统与软件——第九章_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 软件学院嵌入式系统与软件软件学院桑楠2 软件学院实验安排(暂定) 14周-17周 每周四下午14:30-17:30 主楼A2-402 肖堃 3 软件学院第九章嵌入式软件开发环境4 软件学院核心内容 交叉开发技术 仿真开发技术 开发环境提供的主要工具 GNU的嵌入式开发环境 Windriver的集成开发环境 仿真开发工具ARMulator5 软件学院9.1 概述 需要协调管理特殊的硬件资源 软件具有可配置裁剪特性 需要交叉编译环境 需要交叉调试环境 需要交叉测试环境 需要软件固化工具嵌入式软件开发的特点:6 软件学院9.2 交叉开发技术宿主机:开发系统目标机:运行平

2、台7 软件学院宿主机与目标机的差别 硬件的差别:处理器不同 软件环境的差异:宿主机上有通用操作系统等系统软件提供软件开发支持,而目标机上除了调试代理没有其他用于嵌入式软件开发的软件资源8 软件学院一、常用的交叉开发方法 1.Crash and Burn方式 在宿主机上编写代码; 在宿主机编译应用程序,生成可执行程序; 固化到目标机的非易失存储器中; 启动运行,若正常则转到; 不正确则根据目标板上的信号显示估计错误位置,改写代码,纠正错误; 返回重复操作; 固化完成。9 软件学院2. ROM Monitor方式方式 10 软件学院优点: 实时控制目标机的内存单元、寄存器、设置断点等 调试采用目标

3、机本身的串口、网口、USB口进行11 软件学院ROM Monitor的缺点 : 目标机内存使用与运行时不一致 目标机CPU运行与正常运行时不一致 无法调试通讯占用端口的相关代码 若目标机CPU不支持硬件断点,则无法调试设置数据断点 无法调试系统启动初始化过程12 软件学院3. ROM Emulator方式方式 ROM Emulator是一种用于替代目标机上ROM芯片的设备,插接到目标机的ROM插座上,取代ROM内存。13 软件学院4. ICE方式方式 ICE是一种用于替代目标机上CPU的设备,可执行目标机CPU的指令,能将内部的信号输出到被控制的目标机,ICE上的内存也可以被映射到用户的程序空

4、间。 14 软件学院ICE方式方式 NoImage15 软件学院ICE方式的特殊调试功能 支持软件断点和硬件断点的设置 设置复杂的断点和触发器 实时跟踪目标程序的运行,并可实现选择性的跟踪 支持“Time Stamp” 允许用户设置“Timer” 提供“Shadow RAM”,支持非干扰调试查询。16 软件学院5. OCD方式方式 采用两级CPU模式: 正常运行模式 调试模式17 软件学院OCD方式的优点方式的优点 性价比高 不占用目标机硬件资源 调试环境和运行环境一致 能调试底层系统软件18 软件学院OCD方式的缺点 调试的实时性不如ICE强 不支持非干扰调试查询 CPU必须有OCD功能 O

5、CD标准不统一 19 软件学院BDM方式 20 软件学院二、交叉开发过程 软件生成软件调试软件固化21 软件学院应用软件生成阶段 22 软件学院应用软件调试阶段 23 软件学院应用软件固化阶段 24 软件学院三、交叉开发环境 25 软件学院9.3 仿真开发技术 利用计算机仿真技术模拟嵌入式硬件系统的真实运行,使软件开发和系统集成在虚拟平台上进行。26 软件学院仿真开发结构示意仿真开发结构示意 27 软件学院一、仿真开发分类 纯软件仿真开发是利用宿主机上的资源模拟目标机实际硬件电路的运行,构建应用软件运行所需的虚拟硬件环境,提供嵌入式软件开发和调试的真正“软”平台。28 软件学院纯软件仿真开发分

6、类 应用级仿真 编程接口级仿真 硬件级仿真29 软件学院编程接口级仿真 30 软件学院硬件级仿真开发 31 软件学院二、仿真开发过程二、仿真开发过程 32 软件学院三、仿真开发环境 33 软件学院四、仿真开发环境的特点 不需要提供实际的目标硬件环境; 编译调试都在宿主机上进行; 可以最大限度地保证软硬件同时开发。34 软件学院9.4 开发环境提供的主要工具 项目管理器 项目配置工具 源码编辑工具 CRTL(C Run-Time Library) RTOS开发支持包 交叉编译工具 交叉调试工具 交叉测试 性能分析工具等35 软件学院一、项目管理 项目管理器一般采用通用的工作区、项目管理方式,这能

7、较好的支持在不同硬件平台上的软件移植。36 软件学院二、配置剪裁 编译参数配置工具 实时操作系统裁剪工具 内存配置工具37 软件学院三、源码编辑 标准的文本编辑功能 支持语法色彩 简单的语法检查功能 源程序函数索引、定位功能 显示调试信息 文本保存的多中备份机制38 软件学院四、目标代码编译生成 嵌入式开发环境一般提供工具make,它利用编译器、汇编器、链接器和库管理器等工具,根据Makefile文件,将源代码转换成目标代码。39 软件学院1.目标代码生成 设置目标代码生成选项; C源码预处理; C源码编译成汇编代码; 汇编语言程序转换为可重定位目标代码; 可重定位的目标模块链接成目标程序;

8、文件格式转换。40 软件学院2.目标代码优化 合并已有常量; 公共子表达式删除; 控制流优化; 寄存器变量使用优化; 循环优化; 冗余指令删除; 窥孔优化。41 软件学院3.编译提示信息 错误信息:致命错误、一般错误和警告。 过程信息 状态信息42 软件学院4. 库的使用 在开发大中型软件时,常把一些编译好的模块统一放到一个库中。 43 软件学院5. 常用文件后缀 .c或.cc 或 .cxx 或 .cpp .h或.hpp .s或.asm .S .o或.obj .a或.lib .elf .omf .hex .eep .cof .s19或.s2或.s3 .lst .map44 软件学院五、交叉调试

9、 硬件:连接线、仿真头、转换板等连接硬件。 软件:宿主机端调试工具和目标机端ROM Monitor45 软件学院交叉调试定义 调试器能够通过某种方式远程控制目标机上被调试程序的运行模式,并且具备查看和修改目标机上的内存、寄存器以及被调试程序中的变量等功能。46 软件学院交叉调试与非交叉调试比较交叉调试交叉调试本地调试本地调试Debugger和Debuggee运行在不同的计算机Debugger和Debuggee运行在同一台计算机运行时不一定需要操作系统的调试支持运行时需要操作系统的调试支持Debuggee装载由Debugger或Loader完成Debuggee的装载是由专门的Loader程序完成

10、需要通过外部通信的方式来控制Debuggee不需要外部的通信方式来控制Debuggee可以直接调试不同指令集的程序只能直接调试相同指令集的程序47 软件学院1. 交叉调试支持的功能 内存 寄存器 断点 程序执行 变量 显示模式 OS-aware48 软件学院交叉调试的过程框架49 软件学院2. 任务级调试 调试对象是一个用户任务(集),用户可以自定义调试范围。 50 软件学院任务级调试51 软件学院3. 系统级调试 即内核级调试,调试对象是目标机上除调试代理外的所有程序,包括RTOS本身。 52 软件学院系统级调试53 软件学院六、测试工具 嵌入式系统采用交叉测试,即嵌入式软件测试必须由宿主机

11、和目标机协作完成。54 软件学院1. 仿真测试 仿真测试环境可分为两类: 一类要求用户改写I/O部分代码。 无须改动其源程序。55 软件学院纯软件仿真测试结构框架 56 软件学院2. 交叉测试 目标机的测试分为两类: 仿真信号测试 实物测试57 软件学院仿真信号测试的结构 58 软件学院3. 实时性测试 静态时间分析。不执行被测程序,通过分析估计执行时间。 动态实时检测。实际执行程序测试程序的时间特性。包括:在线仿真器、模拟器、插桩技术。 59 软件学院七、版本管理工具 版本管理是用户对项目文件版本进行控制的工具软件。包括:版本库和临时工作区。 60 软件学院嵌入式软件版本管理工具的功能结构

12、61 软件学院9.5 GNU的嵌入式开发环境 C编译器gcc make工具GNU make 开发调试工具gdb62 软件学院一、gcc编译器 gcc前端支持多种高级语言,后端支持多种平台,它是一个交叉编译器,可以把源代码编译成在其他硬件平台上运行的可执行代码。63 软件学院1. 编译过程 预处理 编译 汇编 链接64 软件学院预处理 执行源代码的预处理,处理完后生成一个以“.i”为后缀名的临时文件。65 软件学院编译 将预处理后生成的源代码编译为后缀名为“.s”的汇编文件。66 软件学院汇编 gcc调用as汇编程序,将汇编语言代码转换为以“.o”为后缀名的中间代码。 67 软件学院链接 它调用

13、ld链接程序,把所有目标代码以及静态库,定位链接生成最后的可执行程序或其他格式的目标文件。68 软件学院test.c的gcc编译过程69 软件学院2. 交叉gcc的生成 gcc的缺省配置是本地使用。当需要交叉gcc时,可利用Linux环境下提供的一些交叉gcc生成工具来重新配置。70 软件学院交叉gcc的生成过程 重新生成binutils。 生成Llinux Headers 生成目标机的Glibc 生成交叉GCC71 软件学院二、项目编译管理工具make 自动查找已修改的源程序文件,并对它们进行编译; 对未改动的源程序文件,如果已经存在中间代码文件(“.o”文件)则不再重新编译; 将所有的中间

14、代码文件和库链接成可执行文件或特定格式的目标文件。72 软件学院1. Make命令一般语法规则是: make -f makefile文件名 其他选项 目标名说明: -f:makefile的文件名字。 目标名:所要更新目标的名称。 两个常用选项。: -n:只显示生成指定目标的各命令,并不 实际执行,可以用来检查make文件中的错误。 -p:显示并检查make文件中的所有宏定义和所有内部规则。73 软件学院2. 目标 make文件中描述了目标依赖于哪些源程序文件,按照什么样的规则生成。目标的状态取决于所依赖的源程序文件状态。语法规则为:74 软件学院3. 宏宏的基本定义语法为: marco_nam

15、e = string而已定义宏的引用语法规则为: $(marco_name) 或者 $marco_name75 软件学院Make内部预定义的宏 $,表示当前目标名。等价于语句:76 软件学院Make内部预定义的宏 $*,表示去掉后缀的当前目标名。 $,表示目标所依赖文件名。77 软件学院4. 符号 %,对应于具体的文件名 ,表示命令本身不在屏幕上显示。 :=,变量定义,它不是“=”符号。78 软件学院符号例如:结果是:79 软件学院5. 函数语法格式如下: $(funcname arg1, , argn) 例如: SOURCES=$(wildcard*.c) 产生一个所有以“.c”为后缀名的文

16、件的列表,然后存入变量SOURCES中。 80 软件学院6. 注释 make文件的注释是用“#”开头的语句。81 软件学院示例82 软件学院三、gdb调试器 运行程序,给程序加所需的执行条件。 使程序在断点处暂停运行,并可继续运行。 显示程序暂停时的状态信息。 允许在暂停的程序中改变运行数据。 程序运行出错后可以事后分析。 支持远程调试。 支持源码级调试。 支持反汇编调试,可调试无源码的可执行文件。83 软件学院1. Gdb的调试过程串口接收程序test.c84 软件学院Linux环境下test.c的gdb调试过程85 软件学院2. Gdb远程调试 宿主机端 通讯系统 目标机端86 软件学院宿

17、主机端 宿主机上运行gdb主程序。调试步骤为: 设置目标机的类型、通讯断口及通讯协议 建立宿主机与目标机的连接, 进行与本地调试相似的远程调试。87 软件学院宿主机端 gdb提供了target命令设置调试目标及其参数,建立连接,格式为: target TYPE PARAMETERSgdb的target命令支持多种类型的调试目标设备。88 软件学院宿主机端 在使用串口建立连接之前,须使用Set命令设置串口的波特率。如:set remotebaud 9600 再使用target remote命令指定与目标机进行串口通信端口。如:target remote /dev/ttyS089 软件学院通讯系统

18、 硬件上:串口、并口、以太网口及红外等。 软件上:专门定义的远程串行通信协议(RSP)。 90 软件学院调试信息数据包 调试信息,开始用“$”符号作为标记 ,结尾用“#”符号。 校验码,调试信息中所有字符的ASCII码相加后取256的模。格式:$#91 软件学院常用调试命令及参数 g:查看CPU寄存器的值。 G:设置CPU寄存器的值。 maddr,count:从addr位置开始读count字节的数据。 Maddr,count:从addr位置开始写count字节的数据。92 软件学院常用调试命令及参数 c/caddr:在当前位置继续执行程序或从addr开始。 s/saddr:单步执行当前的指令,

19、或者执行到指定的addr位置. k:杀掉target进程。 ?:打印出最近的信号值。 T:允许目标机的stub发送gdb需要的基本寄存器信息。93 软件学院目标机端 目标机上嵌入式应用程序须预先加入了stub模块,由stub模块进行串口驱动,进行gdb远程串口通信协议的解析,完成与宿主机gdb的通讯。94 软件学院目标机端95 软件学院Stub种类 i386-stub.c:适用于Intel公司386系列及兼容处理器。 m68k-stub.c:适用于Motorola公司68K系列处理器。 sh-stub.c:适用于Hitachi SH结构的处理器。 sparc-stub.c:适用于SPARC结构

20、的处理器。 sparcl-stub.c:适用于Fujitsugongsi的SPARCLITE结构的处理器。96 软件学院stub的基本结构 在被调试应用程序的main()函数的开头插入两行代码: 利用breakpoint()函数在程序中插入一个断点,使gdb获得控制权。以i386-stub.c文件为例:97 软件学院Set_debug_traps()函数的源码如下:98 软件学院Breakpoint()函数的源码如下:BREAKPOINT宏定义如下:99 软件学院 系统接到中断请求后,调用中断向量为3的中断处理函数,实现代码如下:100 软件学院9.6 Windriver集成开发环境Torna

21、do 内核配置程序WindConfig 装载器Loader 图形化的交叉调试器WDB 工程配置工具 集成仿真VxSim C/C+编译环境ObjectCenter 命令行执行工具WindSh 101 软件学院Tornado 软件逻辑分析仪WindView 对象浏览器Browser 显示软件包ScopePak 性能检测包PerformancePak 代码测试器CodeTest 编辑工具Visual SlickEdit for Tornado 102 软件学院Workbench 103 软件学院Tornado与Workbench的功能对比 表表9-2 Tornado与与Workbench的功能对比的功能对比项目项目Tornado Workbench 工程管理基本的工程管理功能,对分级的工程支持有限,并需要手工修改makefile等,比较麻烦支持任意工程的分级控制,采用简单的“拖拉”方式就可完成工程项目的分级构造,非常方便工程项目支持可下载的工程项目和客户化的VxWorks工程项目增加了对系统引导工程项目、实时进程工程项目、文件系统工程项目、用户定制工程项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论