位置:51电子网 » 技术资料 » 嵌入式系统

Angel实现调试器请求的功能

发布时间:2008/12/23 0:00:00 访问次数:473

  (1)报告存储器和处理器状态

  angel可以相应设置调试器查看存储器和处理器状态的请求。具体操作过程如下:

  当调试器要求查看存储器内容时,angel中的一个函数接收调试器想要查询的存储器的地址,然后将地址范围内的数据以字节流的方式复制到数据缓冲区中,最后数据以adp数据包的形式返回调试器。

  在angel得到处理器控制权时,它将各寄存器的数据保存在一个数据块中。当调试器要求查看存储器内容时,保存寄存器值的数据块将被封存在一个adp数据包中,返回到调试器;当调试器请求修改某寄存器内容时,angel'改变数据块中的相应数据;当angel释放对处理器的控制权时,该数据块被写回到各寄存器中。

  (2)下载应用程序映像文件

  当下载应用程序映像文件到目标系统时,调试器向目标系统上的angel发送一系列的存储器写入adp消息;angel将这些数据写入到存储器中的相应位置。

  存储器写入消息比其他的adp消`患都要长。当用户将angel移植到自己的目标系统中时,必须保证系统中的设备驱动程序可以处理长度超过256字节的消息。

  存储器写入消息实际的长度可以在移植angel时配置。

  (3)设置断点

  angel使用3条未定义的指令来实现设置断点。这3条指令的编码如下所示。

  ·对于little-endian格式的arm程序,使用指令oxetfddefe。

  ·对于big-endian格式的arm程序,使用指令oxetffdefe。

  ·对于thu血b程序,使用指令oxdefe。

  当调试器在目标代码的某个位置设置一个断点时,angel首先保存该位置原来的指令,然后将该指令替换成一个未定义的指令。

  当断点被删除,或者调试器需要查看包含断点在内的存储区域时,angel将未定义指令恢复成原来的指令。

  当调试器运行断点处的指令时,angel将未定义指令恢复成原来的指令,并执行该指令。

  当angel在应用程序运行过程中检测到一条未定义的指令时,angel执行的操作如下所示。

  (1)对于arm程序,读取(lr-4)处的指令;对于thumb程序,读取(lr-2)处的指令。

  (2)如果该指令是angel中预定义的用于产生断点的未定义指令,angel将执行下面的操作。

  ·停止当前应用程序的执行。

  ·向调试器发送一条消息,包括断点状态。

  ·循环查询调试器回应的命令。

  (3)如果该指令不是angel中预定义的用于产生断点的未定义指令,angel将执行下面的操作。

  ·向调试器报告遇到了未定义的指令。

  ·循环查询调试器回应的命令。

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



  (1)报告存储器和处理器状态

  angel可以相应设置调试器查看存储器和处理器状态的请求。具体操作过程如下:

  当调试器要求查看存储器内容时,angel中的一个函数接收调试器想要查询的存储器的地址,然后将地址范围内的数据以字节流的方式复制到数据缓冲区中,最后数据以adp数据包的形式返回调试器。

  在angel得到处理器控制权时,它将各寄存器的数据保存在一个数据块中。当调试器要求查看存储器内容时,保存寄存器值的数据块将被封存在一个adp数据包中,返回到调试器;当调试器请求修改某寄存器内容时,angel'改变数据块中的相应数据;当angel释放对处理器的控制权时,该数据块被写回到各寄存器中。

  (2)下载应用程序映像文件

  当下载应用程序映像文件到目标系统时,调试器向目标系统上的angel发送一系列的存储器写入adp消息;angel将这些数据写入到存储器中的相应位置。

  存储器写入消息比其他的adp消`患都要长。当用户将angel移植到自己的目标系统中时,必须保证系统中的设备驱动程序可以处理长度超过256字节的消息。

  存储器写入消息实际的长度可以在移植angel时配置。

  (3)设置断点

  angel使用3条未定义的指令来实现设置断点。这3条指令的编码如下所示。

  ·对于little-endian格式的arm程序,使用指令oxetfddefe。

  ·对于big-endian格式的arm程序,使用指令oxetffdefe。

  ·对于thu血b程序,使用指令oxdefe。

  当调试器在目标代码的某个位置设置一个断点时,angel首先保存该位置原来的指令,然后将该指令替换成一个未定义的指令。

  当断点被删除,或者调试器需要查看包含断点在内的存储区域时,angel将未定义指令恢复成原来的指令。

  当调试器运行断点处的指令时,angel将未定义指令恢复成原来的指令,并执行该指令。

  当angel在应用程序运行过程中检测到一条未定义的指令时,angel执行的操作如下所示。

  (1)对于arm程序,读取(lr-4)处的指令;对于thumb程序,读取(lr-2)处的指令。

  (2)如果该指令是angel中预定义的用于产生断点的未定义指令,angel将执行下面的操作。

  ·停止当前应用程序的执行。

  ·向调试器发送一条消息,包括断点状态。

  ·循环查询调试器回应的命令。

  (3)如果该指令不是angel中预定义的用于产生断点的未定义指令,angel将执行下面的操作。

  ·向调试器报告遇到了未定义的指令。

  ·循环查询调试器回应的命令。

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!