(中文翻译)RSP协议

(中文翻译)RSP协议

ID:41478698

大小:43.00 KB

页数:10页

时间:2019-08-25

(中文翻译)RSP协议_第1页
(中文翻译)RSP协议_第2页
(中文翻译)RSP协议_第3页
(中文翻译)RSP协议_第4页
(中文翻译)RSP协议_第5页
资源描述:

《(中文翻译)RSP协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、TranslatedByLinFangquanandKongLiGDB远程串行协议RSP是一系列的基于GNU的嵌入式开发系统的一部分,作者提出了他自己使用GDB远程地调试嵌入式应用的一些论述。在9月份,我介绍了GDB。我论述了它的远程调试是如何能够调试执行在一个通过串口或者以太网或者其他方式连接到PC上的嵌入式系统上的代码的。尽管也存在着具有这种能力的商业的产品,但是在我的心目中,免费的GDB是一个很不错的解决方案,因为它提供了一个轻型的、功能强大的调试器,它可以工作在嵌入式系统的广大的范围上,包括驱动

2、通讯接口或者资源受限无法得到一般商业化的产品的支持。在那篇文章我还提到了,为了实现远程调试,gdb需要一个服务——调试代理——一个很小的代码库,它在被调试的目标机器上管理寄存器和主存,通过通信链接响应断点,向gdb报告应用的状态。那篇文章包括了SH-2微控制器的调试桩的一个摘要,但是我实际上在那里并没有打算详细地说明一个完整的调试桩是如何工作的。我将在本月的GDBRSP——gdb的标准远程通信协议一文(本文)中详细说明。如果你对于你的处理器处理断点和其它事件很满意,那么你需要掌握的全部知识是一些基本的R

3、SP消息格式,它可以让你的嵌入式系统和gdb对话。协议定义RSP是一种简单的基于ASCII编码的协议,它使用串口,局域网或者其它任何支持半双工数据交换的通讯方式。RSP报文以一个美元符($)开头,接着是若干个ASCII字节流,它们是消息的主体,最后以一个井号符(#)结束,两个ASCII十六进制的字符作为消息的校验和附在消息的后面。例如,下面是一个完整的RSP消息包:$m4015bc,2#5a接收者接到消息之后,立刻回复一条消息内容为”+”或者“-”,以表示他正确无误地收到消息(校验通过),或者接收失败。

4、一个典型的事件是,gdb给调试目标发出调试命令,调试目标接收消息,并返回一个简单的确认或者错误码。如果是后者被返回了,gdb将报告给使用者(程序员),并且暂停一切正在活动的进程。控制台输出消息,调试目标会输出文本到gdb的控制台,输出内容是典型的命令-确认信息的顺序。除非当另一个命令已经在执行,否则这个消息可以在任何时候从调试桩发送到gdb。接下来的段落,描述了RSP若干常用命令。为了说明的需要,我将RSP消息分为三类:寄存器和主存相关的命令,程序控制命令和其它命令。寄存器和主存相关命令以下是读写寄存器

5、的命令Readregisters(“g”)Example:$g#67当它想要知道调试目标当前寄存器的所有信息时,gdb会发送这条命令。以下是一个目标应答消息的例子:+$123456789abcdef0...#xx(0号寄存器(译者按:32位寄存器)内容为:0x12345678,1号寄存器内容为:0x9abcdef0,以此类推)这个应答是一个有序的字节流,它顺序地指出了寄存器的数据,按照目标宏文件(gdb/config//tm-.h(例如,HitachiSH的目标宏文件gdb/co

6、nfig/sh/tm-sh.h))中定义的顺序。Writeregisters(“G”)Example:$G123456789abcdef0...#xx(Setregister0tox12345678,register1to0x9abcdef0,以此类推)这个消息是和读寄存器命令互补的。通过这条命令,gdb提供了一个顺序的字节流,它将要存储到目标处理机的寄存器中的数据在程序执行中断前立即写入。一个应答消息的例子:+$OK#9aWriteregisterN(“P”)Example:$P10=0040149c

7、#b3(Setregister10(注意是16进制0x10)tothevalue0x0040149c.)一个返回应答:+$OK#9a以下是读写主存的几条命令。Readmemory(“m”)Example:$m4015bc,2#5a(从地址0x4015bc开始,读两个字节的内容。)一个应答消息示例:+$2f86#06Writememory(“M”)Example:M4015cc,2:c320#6d(将长度为2个字节的0xc320写入主存0x4015cc中)一个应答消息示例:+$OK#9a程序控制命令程序控

8、制命令是gdb用来控制目标机被调试的应用的行为的消息。这些命令要比上面讲述的寄存器-主存控制命令要稍微复杂一些。Getlastsignal(“?”)Example:$?#3f这条命令用来找出目标机是如何到达当前状态的。Step(“s”)Example:$s#73当用户发出单步调试Step命令时,gdb向目标机发送。Continue(“c”)Example:$c#63当用户发出Continue命令时,gdb向目标机发送。“Lastsignal

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。