Linux入門-程序開發

Linux程序開發

linux程序總體上來說是分兩部分的:

1. 底層驅動程序開發;

2.應用層應用程序開發;

驅動程序

一般情況下驅動是跟內核與硬件有關係的,編程語言是C語言,需要懂一些硬件的知識,至少需要看懂硬件原理圖和芯片手冊。硬件原理圖告訴我們底層接口工作的邏輯,以及芯片工作的條件(電壓、電流、時鐘脈衝等);芯片手冊是告訴我們如何去配置使用芯片,比較關鍵的是看懂寄存器配置,對於芯片的配置,就是去配置其各個寄存器,比如去配置一個AD音視頻採集的芯片:就需要去配置音頻採樣率、採樣點數、採樣位數等等,視頻需要也有相應的參數如碼率、幀率、亮度、銳度、數據編碼格式(BT656、BT1120等)等等,而這些參數,是與其寄存器一一對應的,就是找到其對應的寄存器,給寄存器寫入需要的數值,即可配置爲對應的模式。除此之外,還需要了解內核,比如內核的驅動框架,內核提供給驅動調用的接口,內核調度驅動的機制等等。驅動程序對開發人員要求通常比應用開發人員要高一些,需要掌握的知識多一些,所以通常待遇也會比應用開發人員要高一些。但是,驅動程序開發的需求量沒有應用程序多,因爲驅動一般完成後, 就不需要改動,而且一般驅動開發,都是在芯片廠商那裏需要,做具體應用的公司一般驅動人員很少的。

應用程序

應用程序基本上就是通過常見的編程語言去開發具體業務的程序,這個編程語言就不再侷限於C語言了,可以是C、C++、java、Python、lua、shell、還有web的前後端開發等。

應用層,顧名思義,就是應用,不同的行業有不同的業務,也就是不同的應用。比如:智能公交行業,需要做的是GPS定位,位置上報、根據位置自動報站並且平臺端需要做基於GPS的位置信息來實現智能化調度車輛等。所以說,應用程序開發人員的需求量要遠遠大於驅動開發人員。做應用開發還有一個好處,就是可以熟悉行業的業務知識,這可能有利於你的職業發展,可以不把眼光侷限在技術裏面,而是通過技術去實現業務功能,也就是實現客戶的需求,可以逐漸養成以市場爲導向的思維,而不是隻盯着技術,畢竟技術只是手段,是工具,最終我們是要解決客戶或者市場的問題的。

做應用程序開發,入門的門檻就比較低了,剛畢業就可以做開發。但是好的應用開發工程師還是有很大區別的,這些區別在哪裏那?我感覺主要體現在以下幾個方面:

1. 對需求的分析

2. 應用程序的架構設計

3. 整體系統設計

需求分析

對於業務需求的分析,不同的人理解的程度不一樣,新手往往會低估技術難度與工作量。

應用程序架構設計

一般情況下,不同行業或者的公司,都有自己的一套應用框架,一般都是基於業務邏輯的應用程序框架,這個也不是一下子設計出來的,而是根據公司的業務逐步完善,最終進化而來的。

整體系統設計

這一項可能只在是嵌入式系統中存在;這裏說的系統就是指的整個設備的軟件系統,包括uboot、內核、文件系統以及flash的分區設計;這裏面有好多技巧,比如比較重要的一項:升級功能。

嵌入式系統,升級是要放在最前面考慮的事情,設備前期升級的頻率可能會比較高的,一方面是由於剛上線軟件存在bug,另一方面是需求的增加。如果系統前期設計不夠合理,後期升級系統或者應用程序可能就會很麻煩,所以設備上線之前,升級要做的非常穩定,最好做到支持遠程升級;另外在flash的分區設計上,最好做一個備份系統分區,這個就是萬一主系統異常無法啓動,可以選擇通過備份系統啓動,從而再對主系統進行更新修復。具體細節不再這裏詳細說了,以後專門介紹。

結束語

對於Linux應用程序開發,入門很簡單,嵌入式linux應用,與linux的應用基本上沒有太大差別,如果熟悉了C/C++語言,那麼很容易上手,經歷過幾個完整項目,填過一些坑,纔算是入行。

 

微信公衆號:

 

 

 

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