wince 串列埠除錯資訊輸出
在WinCE的BSP中,如果想呼叫DEBUGMSG(..)或者RETAILMSG(..)來從串列埠列印資訊,必須在我們的BSP中的OAL層找到debug.c,在這個檔案裡面實現下面的4個函式:
void OEMInitDebugSerial(void) : 初始化用於列印資訊的串列埠
int OEMReadDebugByte (void): 從串列埠讀一個byte,出錯時返回OEM_DEBUG_COM_ERROR;沒有資料時返回OEM_DEBUG_READ_NODATA
void OEMWriteDebugByte(BYTE ch): 寫一個byte到串列埠void OEMWriteDebugString(unsigned short* str):寫一個字串到串列埠,這個函式其實就是通過呼叫OEMWriteDebugByte(..)實現的。實現了上述的4個函式,就可以通過串列埠列印來除錯程式了。一般這4個函式在OAL中的debug.c中實現。
在BSP中,我們一般會用3個函式來實現列印:DEBUGMSG,RETAILMSG,NKDbgPrintfW。簡單介紹一下:
NKDbgPrintfW(..)函式一般只在OAL中使用,可以直接從串列埠中打印出資訊,不受編譯選項的影響。
DEBUGMSG(..)函式只有在工程在Debug模式下編譯以後,才會打印出資訊來。如果是在Release模式下編譯的,就不會列印資訊出來。
RETAILMSG(..)函式在Debug模式下和Release模式下編譯都會打印出除錯資訊,但是如果你在工程的屬性中的"Build option"中選擇了"Enable ship build",那麼RETAILMSG函式就不會列印資訊了。