1.引子

1.引子

天有不測風雲,人有旦夕禍福。在2007年的夏天,我那可愛的電腦聲卡壞了。

朋友給我推薦了一款飛利浦的外置聲卡PSC805,老實說,聲卡還能用外置的,的確讓我覺得新鮮,它直接用USB連接,價錢也還可以。所以我去了一趟中關村買了一塊外置聲卡。

然而,在店家那裏好好的聲卡買回來之後居然連指示燈都不亮,根本沒法用。不是完全不亮,一開始會亮,然後就不亮了。憑直覺,我判定這是軟件的問題,因爲我用的是Linux操作系統。

從指示燈這個現象來看,我估計是電源管理部分的問題,我聽說Linux內核2.6.20左右在USB部分開始加入了電源管理的代碼,我覺得這部分代碼不夠成熟,問題很多也是很正常的,只是沒想到我成了試驗品。

我很冷靜地分析問題,首先這塊聲卡是使用USB接口的,供電有問題,那麼應該是USB驅動部分的問題而不應該是聲卡驅動的問題,聲卡驅動是snd-usb-audio,查看了日誌文件,實際上問題出現在這個模塊被加載之前,所以可以排除聲卡驅動的問題。然後我覺得問題可能出現在Linux中Hub驅動的部分,也可能出現在主機控制器驅動的部分。這下子問題稍微麻煩了一些,我完全不清楚究竟應該分析哪個部分,於是我做了一次選擇,我猜測問題會在Hub驅動方面,Hub驅動也就是三千多行代碼,看了看時間,一個晚上應該是能看完的,狠一狠心,真就看了起來。

引子寫到這也就該結束了,大多數人也許都會覺得我最後一定通過看代碼解決了問題,然後纔會寫下下面的這些文字,實際上不是的,我花了一夜看完了Hub驅動的代碼,然而並沒有發現任何異常,後來我終於知道,這個問題並不是出在Hub驅動的部分,它實際上與UHCI主機控制器的驅動代碼有關,算是UHCI驅動的一個Bug。但是既然我看了Hub驅動的代碼,也不妨用文字把它記錄下來,就算是爲了紀念這樣一個夜晚吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章