1.概述
linux是可以支援很多平台的,比如x86、mips、arm,linux要支援這些不同的架構,就必須有各種架構相關的模組**,這些不同模組**的實現了對架構硬體資源的管理,而linux核心本身只關注程序排程、記憶體管理、網路管理、檔案系統、裝置驅動等內容,核心實現上述功能需要的資料結構,由arch/***目錄下的程式來構造和註冊到核心,arch/***目錄下的程式使用標準的資料結構和介面。
2.分析
每種架構下,都包含有boot、config、kernel、lib、kconfig檔案或目錄,拿arm架構來說,arch/arm/kernel目錄下的head.s檔案是linux系統啟動的第乙個檔案;arch/arm/kernel目錄下的trap.c檔案,對cpu的異常進行初始化;arch/arm/kernel目錄下的dma.c,對cpu的dma進行管理;kconfig檔案裡的內容在執行make menuconfig時會出現在介面中;configs目錄下是一些預設配置檔案,可以用來生成核心需要的配置檔案.config,執行make menuconfig也會生成乙個.config檔案,.config檔案指導編譯時需要編譯哪些檔案,最終生成的vmlinux就是能夠執行在該架構下的linux核心;mach-soc名 目錄下的檔案,描述了該soc內部硬體資源(如位址、大小等),mach-board檔案是描述板子資源的檔案。
另外,對不涉及到具體soc的檔案或目錄,裡面的程式都是對硬體進行邏輯操作的,比如read、write、set、enable、disable等,而涉及到具體soc或板子的檔案,都是會描述資源並且註冊資源資料結構到核心的。
圖1 設計到soc和不涉及soc的目錄
3.總結
當拿到乙個新的板子時,需要移植linux到板子上,首先知道板子上cpu的架構,然後我們在對應的架構目錄下,需要增刪、修改一些檔案,之後配置linux核心,通過make menuconfig命令或複製、修改configs目錄下的預設配置檔案,生成.config檔案,最後編譯核心,具體的移植過程,見另一篇文章。
Linux核心原始碼樹目錄
arch 包含和硬體體系結構相關的 每種平台佔乙個相應的目錄。和32位pc相關的 存放在i386目錄下,其中比較重要的包括kernel 核心核心部分 mm 記憶體管理 math emu 浮點單元 lib 硬體相關工具函式 boot 引導程式 pci pci匯流排 和power cpu相關狀態 blo...
構建linux核心原始碼樹
編寫驅動程式時,需要核心原始碼樹的支援。核心原始碼樹時從核心源 編譯得到的。下面開始構造核心源 的步驟。以ubuntu為例子 2.配置核心 進入解壓過的核心目錄,開始配置核心選擇最快的原版的配置 預設 方式。root desktop make oldconfig 當然也可以使用其他配置方式,如 me...
LINUX核心原始碼樹的結構
1.arch 該目錄包含了與體系結構相關的檔案.如arm motorola mips x86等處理器的子目錄.這些體系相關的子目錄下包含了基於這些體系的評估板,這些評估板的配置檔案位於configs目錄下.如mini2440,其配置檔案mini2440 defconfig位於arm configs ...