WinCE流驅動載入的控制

2021-06-14 07:05:36 字數 895 閱讀 1799

前段時間整理了《wince下除錯串列埠的動態復用》,基本實現了除錯串列埠與普通功能串列埠之間的動態切換。其中實現的方法有點欠缺,在重新燒錄或者公升級系統後,導致系統無法正常啟動。這算是個bug。該功能加上才幾天,就陸續有好幾個同事碰到。本來想著使用方便的,沒想到反而增添了一些麻煩。

這個問題在實現時曾考慮到,發布版本的日誌裡也加了說明,如果啟用了除錯串列埠,那麼在燒錄或者公升級系統前,須禁用除錯串列埠。說實在的,確實有點麻煩,不小心就忘了做這個工作。而問題的根源是實現機制不太合理。除錯串列埠的配置被分散在兩處,一處是儲存在nand flash的特定區域,另一處是登錄檔中。系統啟動時,oal根據flash中儲存的狀態,確定是否啟用除錯串列埠,而驅動載入時又根據登錄檔的狀態,確定是否載入除錯串列埠的驅動。兩處儲存的狀態不同步時,問題就出現了。問題分析清楚了,解決方法自然就有了,保證兩處的狀態一致即可。

除錯串列埠的配置由儲存在nand flash中的引數決定,系統啟動時根據該值,動態修改除錯串列埠對應的登錄檔配置,確保在啟用除錯串列埠時,不再載入它所對應的驅動,也就不會產生衝突,導致系統無法正常啟動了。

在驅動登錄檔中,flags是用於控制流驅動的載入行為的。其中devflags_noload即表示不要載入該驅動。所以,在合適的地方新增如下**,即可控制除錯串列埠驅動的載入。

void

disabledebugserial(bool bdisable)217

} 如果禁用了除錯串列埠,則將flag是設定為devflags_none,裝置管理器將正常載入驅動。如果沒有禁用除錯串列埠,則將flags設定為devflags_noload,裝置管理器就不會載入該驅動。

通過以上方法的改進,除錯串列埠的動態復用就更方便了。

原創)WINCE流驅動的動態載入除錯

免去重新生成nk image的麻煩,直接用應用程式除錯流驅動,高效快捷,透明可見。1.在evc下編譯驅動原始檔,生成驅動的dll.注意 在編譯時請注意project setting,要加入驅動的匯出檔案,即在project options 中加入 def ir.def 這一步很重要,否則驅動無法被應...

wince驅動載入失敗

這兩天除錯驅動時碰到乙個問題,驅動載入之後,沒有執行init直接就解除安裝了。bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreserved return true 列印log printer dll p...

WinCE 控制面板和驅動通訊

2.在驅動執行緒內部的死迴圈體呼叫waitforsingleobject 函式進行等待 dword winapi soclcd mybacklightchangethreadproc pvoid parg closehandle hevent return 0 3.接下來,我們來看看控制面板如何傳送...