Linux核心移植之四 核心啟動過程

2021-10-06 12:38:23 字數 715 閱讀 5799

內容來自 韋東山《嵌入式linux應用開發完全手冊》

與移植u-boot的過程相似,在移植linux之前,先了解它的啟動過程。linux的啟動過程可以分為兩部分:架構/開發板相關的引導過程、後續的通用啟動過程。如圖16.7所示是arm架構處理器上linux核心vmlinux的啟動過程。之所以強調是vmlinux,是因為其他格式的核心在進行與vmlinux相同的流程之前會有一些獨特的操作。比如對於壓縮格式的核心zlmage,它首先進行自解壓得到vmlinux,然後執行vmlinux開始「正常的」啟動流程。

引導階段通常使用組合語言編寫,它首先檢查核心是否支援當前架構的處理器,然後檢查是否支援當前開發板。通過檢查後,就為呼叫下一階段的start kernel函式作準備了。這主要分如下兩個步驟。

(1)連線核心時使用的虛擬位址,所以要設定頁表、使能mmu。

(2)呼叫c函式start_kernel之前的常規工作,包括複製資料段、清除bss段、呼叫start_kernel函式。

第二階段的關鍵**主要使用c語言編寫。它進行核心初始化的全部工作,最後呼叫rest init 函式啟動init 過程,建立系統第乙個程序:init程序。在第二階段,仍有部分架構/開發板相關的**,比如圖16.7中的setup_arch函式用於進行架構/開發板相關的設定(比如重新設定頁表、設定系統時鐘、初始化串列埠等)。

linux核心移植

1.基本開發環境 u boot版本 u boot 2012.04.01 假設u boot已經移植好 linux平台 虛擬機器下ubuntu 14.04 交叉編譯工具 gcc 4.4.3 arm開發板 mini2440 cpu s3c2440 sdram 64m,nor flash 2m,nand f...

Linux核心移植

實驗步驟 1 準備工作 2 修改頂層makefile 3 修改falsh 分割槽 4 配置編譯核心 下面以linux2.6.30.4核心移植到gec2440為例 cd linux 2.6.30.4 解壓後會在當前目錄下生成乙個linux 2.6.30.4 的核心原始碼目錄 安裝交叉工具鏈,然後修改環...

Linux核心編譯,移植以及啟動流程

linux核心移植 uboot通過thekerne kernel entry 0,board id,tag addr 傳入引數給kernel.r1暫存器儲存borad id,r2儲存tag add kernel主要做的事情 1 根據uboot傳入的r1,判斷核心是否支援該淡淡,如果支援,呼叫機器相關...