已阅读5页,还剩101页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统及应用,计算机机学院,桑楠,sn,第九章,嵌入式软件开发环境,核心内容,交叉开发技术仿真开发技术开发环境提供的主要工具GNU的嵌入式开发环境Windriver的集成开发环境仿真开发工具ARMulator,9.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,交叉调试定义,调试器能够通过某种方式远程控制目标机上被调试程序的运行模式,并且具备查看和修改目标机上的内存、寄存器以及被调试程序中的变量等功能。,交叉调试与非交叉调试比较,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.c,Linux环境下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.6Windriver集成开发环境Tornado,内核配置程序WindConfig装载器Loader图形化的交叉调试器WDB工程配置工具集成仿真VxSimC/C+编译环境ObjectCenter命令行执行工具WindSh,Tornado,软件逻辑分析仪WindView对象浏览器Brow
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 横纹肌溶解症护理查房全流程与并发症防控实践
- 危害分析与HACCP计划建立控制程序培训
- 2025《阿房宫赋》铺陈手法课件
- 2025《离骚》中屈原香草美人意象的象征意义课件
- 2025《答司马谏议书》改革决心彰显课件
- 伸缩杆及杆头使用管理规定培训
- 配电室安全管理规范与实践培训
- 计量器具管理制度培训
- 2026年广东女子职业技术学院单招职业技能考试题库及答案详解(夺冠系列)
- 2026年广东生态工程职业学院单招职业倾向性测试题库附答案详解(巩固)
- 7.3粤港澳大湾区的内外联系 课件 2025-2026学年湘教版地理八年级下册
- 春季护肤专业知识课件
- 2026年湖南工艺美术职业学院单招职业技能测试题库及完整答案详解1套
- 幼儿园集团化办园人员外包服务采购项目方案投标文件(技术标)
- TNAHIEM《智慧药房建设与运维管理标准》
- 护士培训的不足
- T∕GDRX 4004-2025 送气工行为规范
- 房屋市政工程生产安全重大事故隐患判定标准
- 2026年温州科技职业学院单招职业技能考试题库及答案解析(夺冠)
- 胎盘早剥的课件
- 2025年11月近期典型事故案例警示教育
评论
0/150
提交评论