嵌入式:本機檢視串列埠除錯資訊

simplaman發表於2008-03-05
串列埠輸出資訊是嵌入式系統開發最基本的除錯手段.但由於空間,外觀的限制,很多產品無法在最終產品上連線出除錯串列埠.前後期除錯手段的差異,給產品的後期除錯帶來不少的麻煩.
可以在最初開發的時候考慮到輸出資訊的重定向.如wince應用程式,除錯時可以將RETAILMSG即 重定向到主機開發工具上.如果是Release版本,也可以用wprintf替換NKDbgPrintfW,修改登錄檔,複製console.dll到windows目錄,除錯資訊就會輸出到控制檯視窗.如果是系統除錯資訊,動態載入的驅動也可以用wprintf,不過wprintf會比較費時間,非動態載入部分則相對麻煩,除非在OEM函式如OEMWriteDebugByte實現,當然,Debug版本可以定向到Kitl.
以上的方式同主機上的串列埠終端相比,算是純軟體的方式.除了透過串列埠連線產品到主機,還有一種硬體的實現方式:串列埠偵錯程式的loopback模式.
很多串列埠偵錯程式都有loopback模式,設定成該模式,相當於你的除錯串列埠硬體連線上了另一臺裝置,不管是什麼地方的串列埠輸出,都可以透過串列埠驅動或其它方式讀到.如wince上,你就可以透過InputDebugCharW讀到串列埠輸出資訊,然後轉到你想要他們去的地方.
InputDebugCharW 有一個問題,就是可能會丟失資料,畢竟該函式只能輪詢.用中斷或者DMA吧,推薦DMA,及時是核心異常資訊,DMA也會老老實實的把所有資訊轉到你指定的地方,處理得當,重新復位後,仍然可以讀到.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/116625/viewspace-1000404/,如需轉載,請註明出處,否則將追究法律責任。

相關文章