版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统与软件软件学院桑楠sn@实验安排(暂定)14周-17周每周四下午14:30-17:30主楼A2-402肖xiaoxuanbai@163.com第九章嵌入式软件开发环境核心内容交叉开发技术
仿真开发技术开发环境提供的主要工具GNU的嵌入式开发环境Windriver的集成开发环境仿真开发工具ARMulator9.1
概述需要协调管理特殊的硬件资源软件具有可配置/裁剪特性需要交叉编译环境需要交叉调试环境需要交叉测试环境需要软件固化工具嵌入式软件开发的特点:9.2
交叉开发技术宿主机:开发系统目标机:运行平台宿主机与目标机的差别硬件的差别:处理器不同软件环境的差异:宿主机上有通用操作系统等系统软件提供软件开发支持,而目标机上除了调试代理没有其他用于嵌入式软件开发的软件资源一、常用的交叉开发方法
1.CrashandBurn方式在宿主机上编写代码;在宿主机编译应用程序,生成可执行程序;固化到目标机的非易失存储器中;启动运行,若正常则转到⑦;不正确则根据目标板上的信号显示估计错误位置,改写代码,纠正错误;返回②重复操作;固化完成。2.ROMMonitor方式
优点:实时控制目标机的内存单元、寄存器、设置断点等调试采用目标机本身的串口、网口、USB口进行ROMMonitor的缺点:目标机内存使用与运行时不一致目标机CPU运行与正常运行时不一致无法调试通讯占用端口的相关代码若目标机CPU不支持硬件断点,则无法调试设置数据断点无法调试系统启动初始化过程3.ROMEmulator方式
ROMEmulator是一种用于替代目标机上ROM芯片的设备,插接到目标机的ROM插座上,取代ROM内存。4.ICE方式
ICE是一种用于替代目标机上CPU的设备,可执行目标机CPU的指令,能将内部的信号输出到被控制的目标机,ICE上的内存也可以被映射到用户的程序空间。ICE方式
ICE方式的特殊调试功能
支持软件断点和硬件断点的设置设置复杂的断点和触发器实时跟踪目标程序的运行,并可实现选择性的跟踪支持“TimeStamp”允许用户设置“Timer”提供“ShadowRAM”,支持非干扰调试查询。5.OCD方式
采用两级CPU模式:正常运行模式调试模式OCD方式的优点
性价比高不占用目标机硬件资源调试环境和运行环境一致能调试底层系统软件OCD方式的缺点
调试的实时性不如ICE强不支持非干扰调试查询
CPU必须有OCD功能
OCD标准不统一BDM方式
二、交叉开发过程
软件生成软件调试软件固化应用软件生成阶段
应用软件调试阶段
应用软件固化阶段
三、交叉开发环境
9.3
仿真开发技术利用计算机仿真技术模拟嵌入式硬件系统的真实运行,使软件开发和系统集成在虚拟平台上进行。仿真开发结构示意
一、仿真开发分类
纯软件仿真开发是利用宿主机上的资源模拟目标机实际硬件电路的运行,构建应用软件运行所需的虚拟硬件环境,提供嵌入式软件开发和调试的真正“软”平台。纯软件仿真开发分类
应用级仿真编程接口级仿真硬件级仿真编程接口级仿真
硬件级仿真开发
二、仿真开发过程
三、仿真开发环境
四、仿真开发环境的特点
不需要提供实际的目标硬件环境;编译调试都在宿主机上进行;可以最大限度地保证软硬件同时开发。9.4
开发环境提供的主要工具项目管理器项目配置工具源码编辑工具
CRTL(CRun-TimeLibrary)
RTOS开发支持包交叉编译工具交叉调试工具交叉测试性能分析工具等一、项目管理
项目管理器一般采用通用的工作区、项目管理方式,这能较好的支持在不同硬件平台上的软件移植。二、配置剪裁
编译参数配置工具实时操作系统裁剪工具内存配置工具三、源码编辑
标准的文本编辑功能支持语法色彩简单的语法检查功能源程序函数索引、定位功能显示调试信息文本保存的多中备份机制四、目标代码编译生成
嵌入式开发环境一般提供工具make,它利用编译器、汇编器、链接器和库管理器等工具,根据Makefile文件,将源代码转换成目标代码。1.目标代码生成
设置目标代码生成选项;
C源码预处理;
C源码编译成汇编代码;汇编语言程序转换为可重定位目标代码;可重定位的目标模块链接成目标程序;文件格式转换。2.目标代码优化
合并已有常量;公共子表达式删除;控制流优化;寄存器变量使用优化;循环优化;冗余指令删除;窥孔优化。3.编译提示信息
错误信息:致命错误、一般错误和警告。
过程信息
状态信息4.库的使用
在开发大中型软件时,常把一些编译好的模块统一放到一个库中。5.常用文件后缀
.c或.cc或.cxx
或.cpp.h或.hpp.s或.asm.S.o或.obj.a或.lib.elf.omf.hex.eep.cof.s19或.s2或.s3.lst.map五、交叉调试
硬件:连接线、仿真头、转换板等连接硬件。
软件:宿主机端调试工具和目标机端ROMMonitor交叉调试定义
调试器能够通过某种方式远程控制目标机上被调试程序的运行模式,并且具备查看和修改目标机上的内存、寄存器以及被调试程序中的变量等功能。交叉调试与非交叉调试比较交叉调试本地调试Debugger和Debuggee运行在不同的计算机Debugger和Debuggee运行在同一台计算机运行时不一定需要操作系统的调试支持运行时需要操作系统的调试支持Debuggee装载由Debugger或Loader完成Debuggee的装载是由专门的Loader程序完成需要通过外部通信的方式来控制Debuggee不需要外部的通信方式来控制Debuggee可以直接调试不同指令集的程序只能直接调试相同指令集的程序1.交叉调试支持的功能内存寄存器断点程序执行变量显示模式
OS-aware交叉调试的过程框架2.任务级调试调试对象是一个用户任务(集),用户可以自定义调试范围。任务级调试3.系统级调试即内核级调试,调试对象是目标机上除调试代理外的所有程序,包括RTOS本身。系统级调试六、测试工具
嵌入式系统采用交叉测试,即嵌入式软件测试必须由宿主机和目标机协作完成。1.仿真测试
仿真测试环境可分为两类:一类要求用户改写I/O部分代码。无须改动其源程序。纯软件仿真测试结构框架
2.交叉测试
目标机的测试分为两类:仿真信号测试实物测试仿真信号测试的结构
3.实时性测试
静态时间分析。不执行被测程序,通过分析估计执行时间。
动态实时检测。实际执行程序测试程序的时间特性。包括:在线仿真器、模拟器、插桩技术。
七、版本管理工具
版本管理是用户对项目文件版本进行控制的工具软件。包括:版本库和临时工作区。嵌入式软件版本管理工具的功能结构
9.5GNU的嵌入式开发环境
C编译器gccmake工具GNUmake
开发调试工具gdb一、gcc编译器
gcc前端支持多种高级语言,后端支持多种平台,它是一个交叉编译器,可以把源代码编译成在其他硬件平台上运行的可执行代码。1.编译过程预处理编译汇编链接预处理执行源代码的预处理,处理完后生成一个以“.i”为后缀名的临时文件。编译将预处理后生成的源代码编译为后缀名为“.s”的汇编文件。汇编
gcc调用as汇编程序,将汇编语言代码转换为以“.o”为后缀名的中间代码。链接它调用ld链接程序,把所有目标代码以及静态库,定位链接生成最后的可执行程序或其他格式的目标文件。test.c的gcc编译过程2.交叉gcc的生成
gcc的缺省配置是本地使用。当需要交叉gcc时,可利用Linux环境下提供的一些交叉gcc生成工具来重新配置。交叉gcc的生成过程重新生成binutils。生成LlinuxHeaders
生成目标机的Glibc
生成交叉GCC二、项目编译管理工具make
自动查找已修改的源程序文件,并对它们进行编译;对未改动的源程序文件,如果已经存在中间代码文件(“.o”文件)则不再重新编译;将所有的中间代码文件和库链接成可执行文件或特定格式的目标文件。1.Make命令一般语法规则是:
make[-fmakefile文件名][其他选项][目标名]说明:
-f:makefile的文件名字。
目标名:所要更新目标的名称。两个常用选项。:
-n:只显示生成指定目标的各命令,并不实际执行,可以用来检查make文件中的错误。
-p:显示并检查make文件中的所有宏定义和所有内部规则。2.目标
make文件中描述了目标依赖于哪些源程序文件,按照什么样的规则生成。目标的状态取决于所依赖的源程序文件状态。语法规则为:3.宏宏的基本定义语法为:
marco_name=string而已定义宏的引用语法规则为:$(marco_name)或者
${marco_name}Make内部预定义的宏
$@,表示当前目标名。等价于语句:Make内部预定义的宏
$*,表示去掉后缀的当前目标名。
$<,表示目标所依赖文件名。4.符号
%,对应于具体的文件名
@,表示命令本身不在屏幕上显示。
:=,变量定义,它不是“=”符号。符号例如:结果是:5.函数语法格式如下:
$(funcnamearg1,…,argn)例如:
SOURCES=$(wildcard*.c)
产生一个所有以“.c”为后缀名的文件的列表,然后存入变量SOURCES中。
6.注释
make文件的注释是用“#”开头的语句。示例三、gdb调试器
运行程序,给程序加所需的执行条件。使程序在断点处暂停运行,并可继续运行。显示程序暂停时的状态信息。允许在暂停的程序中改变运行数据。程序运行出错后可以事后分析。支持远程调试。支持源码级调试。支持反汇编调试,可调试无源码的可执行文件。1.Gdb的调试过程串口接收程序test.cLinux环境下test.c的gdb调试过程2.Gdb远程调试宿主机端通讯系统目标机端宿主机端宿主机上运行gdb主程序。调试步骤为:设置目标机的类型、通讯断口及通讯协议建立宿主机与目标机的连接,进行与本地调试相似的远程调试。宿主机端
gdb提供了target命令设置调试目标及其参数,建立连接,格式为:
targetTYPEPARAMETERSgdb的target命令支持多种类型的调试目标设备。宿主机端在使用串口建立连接之前,须使用Set命令设置串口的波特率。如:setremotebaud9600
再使用targetremote命令指定与目标机进行串口通信端口。如:targetremote/dev/ttyS0通讯系统
硬件上:串口、并口、以太网口及红外等。
软件上:专门定义的远程串行通信协议(RSP)。调试信息数据包
调试信息,开始用“$”符号作为标记,结尾用“#”符号。
校验码,调试信息中所有字符的ASCII码相加后取256的模。格式:$<调试信息>#<校验码>常用调试命令及参数
g:查看CPU寄存器的值。
G:设置CPU寄存器的值。
maddr,count:从addr位置开始读count字节的数据。
Maddr,count:从addr位置开始写count字节的数据。常用调试命令及参数
c/caddr:在当前位置继续执行程序或从addr开始。
s/saddr:单步执行当前的指令,或者执行到指定的addr位置.k:杀掉target进程。
?:打印出最近的信号值。
T:允许目标机的stub发送gdb需要的基本寄存器信息。目标机端目标机上嵌入式应用程序须预先加入了stub模块,由stub模块进行串口驱动,进行gdb远程串口通信协议的解析,完成与宿主机gdb的通讯。目标机端Stub种类
i386-stub.c:适用于Intel公司386系列及兼容处理器。
m68k-stub.c:适用于Motorola公司68K系列处理器。
sh-stub.c:适用于HitachiSH结构的处理器。
sparc-stub.c:适用于SPARC结构的处理器。
sparcl-stub.c:适用于Fujitsugongsi的SPARCLITE结构的处理器。stub的基本结构在被调试应用程序的main()函数的开头插入两行代码:
利用breakpoint()函数在程序中插入一个断点,使gdb获得控制权。以i386-stub.c文件为例:Set_debug_traps()函数的源码如下:Breakpoint()函数的源码如下:BREAKPOINT宏定义如下:系统接到中断请求后,调用中断向量为3的中断处理函数,实现代码如下:9.6
Windriver集成开发环境Tornado
内核配置程序WindConfig
装载器Loader
图形化的交叉调试器WDB
工程配置工具集成仿真VxSimC/C++编译环境ObjectCenter
命令行执行工具WindSh
Tornado软件逻辑分析仪WindView
对象浏览器Browser显示软件包ScopePak
性能检测包PerformancePak
代码测试器CodeTest
编辑工具VisualSlickEditforTornadoWorkbenchTornado与Workbench的功能对比
表9-2Tornado与Workbench的功能对比项目TornadoWorkbench工程管理基本的工程管理功能,对分级的工程支持有限,并需要手工修改makefile等,比较麻烦支持任意工程的分级控制,采用简单的“拖拉”方式就可完成工程项目的分级构造,非常方便工程项目支持可下载的工程项目和客户化的VxWorks工程项目增加了对系统引导工程项目、实时进程工程项目、文件系统工程项目、用户定制工程项目等的支持编辑器功能比较简单,只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《地产融资税收分析》课件
- 2024年度冷链物流车队租赁合同
- 2024年度保险合同保险责任及违约金支付规定
- 2024年度汽车制造关键技术研发合同
- 04版货物买卖合同标的说明
- 2024年度办公软件定制开发合同
- 2024年度建筑施工合同:某开发商新建住宅小区施工合同
- 2024年度环保工程承包合同:工业废水处理项目合作
- 04版信息技术咨询合同
- 2024年度技术服务合同技术支持与服务期限
- 粗细集料筛分数据(精辟)
- NS2000变电站综合自动化系统辅助装置技术使用说明书(2006-5-25)
- 检验科标本拒收记录
- 药剂科质量与安全管理小组工作制度及职责
- 生活垃圾处置中心项目可行性研究报告写作范文
- 地下水池施工方案
- 关于初中英语的论文试谈初中英语写作教学
- 新人教版八年级英语上册第六单元.ppt
- 工程部维修工考核表
- 村级后备干部基本情况登记表
- 柔性接口给水管道支墩计算程序(基于《10S505》)beta2
评论
0/150
提交评论