驅(qū)動(dòng)調(diào)試助手的下載次數(shù)已經(jīng)過萬,很多網(wǎng)友也提出了一些寶貴建議,非常感謝。這里再做一個(gè)更新,V2.9中主要增加了注冊(cè)表查找和注冊(cè)表項(xiàng)重命名這兩個(gè)功能,至此,有關(guān)注冊(cè)表操作的所有功能基本都已實(shí)現(xiàn)了。雖然不能跟Resco Regedit等大牌比,但功能上并不差多少,而且原生態(tài)的支持WinCE系統(tǒng),包括ARMV4、ARMV4I、MIPSII、SH4。
簡單說明一下新增功能的用法,查找的界面如下。
支持查找項(xiàng)名、鍵名和字符串類型的鍵值。默認(rèn)查找全部注冊(cè)表,也可以在RegTree中選擇查找的起始位置。全字匹配的意思是查找項(xiàng)與查找目標(biāo)完全一致(不區(qū)分大小寫),如果沒選擇該復(fù)選框則允許查找目標(biāo)在查找項(xiàng)中部分匹配。
項(xiàng)名的重命名可通過菜單“重命名項(xiàng)”完成,如下圖所示。
也可以再RegTree中左鍵點(diǎn)擊相應(yīng)的項(xiàng)完成,如下圖所示。
鍵值的重命名與項(xiàng)的重命名一致,不再贅述。
另外,gooogleman在使用驅(qū)動(dòng)調(diào)試助手動(dòng)態(tài)加載串口驅(qū)動(dòng)時(shí)出現(xiàn)了一些問題。串口驅(qū)動(dòng)在啟動(dòng)時(shí)能正常加載,但通過驅(qū)動(dòng)調(diào)試助手卸載后再加載總是失敗。我查了一下,主要原因是系統(tǒng)啟動(dòng)時(shí)通過BusEnum.dll加載驅(qū)動(dòng)與驅(qū)動(dòng)調(diào)試助手的加載過程還是有一些區(qū)別的。驅(qū)動(dòng)調(diào)試助手只是以簡單的流驅(qū)動(dòng)的方式加載,而BusEnum.dll以總線設(shè)備的方式加載,并在注冊(cè)表中設(shè)置了相應(yīng)的鍵值。串口驅(qū)動(dòng)中在物理地址的內(nèi)存映射時(shí)需要用到相應(yīng)的鍵值,如果鍵值不存在就會(huì)導(dǎo)致內(nèi)存映射失敗,以致串口驅(qū)動(dòng)加載失敗。兩種方式加載驅(qū)動(dòng)后的注冊(cè)表對(duì)比如下。
開機(jī)啟動(dòng)時(shí)加載成功的Active鍵的截圖。
可以看到,里面設(shè)置了InterfaceType、BusName和BusParent等鍵值。其中InterfaceType就是串口驅(qū)動(dòng)動(dòng)態(tài)加載失敗的關(guān)鍵。
動(dòng)態(tài)加載串口驅(qū)動(dòng)成功時(shí)Active鍵的截圖。
可以看到,這里沒有設(shè)置InterfaceType、BusName和BusParent等鍵值。但是串口驅(qū)動(dòng)也加載成功了,并且經(jīng)驗(yàn)證可以正常使用串口。這是為什么呢?其實(shí),并沒有修改串口驅(qū)動(dòng),只是修改了CEDDK.dll中的一個(gè)函數(shù)HalTranslateBusAddress()。因?yàn)檫@是出錯(cuò)的根本原因,是這里使用了InterfaceType。我的修改方法是注釋掉SRC\Drivers\Ceddk\Dll\sources中SOURCELIBS變量的第一行“$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\ddk_bus.lib \”,即不使用BSP中的ddk_bus.lib,而使用系統(tǒng)提供的ddk_bus.lib,它里面沒有對(duì)InterfaceType做處理,所以加載驅(qū)動(dòng)時(shí)就不會(huì)出錯(cuò)了。
以上是解決串口驅(qū)動(dòng)不能動(dòng)態(tài)加載的一種方法,實(shí)際上驅(qū)動(dòng)調(diào)試助手主要是動(dòng)態(tài)管理流驅(qū)動(dòng)的,可能還有其他一些驅(qū)動(dòng)不能通過它正常加載,這時(shí)候,我們就不能再偷懶了,只能乖乖的走老路,多花點(diǎn)時(shí)間下載NK了。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版