Linux嵌入式學習的五點建議

Linux嵌入式學習的五點建議

6 人贊了文章

1學習的目的

首先我們要明白你的目的是什麼,大概來說所謂嵌入式Linux可以分為兩部分:底層系統、應用開發。如果你是想做應用開發,那麼你去把C語言、數據結構、JAVA什麼的學好吧。嵌入式應用開發和PC上的應用開發並沒有什麼特別要注意的。也許你說在嵌入式上要做些優化,是的,要優化,但是未經優化的程序和PC上的程序開發沒什麼差別。另外,當你有能力去優化時,你已經不用來問這個問題了。具體到某個例子,比如說開發界面,在PC上我們用VC;在嵌入式Linux里也許我們用QT也許用Android,這個時候你應該去學學QT、Android的編程。

2目標的選擇

如果你的目的是想學習底層系統,在回答這個問題之前,我先回答:到底是學驅動還是學應用?

我只能說憑興趣,並且驅動和應用並不是截然分開的 1. 我們說的驅動,其實並不局限於硬體的操作,還有操作系統的原理、進程的休眠喚醒調度等概念。

想寫出一個好的應用,想比較好的解決應用碰到的問題,這些知識你應該懂 2. 做應用門檻低,特別是現在的ANDROID,純JAVA。做應用的發展路徑個人認為就是業務純熟。比如在通信行業、IPTV行業、手機行業,你了解行業的需求。所以,當領導的人,多是做應用的。3. 做底層系統,做好了這是通殺各行業。做手機、IPTV、會議電視,但是這些產品毫無差別,因為只做底層。他們的業務沒關係。當應用出現問題,他們解決不了時,就會從內核角度給他們出主意,給他們提供工具。

做底層的發展方向,個人認為是技術專家。 4. 其實,做底層還是做應用,之間並沒有一個界線,有底層經驗,再去做應用,你會感覺很踏實。有了業務經驗,你再了解一下底層,很快就可以組成一個團隊。

3學習的技巧

回到怎麼學的問題上。嵌入式Linux底層系統包含哪些東西?不要急,舉一個例子你就知道了。1. 電腦一開機,那些界面是誰顯示的?是BIOS,它做什麼?一些自檢,然後從硬碟上讀入windows,並啟動它。類似的,這個BIOS對應於嵌入式Linux里的bootloader。這個bootloader要去Flash上讀入Linux內核,並啟動它。2. 啟動windows的目的是什麼?當然是上網聊天什麼的了。這些上網、聊天工具在哪?在C盤、D盤上。所以, windows要先識別出C盤、D盤。在Linux下我們稱為根文件系統。3. windows能識別出C盤、D盤,那麼肯定能讀寫硬碟才行。這涉及的東西稱為驅動程序。當然不僅僅是硬碟,還有網卡、USB等等。嵌入式Linux能從Flash上讀出並執行應用程序,肯定也得有Flash的驅動程序啊,當然也不僅僅是Flash。先說到這裡吧,嵌入式LINUX里含有bootloader, 內核, 驅動程序、根文件系統這4大塊。一、bootloader:它就是一個稍微複雜的裸板程序。但是要把這裸板程序看懂寫好一點都不容易。Windows下好用的工具弱化了我們的編程能力。

4bootloader的介紹

bootloader這一個裸板程序,其實有3部分要點:1. 對硬體的操作2. 對ARM體系處理器的了解3. 程序的基本概念:重定位、棧、代碼段數據段BSS段什麼的。對硬體的操作,需要看原理圖、晶元手冊。這需要一定的硬體知識,不求你能設計硬體,但是至少能看懂; 不求能看懂模擬電路,但是要能看懂數字電路。這方面的能力我是在學校里學到的,微機原理、數字電路這2本書就足夠了。我不知道現在有沒有更快捷的書。想速成的話,就先放掉這塊吧,不懂就問百度、發貼求助。另外,晶元手冊是肯定要讀的,別去找中文的,就看英文的。開始是非常痛苦,以後就會發現那些語法、辭彙一旦熟悉後,讀任何晶元手冊都很容易。對ARM體系處理器的了解, 看杜春蕾的<ARM體系架構與編程>吧,裡面講有彙編指令,有異常模式、MMU等。也就這3塊內容需要你了解。程序的基本概念,王道當然是去看編譯原理了。

5內核的講解

內核:想速成的人,先跨過內核的學習,直接學習怎麼寫驅動。想成為高手,內核必須深刻了解。要對裡面的調度機制、內存管理機制、文件管理機制等等有所了解。推薦兩本書:1. 通讀<Linux內核完全注釋>,請看薄的那本。 2. 選讀<Linux內核情景分析>, 想了解哪一塊就讀哪一節。3.驅動:驅動包含兩部分:硬體本身的操作、驅動程序的框架。又是硬體,還是要看得懂原理圖、讀得懂晶元手冊,多練吧。說到驅動框架,有一些書介紹一下。LDD3,即<Linux設備驅動>,老外寫的那本,裡面介紹了不少概念,值得一讀。但是,它的作用也就限於介紹概念了。驅動方面比較全的介紹,應該是宋寶華的<Linux設備驅動開發詳解>了。要想深入了解某一塊,<Linux內核情景分析>絕對是超5星級推薦。別指望把它讀完,1800多頁,上下兩冊呢。某一塊不清楚時,就去翻一下它。任何一部分,這書都可以講上2、3百頁,非常詳細。並且是以某個目標來帶你分析內核源碼。它以Linux 2.4為例,但是原理相通,同樣適用於其它版本的Linux。

大概整理了這些,希望對大家有用,謝謝!

推薦閱讀:

我近來在 Linux 了解和使用的時候遇到了一些障礙,不知道大家有沒有這樣的感覺?
Linux運維跳槽必備的40道面試精華題
vivox9pius的操作系統是?
為什麼普及Linux桌面系統這麼難呢?
Xen server虛擬化磁碟文件丟失的處理辦法

TAG:Linux | 嵌入式系統 |