Linux 學習路線
這是我畫的一幅圖,大家可以按此路線循序漸進地學習。
不過需要說明的是,第五項驅動開發和第六項嵌入式系統開發是並列的,也就是說,學習完核心之後,你可以選擇從事不同的領域,當然嵌入式開發有時會包含驅動開發。
還有就是嵌入式開發包括硬體,軟體和系統開發,假如只做硬體的話,你沒有必要按照上述路線進行,系統級開發的話,前面的是必備。
熟悉 Linux 系統,基本命令
安裝 Linux 系統,學會基本操作,熟悉檔案系統,shell 指令碼以及常用命令。
瞭解程式開發過程
搭建開發環境,瞭解 Linux 上程式開發過程。
學會使用文字編輯工具 Vim,編譯工具 gcc, as, 連線工具 ld, 除錯工具 gdb, make 工具,會寫 makefile。
用 C 語言實現並編譯自己的測試程式。
嘗試系統程式設計
試著在 Linux 上用 C 語言進行系統程式設計,
其中需要呼叫 Linux 系統庫函式 (API)。
例如,實現一個需要進行網路通訊、操作檔案的多執行緒/程序程式。
以此深入瞭解 Linux 系統執行機制。
學習核心
上面學的差不多了,感興趣的同學可以接著學習 Linux 核心。
Linux 核心模組如下圖
這一部分內容比較深,能把它學透的基本就是大牛了,寫個 OS 就不在話下了。
驅動開發
從這裡開始,就不是必須的了。
有興趣的朋友可以深入學習。
但是學習驅動開發無疑要把前面的都要學好。
嵌入式系統開發
學好 Linux 是嵌入式系統開發的基礎。
嵌入式開發包括很多方向,有硬體、軟體,以及系統級別。
硬體要學微控制器,ARM、MIPS,DSP 等各種 MCU,Verilog, RTL, 具體就不多說了,跟 Linux 關係不太大。
軟體的話,需要了解交叉編譯,以及嵌入式環境下 C 語言的特殊用法,例如 volatile、 位操作、暫存器操作、大小端、程式跳轉等。
系統級,要了解 Linux 核心裁剪、移植、編譯、除錯,還有 Bootloader 、裝置驅動等。
有人讓我推薦相關的學習書籍,其實我覺得看什麼書本身不是問題,很多書的內容都差不多的,只要按照路線或者體系進行學習,就不會有太大偏差。
Linux 學習路線
這是我畫的一幅圖,大家可以按此路線循序漸進地學習。
不過需要說明的是,第五項驅動開發和第六項嵌入式系統開發是並列的,也就是說,學習完核心之後,你可以選擇從事不同的領域,當然嵌入式開發有時會包含驅動開發。
還有就是嵌入式開發包括硬體,軟體和系統開發,假如只做硬體的話,你沒有必要按照上述路線進行,系統級開發的話,前面的是必備。
熟悉 Linux 系統,基本命令
安裝 Linux 系統,學會基本操作,熟悉檔案系統,shell 指令碼以及常用命令。
瞭解程式開發過程
搭建開發環境,瞭解 Linux 上程式開發過程。
學會使用文字編輯工具 Vim,編譯工具 gcc, as, 連線工具 ld, 除錯工具 gdb, make 工具,會寫 makefile。
用 C 語言實現並編譯自己的測試程式。
嘗試系統程式設計
試著在 Linux 上用 C 語言進行系統程式設計,
其中需要呼叫 Linux 系統庫函式 (API)。
例如,實現一個需要進行網路通訊、操作檔案的多執行緒/程序程式。
以此深入瞭解 Linux 系統執行機制。
學習核心
上面學的差不多了,感興趣的同學可以接著學習 Linux 核心。
Linux 核心模組如下圖
這一部分內容比較深,能把它學透的基本就是大牛了,寫個 OS 就不在話下了。
驅動開發
從這裡開始,就不是必須的了。
有興趣的朋友可以深入學習。
但是學習驅動開發無疑要把前面的都要學好。
嵌入式系統開發
學好 Linux 是嵌入式系統開發的基礎。
嵌入式開發包括很多方向,有硬體、軟體,以及系統級別。
硬體要學微控制器,ARM、MIPS,DSP 等各種 MCU,Verilog, RTL, 具體就不多說了,跟 Linux 關係不太大。
軟體的話,需要了解交叉編譯,以及嵌入式環境下 C 語言的特殊用法,例如 volatile、 位操作、暫存器操作、大小端、程式跳轉等。
系統級,要了解 Linux 核心裁剪、移植、編譯、除錯,還有 Bootloader 、裝置驅動等。
有人讓我推薦相關的學習書籍,其實我覺得看什麼書本身不是問題,很多書的內容都差不多的,只要按照路線或者體系進行學習,就不會有太大偏差。