基于Linux的嵌入式交叉开发技术王兴杰.docVIP

基于Linux的嵌入式交叉开发技术王兴杰.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux的嵌入式交叉开发技术王兴杰

基于Linux的嵌入式交叉开发技术* 王兴杰,李 允,江 浩,李 涛 (西南交通大学信息科学与技术学院,成都610031) 了调试命令和调试信息的数据格式及通信过程。 图4 嵌入式软件的生成阶段图5 交叉调试系统体系结构 此交叉调试的特点是主机端环境为Linux系统,主机调试 器采用GDB+JTAGER的方案,由GDB完成对源文件、目标 文件和符号表的访问处理及与用户的交互,由JTAGER程序封 装对交叉调试的支持;调试协议是JTAGER程序与调试代理程 序之间的通信规范。调试代理程序handler则通过特有的 LDIC指令载入目标芯片的微型指令缓存中。 4.1 调试协议 调试协议是整个交叉调试系统的中心。它规定了主机和 目标机之间的数据通信过程。主机和目标机采用尽量简单的 数据包交互,JTAGER需要发往handler的调试命令包括读写 目标机内存(g和p)、增加断点(b)、继续运行(c)。由于读写 目标机寄存器会频繁发生,采用轮询方式定时完成。 在主机和目标机通信过程中用到的通信协议主要有普通 RX握手协议、快速数据下载握手协议、TX握手协议。 4.2 主机端调试器GDB+JTAGER GDB是公开源码的一种功能强大的通用调试器。它支持 丰富的调试命令和多种编程语言,并支持远程调试方式。运行 GDB的平台通过并行端口(或网口、串口等)连接到已建立运 行环境的目标机时,GDB可以按照远程串行协议(RSP)与目 标机上的插桩程序通信来调试目标系统。但当目标机为裸机 时,GDB无法与之通信而不能调试,所以再增加一个中间软件 JTAGER。其功能是应用JTAG技术实现对裸机的交叉调试。 1)GDB交互数据包 交互过程必须遵守GDBRSP进行数据包处理[4]。数据包 格式为$packet data#checksum。其中:$为数据包的头标志; packet data为数据包内容;#是数据包结束标志;checksum表 示整个数据包的检验码,用来保证数据的正确传送。 在JTAGER运行过程中,其主控循环不断地接收RSP数 据包、解析,并将处理结果封装成应答RSP数据包,交给GDB。 以读内存为例, GDB发往JTAGER的数据包:$mc0018004,4#8d JTAGER应答GDB的数据包:$00d82de9#30 2)JTAGER主控流程 JTAGER在主机上与GDB并行运行。它使用UNIX的I/ O多路转换机制监听指定的tcp调试端口与GDB进行通信。 JTAGER主体控制流程伪码如下: JTAGER主控程序(…) {   初始化目标板的JTAG接口;   往目标板的MiniIC载入handler;   打开GDB远程tcp端口,接收gdb远程调试数据;   while(1)   {    监视tcp调试端口和用户标准输入;    if(有数据包)解析后进入相应调试命令处理函数;    else轮询目标机的传输寄存器TX;   }   收到退出命令作结束程序的处理,进行tcp连接的中断和内 存的回收。 } 4.3 目标机代理handler 目标机调试代理handler按照调试协议[4]和JTAGER进行 调试命令与调试信息的交互。当调试事件发生时作为一个事 件处理器对目标芯片进行控制。需要注意的是,由于微型指令 缓存大小的限制(2KB),handler代码量要尽量地精简。使用 ARM汇编编写,其程序流程伪码如下所示: handler程序流程(…) {   初始化handler,使目标机处于就绪状态(haltmode);   向JTAGER发送目标机就绪的信号;   while(1)   {    等待JTAGER发送相应调试指令;    //通过mrc实现对RX的读出    if(接收到调试指令)进入相应调试处理子程序;    else向JTAGER发送调试结果;    //通过mcr实现对TX的写入   } } 5 系统测试 整个软件系统编译过程中,嵌入式系统的硬件一般采用专 门的测试仪器进行测试[3]。软件则需要有相关的测试技术和 测试工具的支持,并要采用特定的测试策略。嵌入式软件测试 中经常用到的测试工具主要有内存分析工具、性能分析工具、 覆盖分析工具和缺陷跟踪工具等。 在嵌入式软件测试中,常常要在基于目标机的测试和基于 宿主机的测试间作出折中。基于目标机的测试需要消耗较多 的时间和经费;基于宿主机的测试虽然代价较小,但毕竟是在 仿真环境中进行的,因此难以完全反映软件运行时的实际情 况。这两种环境下的测试可以发现不同的软件缺陷,关键是要 对目标机环境和宿主机环境下的测试内容进行合理取舍。 6 嵌入式软件的固化运行 当调试和测试完成后,程序代码需要被完全烧入到目标板 的非易失性存储器中,并且在真实的硬件环境上运行。这个过 程

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档