天天看點

淺談wince驅動調試方法淺談wince驅動調試方法(作者:[email protected])

淺談wince驅動調試方法(作者:[email protected])

     以前,我調試驅動都是打包,下載下傳,很郁悶,一個小小的DLL都要這麼費神,對微軟極為不滿,現在發現驅動調試有一些訣竅,特來和大家分享,如果你有更好的方法,就來和大家分享吧。

     之是以說“淺談”,是因為我自己也搞得模模糊糊的,問過很多人,大家一緻認為有三種調試方法:

一、使用應用程式動态加載驅動——優點是不用下載下傳打包NK,可以在正常情況下看到驅動的運作情況;缺點是隻能調試流驅動。在這方面有個專家做的很好,釋出了驅動調試助手http://www.cnblogs.com/we-hjb/archive/2009/02/14/1250838.html#1451120——在這裡就不多說了,看原版才是好的。

二、KITL。這個東西我用過,覺得調試那些不能啟動的嚴重BUG很有用。下面适合一個朋友的談話,很清晰了。

三、神秘武器......什麼都不用!

加密助手 說:

--- 系統提示: 以下會話未被加密 ---

CSDN-Ricky_hu北京 說:

做過

CSDN-Ricky_hu北京 說:

這就是動态調試驅動,經常這樣做

[email protected] 說:

這個方法我很想學,你能不能教教我

[email protected] 說:

整天燒寫,太郁悶了

CSDN-Ricky_hu北京 說:

談不上教, 很容易的

[email protected] 說:

我都不知道怎麼操作

CSDN-Ricky_hu北京 說:

你燒寫一次,然後用pb通過kitl下載下傳,在這個target->release dir module->add module裡面添加你要調試的驅動就ok了

CSDN-Ricky_hu北京 說:

這個就是kitl的主要功能

[email protected] 說:

這樣加載上去也沒有什麼意思啊。因為KITL隻能往前加載,不能往後加載的

CSDN-Ricky_hu北京 說:

你說的往後加載是什麼意思?

[email protected] 說:

就是比如我加載過一個驅動以後,不能再回來設定斷點再次執行了

[email protected] 說:

同一個驅動不能執行兩次的吧

CSDN-Ricky_hu北京 說:

再回來設定斷點就重新連接配接kitl啊

[email protected] 說:

KITL,我的還有點問題,我隻會使用一點點

CSDN-Ricky_hu北京 說:

在eboot裡面配置好了就ok了

[email protected] 說:

你的意思是說,在這個target->release dir module->add module裡面添加你要調試的驅動,然後要重新連接配接KITL?

CSDN-Ricky_hu北京 說:

你要調試那個驅動就把它添加到target->release dir module->add module這裡面,然後連接配接kitl調試,發現問題,修改後直接編譯這個驅動,然後再重新連接配接kitl繼續調試,再發現問題,再修改,再連kitl調試

[email protected] 說:

哦,這也是個方法

[email protected] 說:

這個方法很強大,可以調試本機驅動

[email protected] 說:

使用應用程式隻能調試流驅動

CSDN-Ricky_hu北京 說:

這是pb中kitl的基本調試方法,功能很強大,能列印很多調試資訊

CSDN-Ricky_hu北京 說:

應用程式調試的隻是接口,驅動内部的還是不能夠調試

[email protected] 說:

不過缺點是系統資料庫修改之後就要重新下載下傳核心才行

CSDN-Ricky_hu北京 說:

嗯,對,這個對于系統資料庫以及kernel級别的修改要重新下載下傳nk

[email protected] 說:

還有一般要編譯成debug版本的驅動才行,整個NK編譯成debug版本會非常大。哈哈,原以為是不用KITL就可以加載的。厲害

CSDN-Ricky_hu北京 說:

不一定非得編譯成debug版本的驅動啊,release版本的也可以通過kitl調試,而且調試資訊也很豐富的

[email protected] 說:

你用什麼晶片?

[email protected] 說:

PXA310?

CSDN-Ricky_hu北京 說:

你可以在release驅動裡面加斷點,一步步走,這樣發現問題很快

CSDN-Ricky_hu北京 說:

pxa270,不過馬上要用310了

[email protected] 說:

有些驅動是有接口的,接口需要應用來通路

[email protected] 說:

如果KITL+應用程式來調試,這樣列印資訊也會顯示在PB裡面吧

CSDN-Ricky_hu北京 說:

驅動一般都有接口,就看這個接口是留給誰來通路了

CSDN-Ricky_hu北京 說:

[email protected] 說 (9:43):

如果KITL+應用程式來調試,這樣列印資訊也會顯示在PB裡面吧

對,會顯示

[email protected] 說:

不過這樣已經很不錯了。比如COM_Read這些,KITL應該不能在裡面設定斷點的吧

CSDN-Ricky_hu北京 說:

這個COM_Read是驅動提供的接口嗎?如果是,也能設定斷點的

[email protected] 說:

[email protected] 說:

要應用程式打開的

[email protected] 說:

這個也行?

CSDN-Ricky_hu北京 說:

但是你要把斷點設定在驅動裡面,而不是應用程式裡面

[email protected] 說:

那太厲害了,那怎麼控制它進去?

CSDN-Ricky_hu北京 說:

你用kitl就應該沒問題

CSDN-Ricky_hu北京 說:

在XXX_Read

CSDN-Ricky_hu北京 說:

裡面設定斷點

[email protected] 說:

是不是有指令才行進去,還是直接弄個斷點就可以了?

CSDN-Ricky_hu北京 說:

你确定應用要調用xxx_read(),然後在它的驅動裡面設定斷點就可以斷住了吧

[email protected] 說:

這是很好的方法

CSDN-Ricky_hu北京 說:

具體的你可以試試,但是用kitl調試應用的話效果不太理想

CSDN-Ricky_hu北京 說:

你可以用vs調試應用,看問題出現在哪裡,然後用pb繼續跟蹤驅動

[email protected] 說:

我上次弄過一下子,發現液晶屏不會亮了,但是系統已經起來

CSDN-Ricky_hu北京 說:

呵呵

[email protected] 說:

這個三星BSP做的不是很好。

CSDN-Ricky_hu北京 說:

我沒用過三星的bsp和晶片

CSDN-Ricky_hu北京 說:

三星自己的手機啊什麼的産品都不用他們自己的晶片和bsp,我們為什麼要用呢,呵呵。。。

[email protected] 說:

的确是

[email protected] 說:

你是通過網卡來弄KITL的吧?

CSDN-Ricky_hu北京 說:

usb

CSDN-Ricky_hu北京 說:

其實也是模拟成網卡

[email protected] 說:

很多人都不會用KITL,你那裡有什麼文檔嗎?有空寫個完整的部落格幫幫大家,哈哈

[email protected] 說:

上次我也用USB,這樣就會是同步軟體不能連接配接了。不能弄應用程式進來聯調

CSDN-Ricky_hu北京 說:

我也是從優龍的eboot裡面移植過來的

CSDN-Ricky_hu北京 說:

還有pb下面mainstone的bsp裡面也有,你也可以移植一下

[email protected] 說:

哦,确實是,PB5.0下,那個正是PXA270的BSP。

CSDN-Ricky_hu北京 說:

有空我可以整理一下,但是目前很忙啊,産品馬上要上市了,天天加班

CSDN-Ricky_hu北京 說:

是啊,我們就是在這個bsp上移植的,很好用,很快

[email protected] 說:

我想弄個這種闆子來搞搞。嘿嘿。

[email protected] 說:

不打擾你了。謝謝你

CSDN-Ricky_hu北京 說:

客氣,呵呵。。

準備結貼。

總結:

一、經過這次教訓,MDD部分的代碼最好不要修改,因為它極有可能和别的驅動公用,如果改動了,甚至讓資訊列印也會産生意想不到的後果,實在要修改的,就移植到BSP下,這樣我們就可以任意妄為了。哈哈

二、意外收獲——找到了最佳調試驅動方法。1、KITL(适合調試大BUG,比如異常,不能啟動系統等情況) 2、驅動調試助手(适合調試流驅動,并且驅動中無系統資料庫操作的情況,有系統資料庫操作的會導緻異常,如果有時間,可以修改一下這個BUG) 3、在platform.bib,platform.reg檔案中準備好所調試驅動相關資訊。再次調試修改該驅動的時候,隻需要把該驅動的DLL代替wince windows目錄下的老DLL即可。當然少不了應用程式配合調試其他功能(最好加入系統資料庫操作)——這是我目前最支援的方法,因為最簡單,最可靠!

轉載請标明:作者[email protected]桂林電子科技大學一系科協,原文位址:http://www.cnblogs.com/wogoyixikexie/(或者我在CSDN的部落格:http://blog.csdn.net/gooogleman)——如有錯誤,希望能夠留言指出;如果你有更加好的方法,也請在部落格後面留言,我會感激你的批評和分享。

繼續閱讀