(轉)與一線Linux嵌入式開發工程師的對話

陳工程師一直做Linux的嵌入式開發,作爲在開發一線的工程師,他對很多問題的看法可能更切合實際需求,於是,通過郵件,就嵌入式開發方面的問題,請他談了一下自己的看法:

問:關於嵌入式開發,我們準備給同學們講解一些入門知識,從你一線開發經驗來說,給我們一些建議:

陳工回答:

   對於嵌入式Linux入門,如果有一定基礎,可以從驅動開始;如果沒有基礎,我個人建議還是從應用程序開始。因爲從應用程序開始是最容易的,也是 最直觀的。而驅動程序運行在內核態,驅動本身的結構就比較複雜,如果要徹底弄明白驅動的運行機制,必定牽涉內核,對於高年級的學生恐怕問題會少一些,而 對於低年級的學生,問題估計較多。我曾經遇到過一些初學者,就是一入門就栽了,失去了信心,當然這只是少數。不過,如果在遇到問題之後,能夠得到即時、 正確的點化,那就是好事了。

   既然您決定講驅動,那就從內核模塊開始。在PC上就可以進行的虛擬設備實驗,如基於內存的內核模塊。可以考慮從模塊的結構、編譯、插入、卸載等方 面進行闡述。

    驅動模塊無非分字符驅動、塊設備驅動和網絡驅動三大類。但是一定要讓學生知道,任何一個系統,特別是嵌入式系統,並且在目前的嵌入式Linux產品 開發中,最簡單、最重要、最多、最複雜的也是字符設備驅動,從IO驅動到串口驅動、到USB驅動等等,廣義上都是字符驅動。讓學生最好專注於字符設備驅 動,因爲一個嵌入式設備,網卡一般一塊,FLASH一般也是一塊(也包括幾塊組成的FLASH組),但是這兩方面,基本都有完善的驅動,如網卡驅動有很 多,塊設備驅動,硬件層已經有通用接口,不管是NOR FLASH還是NAND FLASH,文件系統層更是有了非常多、非常成熟的文件系統,如 JFFS2、YAFFS、YAFFS2、EXT2、EXT3、ROMFS、CRAMFS等等,無需我們再去研究,學會應用即可。而除此之外的其它設備, 如AD、DA、CAN、RS485等等,都是需要根據應用來進行設計的,這纔是一個產品區別於其它產品的重點,更是市場價值增值點。

  另外呢,也是前一點引申爲而來的,學習Linux,準備做產品的話,不要把Linux當成了終極目標(當然,這是對應用而言的),要有隻是把 Linux當成一個平臺的思想。更重要的還在各種產品所需求的專業技術,如通信方面像CAN、RS485、GPRS等等,或者工業控制方面,IO控制、 實時特性等等。Linxu博大精深,研究起來永無止境,但是在產品中,只要到了一個產品夠用就可以了(當然,多一些更好,要視人而定)。


問:嵌入式應用程序的開發,應用場景較多的是圖形界面還是字符界面,如果是圖形界面,開發環境QT和Minigui哪一種更合適,哪種類型的應用程序在嵌入式系統中應用比較多?


陳工回答:

對於嵌入式Linux的應用,大多數的應用並不需要圖形界面,比如交換機、路由器、嵌入式網關以及服務器等等。圖形界面呢,主要應用在多媒體、手機等手持設備和一些需要圖形界面的人機交互系統。

嵌入式Linux可選圖形界面很多,上網找找的話,可以發現遠非我們常說的QT、MiniGUI等。包括Tiny-X,matchbox、OPIE、GPE等等。不同GUI有自己的特色,有自己的特殊應用場合,對於產品開發,根據需要選擇合適的GUI。對於學習,自然是選擇容易得到、容易開發的GUI。QT是一個不錯的選擇,由於QT有一個PC上的模擬器,可以在沒有實際液晶LCD的情況下,甚至在沒有任何硬件的情況下都可以在PC上進行模擬開發。QT是收費的,當然,有免費版可用。MiniGUI呢,純粹國產的,支持國貨,可以考慮選擇MiniGUI。這是一個輕量級的嵌入式GUI,可以跨平臺,學習版也才100多塊。MiniGUI可以用於工業控制場合,QT在這方面的應用目前還沒有遇到,主要用在手持設備。

   我們在開發中採用Tiny-X,這也是一個可以用於工業控制的GUI,基本兼容X-Window,體積小,佔用資源少,速度快,穩定。

 

對於Linux的應用程序開發,除了GUI程序之外,最基本的應用程序有:

(1)串口編程。無論是在Windows下還是Linux下,串口編程都是極爲複雜的,但是非常鍛鍊一個人的編程水平和能力。

(2)網絡編程以及WEB相關編程。網絡編程的tcp、udp、tcp/ip等。至於WEB編程,主要是在系統開啓一個WEB服務器,製作一些網頁,通過遠程登錄能夠對整個系統進行配置甚至升級等功能。比如我們的路由器配置網頁。這種應用在以後會越來越廣泛。

(3)另外一個就是Shell編程了。Shell的作用我想,*NIX世界的人都很清楚。在很多應用裏面,通過一些非常富有技巧性的Shell腳本,實現了非常複雜的功能,包括遠程系統升級等。


  以上我提到的這3方面,非常易於實驗,在沒有硬件,只有PC的情況都可以做。

   學生電腦安裝ubuntu,那以後配置嵌入式Linux開發環境可能遇到的問題會多一點。不過沒關係,能夠解決的。在我個人看來ubuntu適合於家用、辦公,但要用於開發,配置難度稍微大一點。不過沒有辦法,現在電腦硬件太新,最適合的RedHat 9.0無法安裝。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章