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

來源:互聯網
上載者:User
  陳工程師一直做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無法安裝。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.