WindRiver自己定义的打印输出函数为什么没有输出
在sysHwInit()中调用的一个子函数中有一个windriver自己定义的宏函数,是打印输出的
#ifdef VXBUS_DEBUG_ON
int usrBusDebugLevel = 0;
#undef VXB_DEBUG_MSG
#define VXB_DEBUG_MSG(lvl,msg,a,b,c,d,e,f) if ( usrBusDebugLevel <= lvl ) printf(msg,a,b,c,d,e,f)
#else /* VXBUS_DEBUG_ON */
#undef VXB_DEBUG_MSG
#define VXB_DEBUG_MSG(lvl,msg,a,b,c,d,e,f)
#endif /* VXBUS_DEBUG_ON */
vxbDeviceAnnounce()这个函数中有调用
VXB_DEBUG_MSG(1,"vxbDeviceAnnounce(0x%08x(%s))\n", (int)pDev,
(int)pDev->pName, 3,4,5,6);
没有打印输出
我已经把打印开关打开了,可以看出这个宏实际就是用printf()打印输出的,最后我直接在代码用调用printf()还是不能打印输出,请各位指点为什么? 我的输出设备是VGA 和 串口
[解决办法]
sysHwInit()是在os内核启动之前调用的,这个串口以及标准输出设备还没有初始化好呢,当然不能打印了。
[解决办法]
boot的时候还是点灯好了
[解决办法]
默认在sysHwInit()串口只是简单的核前初始化,并没有完全通的,要在sysHwInit2()中才初始化完成,才能作为标准输入输出的。
至于调试的宏,在调程序或驱动程序的时候加进去很正常,虽然现在最终的代码有部分在内核初始化之前不可打印,但不意味他们调试的时候不能在整个操作系统起来后调试的,可能只是在最终调试好了后再把部分代码的初始化部分按照vxworks的一贯做法放到了sysHwInit()之中。这点在调试一些驱动的时候很常见。