linux驅動開發重點關注內容--摘自《嵌入式Linux驅動模板精講與項目實踐》,嵌入式驅動開發
本文摘自本人拙著 《嵌入式Linux驅動模板精講與項目實踐》
初步看起來Linux裝置驅動開發涉及內容很多,而需要實現驅動的裝置千差萬別,其實做一段時間驅動之後回首看來主要就是以下幾點:
(1)對驅動進行分類,先歸納為哪個類型的驅動,歸類正確再利用核心提供的子系統進行開發,往往會發現其實很多通用的事情核心已經幫我們做了,一個優秀的驅動工程師應該最大程度上利用核心的資源。核心已經實現的畢竟穩定性強,可移植性高。
(2)找到核心的提供的子系統,接下來就是要製作該子系統對該類裝置提供的表徵,也就是描述該類驅動的結構體,然後定義這個結構體把必要的資料進行初始化,最後調用該核心子系統提供的介面函數提交給核心管理。這是大部分驅動程式開發的戰略流程。
(3)明確子系統已經做了什麼,需要在自己驅動中實現哪些內容,通常做法是找一個接近的驅動程式進行修改,而不是一行一行代碼進行編寫。到核心中找接近的驅動常式是一個很好很快的方法。這些常式基本上提供介面如何使用,調用流程等等。
(4)以上基本上都是與核心介面有關,驅動第二個涉及到的就是晶片手冊,這個與做其他嵌入式軟體一致,故從單片機軟體開發或者其他動作系統軟體開發轉過來做Linux驅動開發的人員來說,這部分是一個強項。
(5)驅動另外一個內容就是協議,各種嵌入式匯流排協議從簡單的SPI到複雜的PCI或者USB等等。協議基本知識是需要掌握的,好在核心對各種常見協議都是以子系統的形式提供,在子系統中做了大部分共性的工作,大大降低了驅動開發的工作量。
故學好驅動開發,一個重要的方面就是對核心的學習,熟悉核心的組織和思維方式,所以對其思想做個總結是非常有必要的。
問做嵌入式linux驅動開發的工作需要對驅動熟練到什程度才行?
你好,樓主:
我可以給出一些見解,我是通過培訓,然後在此行業工作了近一年。針對你的問題,不同的公司有不同的錄取規則,沒有一個定式。當時找第一份工作前,我也有你的這種困擾,我把我的想法說一下,希望能幫到你。
如果你作為初級驅動工程師去面試,你只需要熟悉一些重要的驅動,比如I2C、SPI,而且自己做過此類驅動的小項目,再針對公司供應職業的需求好好做足功課。這個階段是入職後更專業地學習驅動。
如果你作為資深工程師,有多年經驗,自然地對大部分驅動十分瞭解,比如USB、網卡、存放裝置等等。
對於驅動架構啊,你一定是要瞭解並十分熟悉架構的,這樣才可以對相應驅動程式進行填充實現其功能。在面試找工作時這個方面會更重要些,但是我認為只要你認真地研究驅動代碼,是很容易掌握的,關鍵是信心與毅力。
“還有對驅動編寫完後的配置和編譯需要到達什麼程度?”這個問題問的好,這是企業和公司都關心的問題,它關心著產品的市場,至於到什麼程度,基本的功能你一定要很好地實現,如果時間充裕,盡量最佳化你的代碼,使驅動佔用更少的資源、更省電、資料轉送更好等等。
以上為個人見解,祝成功!
嵌入式Linux驅動程式與系統開發執行個體精講(羅苑棠)有可以下載的?
這個可以下book.knowsky.com/book_32428.htm