八月份畢業到深圳,現在做linux應用層程式設計,現在想做驅動,該怎麼轉型?WEB開發李家靖2018-01-25 11:42:15

幾個問題,建議你先認真思考:

1。你準備要驅動什麼東西?拋開Linux系統的約束,您對要驅動的東西是如何工作的、如何去程式設計驅動它瞭解嗎?是一點不瞭解?半知半解?一般瞭解?還是熟知?精通?如果對要驅動的東西都不瞭解,或者純粹就想泛泛地學習Linux驅動程式設計,估計收穫不會很大。

2。做過多執行緒程式設計嗎?為什麼要多執行緒?深刻理會了多執行緒中如何訪問臨界資源,如何使用mutex,semaphore?多個執行緒工作起來,怎麼控制它們像我們幾個人一起協作幹活那樣,該各幹各的,又該相互通知與配合呢?

3。如果把作業系統比作一個大的執行程式,那麼驅動程式就相當於以動態連結庫形式提供的“外掛”。您有沒有做過“外掛”式的應用程式?沒做過也沒關係,您認真思考一下這樣的問題:您要做一個控制小車的程式,您這個程式功能很牛X,您希望無論是張家的小車,還是李家的小車都能被您控制,無奈您手頭上只有牛家的小車,但你明白,張家、李家的小車功能和你牛家的差不多,控制也就那些事,就是目前不知道具體該如何控制。您得想個法子,留好介面,儘可能保證以後張家、李家的小車都可以被你的程式控制——這時候,你的程式該怎麼設計結構比較好呢?

4。CPU在時鐘脈衝“PIA-PIA”的節奏下都在幹些什麼?無論是X86或是ARM,要做驅動,對這個還是得有點基本的瞭解。

5。保護模式,虛擬記憶體,大致的道理明白嗎?這個得知道。咱們現在大多數的處理器都有cache,cache幹啥用?對DMA會有些什麼不良影響?這個如果要搞DMA(例如PCI裝置驅動)需要明白。

6。找本LDD學習

7。總的來說,裝置驅動程式乾的是驅動硬體的活,但它的編寫更需要注重軟體的思路、結構和方法。前面說的寫小車控制程式能一定程度上說明這個問題。當然,聽起來好像有點難,但是幹起來還是挺爽的,沒有想的那麼複雜。