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

2021-10-22 21:26:00 字數 1200 閱讀 4689

linux核心移植 

(uboot通過thekerne/kernel_entry(0,board_id,tag_addr)傳入引數給kernel.//r1暫存器儲存borad_id,r2儲存tag_add)

kernel主要做的事情:

1 根據uboot傳入的r1,判斷核心是否支援該淡淡,如果支援,呼叫機器相關的初始化函式

2 解析tag引數

3 裝載驅動程式(網絡卡,flash,外部裝置等)

4 掛載跟檔案系統

linux移植步驟

2.打補丁,patch -p0 3.配置,make ***_defconfig/cp ***_defconfig .config  ;make menuconfig ,修改配置,儲存後,會生成.config

4.make uimage 或者型別命令的時候,.config會同時生成include/config/auto.conf和include/linux/autoconfig.h,前者對應makefile中的config_***=y/m,

後者對應於具體原始碼中的config_***=1 

4.kerne/makefile為頂層makefile,會包含autioconfig.h會包含具體的cpuarch(cpu 體系)的makefile include arch/$(srcarch)/makefile

比如 arch/arm/makefile ,makefile定義uimage以來vmlinux,頂層makefile中定義了vmlinux的依賴,鏈結指令碼等等:vmlinux:$(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o)

指定了鏈結指令碼arm/arm/kernle/vmlinux.lds,指定了核心位址和依賴目標arm/arm/kernel/head.o(第乙個檔案)&init_task.o lib.a以及各個目錄下的built-in.o

make uimage/***.img v=1(v=1可以詳細列出編譯過程命令) uimage就是vmlinux+頭部資訊打包

5.uboot最後通過thekernel(0,board_in,tag_list_add)啟動核心,傳入機器id(r1暫存器)和參考位址(r2暫存器).

6.核心啟動:會先執行自解壓縮**.然後arch/arm/kernel/head.s開始,解析uboot傳入的機器id:判斷是否支援該單板,建立頁表,使能mmu,跳轉到start_kernel(核心的第乙個c函式)

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

內容來自 韋東山 嵌入式linux應用開發完全手冊 與移植u boot的過程相似,在移植linux之前,先了解它的啟動過程。linux的啟動過程可以分為兩部分 架構 開發板相關的引導過程 後續的通用啟動過程。如圖16.7所示是arm架構處理器上linux核心vmlinux的啟動過程。之所以強調是vm...

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 的核心原始碼目錄 安裝交叉工具鏈,然後修改環...