驅動開發(fā)三件寶:spec、datasheet與內(nèi)核源碼
本文關鍵詞:Linux內(nèi)核修煉之道,由筆耕文化傳播整理發(fā)布。
推薦博文: Linux內(nèi)核“問題門”——學習問題、經(jīng)驗集錦
推薦下載:《Linux內(nèi)核修煉之道》精華版之方法論
設備模型之外,對于驅動程序的開發(fā)者來說,有三樣東西是不可缺少的:第一是協(xié)議或標準的spec,也就是規(guī)范,比如usb協(xié)議規(guī)范;第二是硬件的datasheet,即你的驅動要支持的硬件的手冊;第三就是內(nèi)核里類似驅動的源代碼,比如你要寫觸摸屏驅動的話,就可以參考內(nèi)核里已經(jīng)有的一些觸摸屏驅動。
spec、datasheet、內(nèi)核源代碼這三樣東西對于每個開發(fā)設備驅動的人來說都是再尋常不過了,但正是因為它們的普通,所以在很多人眼里都被歸為被忽視的群體。于是大家開發(fā)驅動的過程中,遇到問題的時候首先想到的可能還是“問問牛人怎么解決吧”、“旁邊要是有個牛人該多好”,因為牛人的稀有,所以知道牛人的價值,而又因為spec、datasheet和內(nèi)核源代碼的唾手可得,所以常常體會不到它們在解決問題時的重要性。
當然我并不是貶低牛人的價值,宣揚依賴牛人不好,如果你很幸運身邊真就有牛人這種稀缺資源的話,自然是要好好利用,也可以少走很多彎路,節(jié)省很多摸索的時間。只是人生不如意十之八九,多數(shù)人還是沒有這份幸運的,所以與其遍尋牛人討教,,不如多依賴依賴自己,多利用利用自己身邊有的資源去尋找解決問題的途徑。
對這三樣看似普通的東西,關鍵在于很好的去利用,而不是擁有。就說USB吧,USB驅動和USB設備如何進行交流,交流的方式,交流過程中出現(xiàn)了什么問題是什么引起的等等都在USB spec里有描述,而你的USB設備支持多少種配置包含多少端點只有設備的datasheet才知道。協(xié)議的spec和設備的datasheet是最好的參考資料,驅動開發(fā)調(diào)試中出現(xiàn)的問題絕大部分都能在它們的某個角落里找到答案。而內(nèi)核中類似設備的驅動源代碼是最好的模版,對很多硬件設備,你都可以在內(nèi)核找到同種設備的驅動代碼進行參考實現(xiàn),甚至于可以拷貝或共享大部分的代碼,只進行局部的修改,比如說位于drivers/input/touchscreen目錄下的各個觸摸屏驅動,它們之間的代碼很多都是類似的甚至是相同的。
如果你不僅僅只是打算寫驅動,而是還想閱讀內(nèi)核中實現(xiàn)某種總線、設備的源代碼,鉆研它們的實現(xiàn)機制,那協(xié)議的spec就猶為重要,它們在代碼里的體現(xiàn)無處不在,你需要在閱讀代碼前就對協(xié)議規(guī)范有個整體的理解。形象點說,spec是理論基礎,內(nèi)核代碼是具體實現(xiàn),理論懂了,看代碼就和看故事會差不多了。
本文關鍵詞:Linux內(nèi)核修煉之道,由筆耕文化傳播整理發(fā)布。
本文編號:105730
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/105730.html