u boot傳遞啟動引數不成功的解決方法

2021-09-30 04:21:54 字數 1430 閱讀 4365

linux核心的啟動引數可以由核心預設設定,也可以通過u-boot傳遞。相對來說,u-boot傳遞的靈活性更強,只須設定bootargs環境變數即可;而核心的預設設定改變,則需要重新編譯核心。

把u-boot移植到s3c2410的板,多次是複製修改smdk2410的配置。然而,smdk2410的預設配置沒有啟用啟動引數傳遞,引導核心使用的是核心預設的啟動引數。即使設定:

setenv bootargs root=/dev/mtdblock2 init=/bin/bash console=ttysac0,115200

核心仍然使用其預設引數,該啟動引數並沒有傳遞。

原因分析如下:

先看看lib_arm/armlinux.c中:

.........

#if defined (config_setup_memory_tags) || /

defined (config_cmdline_tag) || /

defined (config_initrd_tag) || /

defined (config_serial_tag) || /

defined (config_revision_tag) || /

defined (config_lcd) || /

defined (config_vfd)

static void setup_start_tag (bd_t *bd)

{params = (struct tag *) bd->bi_boot_params;

…………

該段程式先判斷是否定義了config_cmdline_tag等,才決定是否給核心傳遞引數。而board/smdk2410/smdk2410.h中並沒有定義config_cmdline_tag,問題就出現在這裡。

因此,這裡參照smdk2440.h的配置,在smdk2410.h(開發板名字.h)中新增以下3條定義(藍色部分):

#define config_sys_clk_freq    12000000 /* smdk2400 has 12 mhz input clock */

#undef config_use_irq            /* we don't need irq/fiq stuff    */

#define config_cmdline_tag     1    /* enable passing of atags    */

#define config_setup_memory_tags 1

#define config_initrd_tag     1

重新編譯就ok了。

(ps:只新增「#define config_cmdline_tag      1」行不行?經過測試是不行的,系統啟動到booting the kernel.就沒有顯示了。猜想是啟動引數不完整造成,沒有深入分析。)

文章出處:飛諾網(www.firnow.com):

apache啟動不成功

os 10022 提供了乙個無效的引數。child 840 setup inherited listeners wsasocket failed to open the inherited socket.解決辦法 1.用netstat a檢視80埠是否占用 2.a.網路上的芳鄰 檢視網路連線 本地連...

並不成功的開始

我所讀的學校是中國西部的一所普通高校。我進大學後也和大多數同學一樣,過著60分萬歲的日子,除了對程式設計比較感興趣外。呵呵,好多室友都說我外表女人,內心卻男人 喜歡寫程式,喜歡和男生打星際,喜歡打cs選土匪,拿ak47 四年的大學生活淘進了我剛進校時的傲氣與自尊,在梔子花開的季節,我面對的卻是無法把...

安裝不成功 Revit材質庫安裝不成功的解決方法

bimit斑馬課堂 學bim,找斑馬 1 在 管理 選項卡中,開啟 材質 管理器 2 在材質管理器中有兩個區,上面的區域,是管理當前專案內的材質的。如下圖藍框所示。在下面的區域,是軟體在安裝的時候會裝好的材質庫。如下圖紫框所示。確認一下,在下面的紫框中,有 autodesk材質 和 aec材質 如果...