一、學什麼?
嵌入式linux
所涵蓋的知識面很廣,需要按步驟、不間斷的努力深入學習,才能有所成就。學習嵌入式
linux
需要學習如下
5大知識(按照學習步驟):
1.嵌入式處理器(
arm)與邏輯程式開發;
2.linux系統管理;
3.linux應用程式開發;
4.linux驅動程式開發;
5.linux核心開發與系統移植。
二、如何學?
1.學習第一大知識結構——嵌入式微處理器與邏輯程式開發時,需要學懂一下幾點: (1
)arm
微處理器的兩種工作模式(
arm模式和
thumb
模式); (2
)arm
系統暫存器; (3
)arm
定址方式; (4
)arm
彙編指令集; (5
)arm環境c
語言程式程式設計 (6
)arm
中斷與異常 (7
)ads
(或其他)整合開發環境; (8
)裸機程式開發(如串列埠、lcd
、時鐘、
led、按鍵、網絡卡驅動、音訊驅動、
flash
驅動等)
以上8點鐘,第6和
8點是非常重要的,而前5
(1)語言程式設計類: 《c
語言程式設計》——譚浩強
《c語言深度解剖》 《c
陷阱與缺陷》 《c
專家程式設計》
《c++ primer puls
》第五版——slephen prala
《高質量c
程式設計指南》
《程式設計師面試寶典》(2)
arm微處理器類:
《arm
嵌入式系統開發——軟體設計與優化》——斯洛斯(sloss,a.n.)
然後就是各種驅動程式編寫時,用到什麼樣的晶元就查閱相關的晶元手冊,如網絡卡dm9000
,音訊的
uda1341等。
2.學習第二大知識結構——
linux
系統管理時,需要學懂一下幾點: (1
)linux
定製安裝 (2
)linux
命令詳解(會熟練的運用) (3
)samba
、nfs
、tftp
等伺服器的配置與使用,以及
wireshark
、source insight
、xshell
、ultraedit
等軟體的使用; (4
)shell
程式設計。
其中第2和第4
點是最重要的,它將是學習以後的知識的乙個最基礎的技能。學會這些東西可以看一下兩本書:
《linux
標準學習教材》——
it同路人
《linux
系統管理技術手冊》——奈米斯,斯奈德,海因
3.學習第三大知識結構——
linux
應用程式開發時,需要學懂一下幾點: (1
)gcc
、gdb
、makefile;
(2)檔案、時間程式設計; (3
)多程序、多執行緒程式設計; (4
)程序間通訊; (5
)網路程式設計; (6
)qt圖形化應用程式開發; (7
)android
圖形化應用程式開發。
這個階段的知識點都特別的重要,個人覺得除了第一點外,其他六點都需要下苦功夫學習,而第7和第8
是這個階段的最後兩個也是最重要的,以後也可以直接應用於工程開發中。這個階段可以學習一下兩本書:
《linux
程式設計》第四版——馬修(
matthew,n.
),斯通斯(
stones,r.)
《unix
環境高階程式設計》第二版——史蒂文斯,拉戈
4.學習第四大知識結構——linux
核心開發時,需要學習一下幾點: (1
)linux
核心配置與裁剪; (2
)linux
核心模組開發; (3
)根檔案系統的製作; (4
)程序子系統; (5
)記憶體子系統; (6
)proc
和sys
檔案系統; (7
)系統呼叫; (8
)核心定時器; (9
)核心異常分析;
這個階段的知識非常的難,看書有時看上四五遍都無法理解,建議多去各種論壇上面看看,學習大家的經驗。本知識中從第4
點到第9
點是linux
核心子系統的知識。這個階段可以看一下兩本書:
《深入理解linux
核心》第三版——博韋,西斯特
《linux
核心源**情景分析》
5.學習第五大知識結構——linux
驅動程式開發時,需要學習一下幾點: (1
)字元裝置驅動程式; (2
)匯流排、裝置、驅動模型; (3
)硬體訪問技術; (4
)中斷處理; (5
)input
裝置驅動;
(6)platform
驅動程式; (7
)pci
、usb
驅動程式; (8
)網絡卡驅動程式; (9
)觸控螢幕驅動程式;
(10)串列埠驅動程式。
這個階段所學習的驅動程式與第一階段學習的驅動程式有本質的區別:第乙個階段學習的是裸機驅動程式,重在了解硬體,而這個階段是在編寫核心驅動模組,同時也是硬體驅動程式,它存在於作業系統核心當中,並給應用程式程式設計提供統一的程式設計介面,同時基本脫離硬體的具體操作。
這個階段可學習如下書籍:
《linux
驅動開發入門與實戰》——鄭強
《linux
裝置驅動程式》——科波特
《精通linux
裝置驅動程式開發》——溫卡特斯瓦蘭
至此,嵌入式linux
五大知識體系就學習完成了。
三、注意:
1.這五大知識體系是相互穿插,相互依賴的。大家學習的時候一定要按照先後順序學習,如果後面學習的東西有不懂或不能理解的,一定要回頭查閱以前學過的知識,或者上相關論壇與大蝦們**;
2.在每個知識點中,我都羅列了至少兩本書籍,但並不是每本書大家都必須去看,去研究,而是大家選擇其中一本進行深入研究即可,知識我列出來的書相比較於其他書籍較好而已;另外每個部分的書籍是按照從易到難的順序羅列的,大家可根據自己的具體情況進行學習;
3.學習過程是艱苦的,大家如果確定要學習嵌入式
linux
,就必須下狠心,多努力,不能「三天打漁兩天曬網」,至少應該保證乙個階段學完乙個知識體系;另外還要注重多實踐。
四、總結:學習嵌入式linux
五、一些好的論壇和**:
linux入門到精通
linux論壇
linux時代
edn工程師的諮詢中心與互動社群
**研究所
嵌入式學習
1 c 語言 第二版譚浩強。2 資料結構 c語言版。3 實用 c 程式設計 4 學習51 微控制器,加深對中斷的理解。5 學習 arm微控制器。1 細讀 arm微控制器基礎與實戰 周立功編寫。2 細讀相關晶元的原版英文文件。如 arm920te.pdf s3c2410 1.2.pdf。6 學習uco...
嵌入式學習
嵌入式系統開發學習如何起步 如何深入?學習步驟如下 1 linux 基礎 安裝linux作業系統 linux檔案系統 linux常用命令 linux啟動過程詳解 熟悉linux服務能夠獨立安裝linux作業系統 能夠熟練使用linux系統的基本命令 認識linux系統的常用服務安裝linux作業系統...
如何學習嵌入式 嵌入式如何入門?
學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...