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材質 如果...