The dbg directory contains the platform-dependant code for the debug agent, and some driver code that is necessary for debugging your BSP (that is the console and watchdog drivers). There are four files located at this top level:
Imakefile
dbgBsp.c
uart.c
wdt.c
C__SRCS = dbgBsp.c ns16550Bsp.c AS_SRCS = OBJS = $(C__SRCS:.c=.o) $(AS_SRCS:.s=.o) DRIVERS = \ $(DRV_DIST_BIN)/dbg/ns16550.o BspProgTarget(dbgBsp, dbgBsp_init, $(OBJS), $(DRIVERS) $(BSP_LIBS)) DistProgram(dbgBsp, $(MYBSP_DIST_BIN)$(REL_DIR)) Depend($(C__SRCS) $(AS_SRCS))
Note that dbgBsp relocatable binary file is linked with the ns16550.o object, which is located in the DRV component.
#include <bki/bki.h> #include <bki/dbgBsp.h> #include <drv/dbg/dbgUart.h> #include <drv/dbg/dbgWdt.h> DbgBsp dbgBsp = { dbgBsp_initDrivers, dbgUart_ioctl, dbgUart_mayGet, dbgUart_getChar, dbgUart_mayPut, dbgUart_putChar, dbgBsp_ioRemap, dbgBsp_boardReset, dbgWdt_setStoppedFlag }; unsigned int hostStopped = 0; void dbgBsp_init (BootConf* conf) { /* debug BSP specific initialization code */ conf->dbgBsp = dbgBsp; } static void dbgBsp_initDrivers (int port, struct DbgBsp_sgtty* stty) { /* code for UART and WDT intialization */ } static void dbg_boardReset (int mode) { /* code for your board reset */ } static void dbgBsp_ioRemap (int flags, void* base) { if (flags & DKI_IOREMAP_WDT) { /* WDT device remap */ } if (flags & DKI_IOREMAP_UART) { /* UART device remap */ } } static void dbgWdt_setStoppedFlag (unsigned char v) { hostStopped += (v ? 1 : (hostStopped ? -1 : 0)); }
Note that dbgBsp.c needs to be adapted for your board.
#include <drv/dbg/ns16550Bsp.h> void ns16550_init(int port) { /* Code for your board */ } void ns16550_outb(unsigned int reg, unsigned char val) { /* Code for your board */ } unsigned char ns16550_inb(unsigned int reg) { unsigned char c; /* Code for your board */ return c; } unsigned short ns16550_divisor(unsigned int baud) { unsigned short divisor; /* Code for your board */ return divisor; } void ns16550_ioremap(void* newbase) { /* Code for your board */ }
Note that the example above is for an ns16550 UART. The file will be need to be adapted for your board.