如何调试VxBu驱动的xxxRegister( )函数

设备的VxBus驱动包含xxxRegister()函数,用于注册驱动到系统内核。随后系统在启动过程中,分别调用驱动提供的三个接口xxxInit()、xxxInit2()和xxxConnect()。

xxxInit()是在内核启动之前调用的,因此,不能打印调试信息。通常为了调试新写的VxBus驱动,可以用以下的小技巧,在系统启动后调用xxxRegister(),这样驱动被加载的三个阶段中都可以输出调试信息。

Firstly, add a similar CDF component to the BSP (or kernel project) and set INIT_RTN to taskIdSelf:
Component DRV_AUDIO_HDA {

    NAME             VIA HD Audio
    SYNOPSIS         VIA HD Audio
    MODULES          vxbHdAudio.o
    LINK_SYMS        vxbHdAudioRegister
    _CHILDREN        FOLDER_DRIVERS
    _INIT_ORDER      hardWareInterFaceBusInit
    PROTOTYPE        void vxbHdAudioRegister();
    INIT_RTN         taskIdSelf();
    INIT_AFTER       INCLUDE_PCI_BUS
    REQUIRES         INCLUDE_PCI_BUS \
                     INCLUDE_END \
                     INCLUDE_DMA_SYS \
                     INCLUDE_PARAM_SYS \
                     INCLUDE_VXBUS
}

LINK_SYMS set to vxbHdAudioRegister forces vxbHdAudio.o to be linked into the kernel.
INIT_RTN set to taskIdSelf lets the component DRV_AUDIO_HDA be included as a driver component without calling vxbHdAudioRegister
Later, I can start vxbHdAudioRegister from Workbench and single step the initialization.

posted @ 2013-07-19 09:57  leejey  阅读(641)  评论(0编辑  收藏  举报