通過編寫驅動,從應用層,核心層,再到底層硬體之間的關係。明白核心驅動的意義。現在開始才是重頭戲,前面的都是鋪墊。
正式編寫驅動前,要先了解linux核心**的組成。linux主要是由五個子系統組成:程序排程,記憶體管理,檔案系統,網路介面以及程序間通訊。linux源**用來實現這些功能,linux原始碼包在source_code目錄下的linux-3.5-20131028.tgz,將其解壓,進入目錄下,在下面是linux原始碼截圖:
這裡面最重要的是makefile,這個檔案中包含了許多linux核心配置的資訊,我們linux核心要編譯的平台,交叉編譯器的選擇,編譯鏈結linux核心的引數,等等。
arch目錄中包含於體系結構有關的子目錄和檔案,arm的相關平台資訊在arch/arm目錄下。
scripts目錄中存放著對核心配置的指令碼檔案。
crypto目錄中包含著常見的加密演算法。
drivers目錄包含各種各樣的驅動,包括字元型,快型,網路裝置驅動程式。
fs目錄中包括了linux系統所支援的檔案系統型別,比如ext4 nfs
init目錄中存放著與linux核心相關的啟動**。
kernel目錄中包含許多linux程序排程子系統相關的源**。
lib目錄存放linux核心所用的庫檔案。
mm目錄存放linux記憶體管理的源**。
net目錄存放有關網路協議的源**。
linux原始碼數量龐大,需要乙個工具來管理,方便我們來查詢,這個工具就是ctags 。
執行上面一條命令後,會生成tags的檔案。使用vim 任意開啟乙個檔案。在命令模式下 輸入 ta + 要查詢的函式。
下面是使用核心裁剪的步驟:
首先是編譯核心:
(1): 先把原先編譯的刪除
(2) : 繼續刪除配置檔案
(3) :將平台的配置檔案拷貝到原始碼目錄下的 .config , .config檔案是在進行核心配置的時候,經過配置後生成的核心編譯參考檔案。
原本是要執行 cp arch/arm/configs/exynos4_defconfig .config
因為友善之臂在原始碼目錄下提供了他們更改過的,這時候我們就用這個
(4):編譯
經過漫長的等待,linux核心映象就會出現在arch/arm/boot/ 目錄下,其中image是就是linux核心映象,zimage是壓縮過的linux核心映象。
現在編譯的是沒有裁剪過得核心,使用 make menuconfig 就可以通過圖形介面來裁剪核心。把不需要的模組前面的*去掉,就能實現核心的裁剪。相當的方便。
選擇儲存退出後 再次執行 make 就能生成編譯過後的映象檔案了。
linux 核心原始碼樹的每個目錄下都有兩個文件kconfig和makefile。分布到各目錄的kconfig構成了乙個分布式的核心配置資料庫,每個 kconfig分別描述了所屬目錄源文件相關的核心配置選單。在執行核心配置make menuconfig時,從kconfig中讀出選單,使用者選擇後儲存到.config的核心配置文件中。在核心編譯時,主makefile呼叫這 個.config,就知道了使用者的選擇。這個內容說明了,kconfig就是對應著核心的每級配置選單。
Linux核心架構及核心裁剪
linux系統分為核心空間和使用者空間 使用者空間主要包括 使用者應用程式和基本的庫檔案 核心空間主要包括 系統呼叫介面sci 系統封裝給使用者空間的應用函式呼叫介面 程序管理pm 管理程序排程 虛擬檔案系統vfs 針對各種檔案系統封裝的統一呼叫介面層 記憶體管理mm 與cpu無關的記憶體管理 與c...
Linux核心裁剪的具體步驟
在menuconfig中配置 詳細介紹核心配置選項及刪改情況 第一部分 全部刪除 code maturity level options 成熟等級選項 prompt for development and or incomplete code drivers 預設情況下是選擇的,這將會在設定介面中顯...
Linux系統核心公升級與裁剪
1 公升級前準備 1 確認目前版本,避免重複公升級 root free root uname r 3 了解硬體環境,知道自己的計算機內究竟安裝了哪些介面裝置,每項硬體資源所使用的系統資源,尤其是介面卡 控制卡使用的irq dma以及i o address。4 解壓核心檔案,以linux 2.6.40...