最近一直在做xpe的驅動程式打包的工作,期間也遇到了很多的問題,有一些問題並不是技術上的,而是由自己的固定思維模式造成的。
比如最近所做的關於can的驅動包就是很好的乙個例子。首先介紹一下can 的驅動,can驅動分為bus層和port層,就是說安裝驅動時,要先安裝bus層,再安裝port層。根據不同的硬體所含有的can 埠的不同,所安裝的port的個數也不同。一般情況下為兩個,當然也有乙個的。驅動是已經有的,並且安裝後一切正常。
在做sld包的時候,有的為pci裝置,這個就比較簡單,如果是isa裝置(雖然這種裝置已經非常老掉牙了,但還是有人在使用,其中乙個很大的原因可能是它的**)就稍微麻煩一點,要填寫登錄檔。自己製作中也是不停的重複操作,才積累了一些經驗。can的驅動在安裝bus層時,會根據不同的裝置,向登錄檔寫乙個portnumber的值,port層會根據portnumber的值來決定安裝port的數目,port層如果沒讀到portnumber的數目,預設情況下會安裝連個port。
我在經乙個isa裝置驅動程式打包的時候,經過fba後竟然有兩個port,難道是在fba的過程中prot層讀portnumber失敗了!但是檢視登錄檔發現portnumber的值為1,怎麼會這樣呢,而且該向port對應的登錄檔寫的資料也沒有寫成功。這就開始了我的嘗試一路,一遍一遍的試。怎麼也不成功。最後只得去看pci的裝置port是否好的,將pci的驅動打成sld包加到image裡面,fba後發現,port數目雖然對(其實肯定會對的因為pci 的裝置都是兩個埠),但是port對應的登錄檔的值也沒有寫進去。就為這個問題我整整找了一周。
後來終於找到了問題的所在了,原來是我的驅動檔案的問題,我的源倉庫(repository)裡的驅動檔案是舊版的,驅動沒有更新造成的。而我在做的時候就只是想我的包做的有問題,而沒有想驅動檔案的問題。
其實這就是程式設計師的要害啊,尤其是在除錯程式的時候,總感覺的某一部分沒有問題,就不去除錯它,犯這種錯誤有時會讓我們除錯很久都找不到問題的所在,當最後發現問題是原來是我們認為不會有問題的地方出錯了。所以任何部分都有可能出問題的,不能以我們的直覺為依據。
在寫程式的時候也需要我們多想想還有沒有其他的方法,不要固定侷限在一種方法下,有可能還有更好的方法呢,這樣雖然乙個程式寫的時候慢了一些,但這相當於寫了兩個程式。以後再碰到類似的問題,我們就有兩種解決辦法了,增加了我們解決問題的機率。
由欒菊傑聯想到程式設計師的胸懷
2008年是不平凡的一年,它也帶給了我們許多許多的感動。在中國舉辦的這屆奧運會上,感動一直延續。而最最感動我的,是乙個年過半百的運動員,她就是欒菊傑。在昨天之前,我還不知道欒菊傑是誰,知道她的事蹟還是從朋友口中得知。上網看了她的事蹟後,感動得讓我久久不能平息。想了很多,忍不住想拙筆寫些什麼。先聽聽她...
95 的bug是由程式設計師造成的
作者在twitter上發的一條短訊 在怨天尤人之前,我們應該先自我反省 努力把自身的問題解決了。12 22 pm 2012 5 30 你應該知道那種感覺。我們所有人都曾碰到過這樣的事情 你已經盯著 看了無數遍,但還是沒有發現任何問題。然而,有個故障或者錯誤始終揮之不去。於是你開始懷疑,一定是你開發程...
95 的bug是由程式設計師造成的
作者在twitter上發的一條短訊 在怨天尤人之前,我們應該先自我反省 努力把自身的問題解決了。12 22 pm 2012 5 30 你應該知道那種感覺。我們所有人都曾碰到過這樣的事情 你已經盯著 看了無數遍,但還是沒有發現任何問題。然而,有個故障或者錯誤始終揮之不去。於是你開始懷疑,一定是你開發程...