(中文翻译)RSP协议.docVIP

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

Translated By LinFangquan and KongLi GDB远程串行协议 RSP是一系列的基于GNU的嵌入式开发系统的一部分,作者提出了他自己使用GDB远程地调试嵌入式应用的一些论述。 在9月份,我介绍了GDB。我论述了它的远程调试是如何能够调试执行在一个通过串口或者以太网或者其他方式连接到PC上的嵌入式系统上的代码的。尽管也存在着具有这种能力的商业的产品,但是在我的心目中,免费的GDB是一个很不错的解决方案,因为它提供了一个轻型的、功能强大的调试器,它可以工作在嵌入式系统的广大的范围上,包括驱动通讯接口或者资源受限无法得到一般商业化的产品的支持。 在那篇文章我还提到了,为了实现远程调试,gdb需要一个服务——调试代理——一个很小的代码库,它在被调试的目标机器上管理寄存器和主存,通过通信链接响应断点,向gdb报告应用的状态。那篇文章包括了SH-2微控制器的调试桩的一个摘要,但是我实际上在那里并没有打算详细地说明一个完整的调试桩是如何工作的。 我将在本月的GDB RSP——gdb的标准远程通信协议一文(本文)中详细说明。如果你对于你的处理器处理断点和其它事件很满意,那么你需要掌握的全部知识是一些基本的RSP消息格式,它可以让你的嵌入式系统和gdb对话。 协议定义 RSP是一种简单的基于ASCII编码的协议,它使用串口,局域网或者其它任何支持半双工数据交换的通讯方式。 RSP报文以一个美元符($)开头,接着是若干个ASCII字节流,它们是消息的主体,最后以一个井号符(#)结束,两个ASCII十六进制的字符作为消息的校验和附在消息的后面。例如,下面是一个完整的RSP消息包: $m4015bc,2#5a 接收者接到消息之后,立刻回复一条消息内容为”+”或者“-”,以表示他正确无误地收到消息(校验通过),或者接收失败。 一个典型的事件是,gdb给调试目标发出调试命令,调试目标接收消息,并返回一个简单的确认或者错误码。如果是后者被返回了,gdb将报告给使用者(程序员),并且暂停一切正在活动的进程。 控制台输出消息,调试目标会输出文本到gdb的控制台,输出内容是典型的命令-确认信息的顺序。除非当另一个命令已经在执行,否则这个消息可以在任何时候从调试桩发送到gdb。 接下来的段落,描述了RSP若干常用命令。为了说明的需要,我将RSP消息分为三类:寄存器和主存相关的命令,程序控制命令和其它命令。 寄存器和主存相关命令 以下是读写寄存器的命令 Read registers (“g”) Example: $g#67 当它想要知道调试目标当前寄存器的所有信息时,gdb会发送这条命令。以下是一个目标应答消息的例子: + $123456789abcdef0...#xx (0号寄存器(译者按:32位寄存器)内容为: 01号寄存器内容为: 0x9abcdef0, 以此类推) 这个应答是一个有序的字节流,它顺序地指出了寄存器的数据,按照目标宏文件(gdb/config/arch/tm-arch.h (例如, Hitachi SH的目标宏文件gdb/config/sh/tm-sh.h))中定义的顺序。 Write registers (“G”) Example: $G123456789abcdef0...#xx(Set register 0 to register1 to 0x9abcdef0, 以此类推) 这个消息是和读寄存器命令互补的。通过这条命令,gdb提供了一个顺序的字节流,它将要存储到目标处理机的寄存器中的数据在程序执行中断前立即写入。一个应答消息的例子: + $OK#9a Write register N (“P”) Example: $P10=0040149c#b3 (Set register 10(注意是16进制0x10) to the value 0x0040149c 一个返回应答:+ $OK#9a 以下是读写主存的几条命令。 Read memory (“m”) Example: $m4015bc,2#5a (从地址0x4015bc开始,读两个字节的内容。) 一个应答消息示例:+ $2f86#06 Write memory (“M”) Example: M4015cc,2:c320#6d (将长度为2个字节的0xc320写入主存0x4015cc中) 一个应答消息示例:+ $OK#9a 程序控制命令 程序控制命令是gdb用来控制目标机被调试的应用的行为的消息。这些命令要比上面讲述的寄存器-主存控制命令要稍微复杂一些。 Get last signal (“?”) Example: $?#3f 这条命令用来找出目标机是如何到达当前状态的。 Step (“s”) Example: $s#7

文档评论(0)

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

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

1亿VIP精品文档

相关文档