嵌入式之路 核心啟動引數解析

2021-08-26 17:28:50 字數 1654 閱讀 2499

>>>>>>>>> 引用

[1]linux系統 kernel引數傳遞方式詳細解析

1、最常用的方式,就是在 make config裡修改「 general setup」子選單中的「 defaultkernel command string」選項,通過修改這個選項來修改 include/linux/autoconf.h檔案中的 config_cmdline巨集。

2、有的時候為了省去 make menuconfig的時間,並且核心命令也是固定的,就可以寫死核心 arch/arm/setup.c檔案 default_command_line,這個變數本來是初始化為 config_cmdline的。

3、除了方法 1之外,另外一種正規的方法就是將核心命令寫入核心參數列中,然後通過 start_kernel()->setup_arch()->parse_tags()->parse_tag()->parse_tag_cmdline()函式來將核心參數列中的核心命令覆蓋 default_command_line變數(當然你首先得有核心參數列)。

4、最後,有的板子會採取直接將核心命令通過 bootloader傳遞給核心

怎樣傳遞呢?

[2]核心引數問題

在 uboot中使用 bootm命令可以將引數傳遞給核心(其實就是將引數放到 dram_base+0x00000100處,然後核心從此處讀取)。

dram_base+0x00000100處是否有 tag list,有的話從此處讀取;

若沒有,則使用 default_command_line,這個就是在配置核心 make menuconfig的時候設定的,即 config_cmdline。

>>>>>>>>> 引用

命令列的格式類似於下面的樣子

config_cmdline="mem=64m console=ttysac0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=2048 rw"

每個關鍵字分別代表什麼含義,系統怎樣解析呢?

從原理上,簡單地講,核心是做字串解析。首先對整個字串按空格分隔開,每個子串又由等號分隔。等號左邊是系統預定義的關鍵字,等號右邊是對應關鍵字解析函式的引數。

>>>>>>>>> 引用

[3]linux核心啟動引數詳解

所有型如「 name= value」引數,如果沒有被上面所述的設定函式 [指系統預定義關鍵字的解析函式 ]接收,將被解釋為系統啟動後的環境變數,

比如「 term=vt100」就會被作為乙個啟動時引數。

所有沒有被核心設定函式接收也沒又被設定成環境變數的引數都將留給 init程序處理,比如「 single」。

>>>>>>>>> 引用

系統已經支援哪些關鍵字,即其含義是什麼?

最詳盡的解釋無疑來自《 linux kernel in a nutshell》 一書,第九章。

[4]linux kernel in a nutshell

你還可以新增自定義的啟動引數和對應的解析函式。

[5]增加自定義的核心啟動引數

[1]linux系統 kernel引數傳遞方式詳細解析

[2]核心引數問題

[3]linux核心啟動引數詳解

[4]linux kernel in a nutshell

[5]增加自定義的核心啟動引數

嵌入式linux核心啟動流程

核心構成分析 uimage構成 arm linux核心映像uimage生成過程 u boot認為zimage為自解壓檔案 zimage decompress code head.s misc.s compressed vmlinux vmlinux vmlinux init arch arm ker...

嵌入式之路 開張

今天是2009.7.21 嵌入式之路開張大吉.希望自己能堅持走完.留貼紀念.學習目標 1.os linux系統 cygwin 模擬 2.arm9晶元 s3c2410 通過skyeye模擬 3.bootloader移植uboot 4.linux 核心移植,剪裁 5.linux 驅動開發 6.linux...

嵌入式曲折之路

2018年7月12日日記 並不知道自己選擇的路是否正確,但是既然已經選擇了,又何必後悔呢?加把勁超越自己,有時候就是自己給自己設定的心理障礙使得自己無法正視自己,遇到困難就退縮,即便被人笑話又怎麼樣?即便被人開出又怎麼樣?辦法總是人想出來的,一遇到問題就退縮著實不太符合男人的特色!一定要學會臉皮厚,...