嵌入式應用軟件開發怎么轉行底層驅動開發?
時間:2019-10-10 來源:集團中心,代老師
嵌入式應用軟件開發怎么轉行底層驅動開發?在教育行業工作了這久,很多時候筆者會被問及這個問題。本文章會從一下幾個方面來分析
1.應用層軟件開發和底層驅動開發都設計什么內容
2.應用層開發的工作重點
3.驅動開發的重點
4.應用層開發如何轉底層驅動開發
希望本文章能給正在這方面困惑的工程師或者開發者一些啟迪。如本文章有筆誤的地方請拍磚。

一、應用層開發和底層開發包含的內容
嵌入式應用程序開發:精通Linux操作系統的概念和安裝方法、Linux下的基本命令、管理配置和編輯器,包括VI編輯器,GCC編譯器,GDB調試器和 Make 項目管理工具等知識;精通C語言的高級編程知識,包括函數與程序結構、指針、數組、常用算法、庫函數的使用等知識、數據結構的基礎內容,包括鏈表、隊列等;掌握面向對象編程的基本思想,以及C++語言的基礎內容;精通嵌入式Linux下的程序設計,精通嵌入式Linux開發環境,包括系統編程、文件I/O、多進程和多線程、網絡編程、GUI圖形界面編程、數據庫;熟悉常用的圖形庫的編程,如QT、GTK、miniGUI、fltk、nano-x等。
嵌入式驅動程序開發:熟練掌握Linux操作系統、系統結構、計算機組成原理、數據結構相關知識。熟悉嵌入式ARM開發,至少掌握Linux字符驅動程序開發。具有單片機、ARM嵌入式處理器的移植開發能力,理解硬件原理圖,能獨立完成相關硬件驅動調試,具有扎實的硬件知識,能夠根據芯片手冊編寫軟件驅動程序
二、嵌入式應用層開發的側重點
首先給讀者明確一點,其實嵌入式應用層開發和底層驅動開發是渾然一體的,但是由于知識的側重點不同,人為的將嵌入式開發分為了嵌入式應用層和嵌入式底層。嵌入式應用層主要側重點是代碼邏輯的編寫。嵌入式應用層包含的主要部分是linux系統的使用、C語言、數據結構、IO進程、網絡等。其實初學者在學習這部分知識的時候成就感還是很足的,因為很多的時間你就可以寫出幾百甚至上千行代碼。學習這些課程的時候比較訓練你的邏輯思維能力。比如現在讓你寫一個qq的應用程序,你只需要知道socket(套接字)相關函數的使用(功能、參數、返回值),你就可以學出一個qq多人聊天的代碼,數據怎么發?怎么收?發給誰?這些就是一些邏輯思維的鍛煉。當然這里面會用到數據結構需要將數據通過數據結構保存起來。是不是感覺很有意思那?另外就是對linux系統的理解,什么進程?什么是線程?有什么區別等等。但是很多想從事嵌入式開發或者初學者都倒在了C語言這一關。希望這些讀者能堅持下去,過了這個檻就會有柳暗花明又一村的感覺。現在想想嵌入式應用層是不是簡單一點了?
三、嵌入式底層開發的側重點
這里的標題是嵌入式底層開發而沒有說驅動開發,原因是驅動開發只是底層開發的一個部分。嵌入式底層開發包含ARM裸機開發、系統移植、內核開發、驅動開發等內容。嵌入式底層開發和應用層開發學起來有很大的差別,嵌入式底層開發在學習的時候一定要多層實現的原理上思考,每學習一個知識點的時候都需要多問自己幾個為什么?自己如何實現。要做到知其然也要知其所以然。另外在學習底層的時候一定有多接觸硬件,多寫代碼檢查自己對知識的理解是否正確。畢竟實踐是檢驗真理的唯一標準。底層課程相對來說比較吃經驗和積累。如果你是一個初入嵌入式行業的新人。在找這方面的工作時相對來說比較吃力。但是可以放低要求找到嵌入式驅動的初級工程師還沒沒問題的。如果你是一個有經驗的底層工程師也不會來看這篇文章(哈哈)。
四、應用層開發如何轉底層驅動開發
最后我們一塊來探討一下應用層如何轉底層開發,如果你的志向就是做底層開發,但是由于生活壓力(社會很現實的)從事的是應用層的開發。那你在學習或者工作的時候就應該開始多問幾個為什么。因為只有你把這些原理弄明白之后(而不是停留在編寫應用層的邏輯代碼中),在學習底層課程的時候才能輕松掌握,因為應用層用到內核原理和底層是一樣的。另外如果你想向底層轉需要多利用20:00-0:00這段時間。在別人休息的時候開啟自己的學習之旅。如果只僅僅靠應用層掌握的這些知識來找底層工作,這是不可能的,即使你有十年的應用層開發經驗。所以一定要在這個浮躁的社會中沉下來學習,在不久的將來你就是一個底層開發的高手。在找底層的工作時只能用一句話形容so easy!!!。
最后給大家推薦幾本驅動的書籍《Linux設備驅動開發詳解》《Linux內核修煉之道》《Linux內核情景分析》《Linux設備驅動程序》等。希望你能早日成為一名合格優秀的驅動工程師。

