tags:

views:

740

answers:

1

The vxWorks documentation states:

The WDB agent itself is independent of the target operating system: it attaches to run-time OS services through a virtual-function run-time interface. The WDB agent can execute before VxWorks is running (as in the early stages of porting a BSP to a new board)."

How can I use the debug agent before the vxWorks kernel is running?

A: 

First, in order to be able to use the agent to perform pre-kernel debugging, you must have a serial port available for debugging. This serial port has to be initialized and functional as it will be the debug channel.

There is a limitation on how early you can start debugging. WDB based debugging will start after the first hardware initialization function runs (sysHwInit) and before the kernel initialization proper (kernelInit).

Depending on the version of vxWorks being used, there are different ways to achieve this result.

Workbench-based vxWorks builds

In the kernel configuration tool, you must select the following components:

  • WDB serial connection
  • WDB system debugging
  • WDB pre kernel system initialization

Depending on the order you select components, you might get complaints from workbench because some components are mutually exclusive (you can't have WDB END driver with pre-kernel debugging). The order above should be ok.

Command-line builds

Edit the config.h file, and select the following options:

#define WDB_INIT        WDB_PRE_KERNEL_INIT
#define WDB_COMM_TYPE   WDB_COMM_SERIAL
#define WDB_MODE        WDB_MODE_SYSTEM

When vxWorks is compiled with those options, it will perform perform the first phase of hardware initialization and then suspend, waiting for the debug agent running on the host to connect to the target.

At that point, you can perform debugging, single step, etc...

Benoit