在开发Embedded RTOS时,多是采用交叉式的开发方式,VxWorks就是一个典型代表。运行VxWorks的远程设备,称之为Target;运行IDE(例如Workbench、Tornado)的本地设备,称之为Host。貌似也有人跟它们叫下位机和上位机。
Target端,即VxWorks系统里,需要启动一个服务,WDB Agent。Host端,例如Windows里,启动一个工具,Target Server,通过底层的物理通道(例如Network)连接Target。然后Host的其它工具,例如Debugger,就可以访问Target的VxWorks了。VxWorks的售价这么高,一个很重要的原因,是它提供了很多故障定位工具。而这些工具很多都是通过Target Server,工作在run-time模式的
可以看到,IDE里很多工具还依赖于一个注册到Host的系统服务: Wind River Registry (wtxregd)。这个服务如果启动不了,Target Server是没法工作的
看看Target Server怎么用吧
首先,VxWorks Image里需要包含WDB组件INCLUDE_WDB
如果是6.9,还要包含INCLUDE_WDB_ALWAYS_ENABLED。或者在创建VIP时,就选中Enable WDB Target Agent
包含了INCLUDE_WDB后,VIP默认还会包含INCLUDE_WDB_COMM_END,也就是用END方式来连接WDB
如果参数WDB_END_DEVICE_NAME使用默认的NULL,则VxWorks使用Bootrom中的参数来设置WDB的device
VxWorks启动后,会提示WDB的方式和状态
而这个WDB agent是以任务形式提供的
这个优先级是由参数WDB_TASK_PRIORITY提供的
如果Target端没有END或者没有网卡驱动,可以使用串口来连接WDB
在《Component之SIO》里提到过,没有PC Console时,一般用串口0来做CONSOLE_TTY,因此WDB_TTY_CANNEL默认使用串口1
当Target端准备好之后,接下来看Host端了
在WorkBench的Remote Systems窗口里,新建一个Target Server Connection
通常只需要设置三个参数就可以连接WDB了
如果WDB用的串口,Backend就选wdbserial,波特率要与Target的WDB_TTY_BAUD一致
其它参数可以先用默认值。在最后一个页面里,默认选中了Immediately connect to target if possible
点击Finish后,这个connection就会自动连接。以后再次连接时,可以手动点击Connect
Target Server连上之后
Remote Systems里就能看到(并控制)Target端的任务与进程的状态了
其它很多工具也可以用了,例如Host Shell、Debugger、System Viewer、ScopeTools等等
等不用Target Server的时候,最好点击Disconnect,而不是直接关闭Target Server窗口
这正是:
交叉工具在线调(run-time),千军万马独木桥(WDB)。
可用网卡或串口(END/Serial),双方一致配合好。