嵌入式內核
發(fā)布時間:2019-05-22
嵌入式內核是在嵌入式硬件和軟件之間的抽象層,它具有五個方面的作用:任務管理(Task Management)、定時(Timers)、設備I/O主管(Device I/O Supervisor)、動態(tài)存儲分配(Dynamic Memory Allocation)、任務間同步通信(Inter-task Communication&Synchronization)。嵌入式系統(tǒng)中的內核是系統(tǒng)的核心,系統(tǒng)所有的任務及所完成的功能都是在內核的控制之下完成的。我們可以編程,然后通過程序控制內核完成我們所需要的工作。
一個系統(tǒng)要進行工作要包括三部分,即
boot+
內核+
文件系統(tǒng)。而真正內核的東西其實很少,包括cpu初始化、
線程調度、
內存分配、
文件系統(tǒng)、網(wǎng)絡協(xié)議棧、
驅動這些部分。在基于優(yōu)先級的調度中,內核處理任務所需的僅僅是每個任務的
優(yōu)先級,倘若一個任務的優(yōu)先級高于另外一個任務的優(yōu)先級,那么該任務會先于另外一個任務執(zhí)行。而對于安全性要求很高的系統(tǒng),就需要利用分區(qū)調度來完成。在分區(qū)調度中,內核要求任務分成許多組,每一個組中含有許多相關的任務。分區(qū)調度器根據(jù)一系列的時鐘窗口來執(zhí)行某個任務。每個過程中的任務只有當時鐘窗口來臨這個任務時才開始運行,所有過程中的其他任務在這個過程中則不能運行。
用戶空間:應用程序 C庫 系統(tǒng)配置文件等
內核空間:在內存中,用戶一般不能直接接觸到(系統(tǒng)調用接口,體系結構相關的一些代碼等等)
其實內核空間與用戶空間是程序執(zhí)行的兩種不同的狀態(tài),通過系統(tǒng)調用和硬件中斷能夠完成從用戶空間到內核空間轉移。
內核架構
內核架構是有七個子系統(tǒng)組成的。
1. 系統(tǒng)調用接口模塊
6. 網(wǎng)絡協(xié)議棧子系統(tǒng)
目錄文件
內核源碼下幾個重要的目錄文件
arch目錄:arch是architecture的縮寫,內核所支持的每種cpu體系,在該目錄下都有對應的子目錄。每個CPU的子目錄,有進一步分解為boot,mm,kernel等子目錄,分別包含控制系統(tǒng)引導,內存管理,系統(tǒng)調用等
drivers目錄:設備驅動程序
include目錄:內核所需要的頭文件,與平臺無關的頭文件在include/linux子目錄下,與平臺相關的頭文件則放在相應的子目錄中
fs目錄:存放各種文件系統(tǒng)的實現(xiàn)代碼,每個子目錄對應一種文件系統(tǒng)的實現(xiàn),公用的源程序用于實現(xiàn)虛擬文件系統(tǒng)VFS
內核配置編譯
內核配置
下載解壓內核源碼,在內核源碼目錄下,有兩個命令可以配置內核
2. make menuconfig: 基于文本模式的菜單型配置(這個配置方法更直觀、簡單、高效)
三個選項所代表的意義:
<*>選擇該功能,該功能會被編譯進內核,運行在內存中
<M>選中該功能,內核模塊,不編譯進內核,會將相應的模塊編譯成.O文件,然后放到相應的目錄下存放在硬盤里面,當要用到該功能時,內核會把該功能加載到內存中,不用的時候從內存中刪除,這樣可以節(jié)省內存,提高內存利用率
< >本次編譯不選中該功能
內核配置的結果:內核配置通常是在一個已有的配置文件基礎上,通過修改得到新的配置文件,linux內核提供了一系列可供參考的內核配置文件,位于Arch/$cpu/configs
內核編譯
X86: make bzImage
arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux-
安裝內核
內核清理