vxworks+debug
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形化交叉调试器简介
1. 简介
CrossWind/WDB是tornado提供的基于源代码的调试工具,它支持任务级和系统级调试,支持混合代码和汇编代码显示,并且支持目标机同时调试。WindDebug(WDB)协议是一种用于调试的私有协议,目标机(target)通过WindDebug(WDB)协议与开发机(HOST)之间交互通信。
主机-目标机交互方式如下:
HOST ┆ Target
┌──────>wtxregd ┆
v ^ ┆
Tool<────┐│┆VxWorks
Tool<────┼> tgtsvr <────────------->WDB Agent
Tool<────┘┆
本地必须启动一个target server,目标机中必须有WDB agent,这样才能进行交叉调试。
target server(目标机代理)
Target server提供基于主机的目标机资源管理,以便于Tornado工具访问目标机,功能如下:
与目标机上的debug引擎进行通讯
动态模块下载和卸载
常驻主机的目标机符号表
在目标机上为主机上的工具分配内存
缓存目标机代码text段
支持虚拟IO
Target server增强了主机和目标机之间的灵活性,使得主机工具对目标机的影响最小,主机工具与主机和目标机之间的通信方式互相独立,所有的Tornado工具均使用WindRiver Tool Exchange协议(缩写为WTX)与target server通信。WTX协议具体内容参见Tornado API指南。
Target server通过下列方式响应工具的WTX请求:
操作缓存中的信息
发送请求到目标机上的WDB agent中
Wtxregd
在启动target server和工具之前要先启动wtxregd。Tornado工具、registry和target server可以运行在不同主机上,Tornado registry程序必须运行在指定的主机上。windows下为Tools=>Options...=>Tornado Registry页面中指定的主机,tornado 工具与目标机通过target server(tgtsvr)进行交互,target server提供: 网络、串口、NetROM或者用户自定义连接上的通信
常驻主机的目标机符号表
动态模块下载和卸载
缓存目标机RAM中程序的text段
在target上创建虚拟IO路径
Wind Registry程序wtxregd负责管理tornado工具与target server之间连接所需的各种信息。tornado工具首先与registry进行交互,获取target server的相关信息。
WDB代理
WDB调试代理运行在目标机上,与target server进行交互,执行命令并返回结果。WDB代理位于target server和Tornado工具之间,可以完成以下功能: 读取或修改内存
设置或清除断点
创建、启动、停止或删除任务
调用函数
收集系统目标信息
通常WDB代理作为一个任务运行在目标机上,因此获得最佳性能。但这种情况下只能进行任务级调试。也叫做task或internal模式。通常我们可以看到在任务中有twdbTask 这个任务(如图1所示)。
图 1
由于WDB代理不依赖于VxWorks,所以也能够执行系统级调试--例如:调试中断服务程序或内核运行起来之前的代码。将WDB代理与VxWorks分开运行才能进行系统调试。
也叫做external或system模式。WDB代理做为一个组件,如果要使用交叉调试,则需要在bootConfig.c中配置将其添加进来(如图所示)。默认的vxworks映像中定义了WDB 代理,并开启了WDB代理支持。所有目标机代理相关的模块均位于/development tool components/WDB agent components/.下。几乎所有目标机的默认配置为:包含系统级和任务级两种调试方式,采用END方式进行通信。在系统开始多任务切换之前进行调试,需要设置为单一系统级调试模式,要调试中断服务程序,则必须选择external agent模式。既选择任务模式又选择系统模式,vxworks将创建external和task两种WDB代理。当进入或退出系统调试时,代理会自动切换。
图 2
target server与WDB代理之间的通信遵守WindDebug(WDB)协议, WDB 代理使用目标机内存来满足上位机工具的请求,例如:下载目标代码,创建变量,生成任务或运行命令。由于代理使用单独的内存区域,使得Tornado工具对目标机的影响降到最小。主机-目标机通信方式如图3所示:
图 3
所有的工具均连接到主机上的target server,target server负责处理与WDB agent 之间的通信细节,Tornado支持TCP/IP,串口和NetROM等连接方式。
通过串口线进行调试时,请使用最高可靠性的数据传输。速率。
2. 配置:
我们在日常开发中调试最常用的任务级调试,目前用的比较多的也是通过网口连接到目标机上进行交叉调试。通过tornado提供的工具,我们可以很方便访问vxworks shell、进行单步deug、查看内存中的变量。下面具体描述通过网口通信方式的搭建步骤:
环境:tornado 2.2.1
源码文件(编译elf的源代码)
本地编译后生成的elf文件(与目标机此时加载的image是一样的,否则会提示校验和不对)
配置target server:
a)从开始菜单中选择tools->target Server->config.(图4所示)
图 4
b)出现界面如下:
Description:主要是针对该服务器的描述。
Target Server:填本地机IP地址。
Target Ip Address:目标机IP地址。
Target Server properti: