......... done, booting the kernel問題彙總帖

 

Error: unrecognized/unsupported machine ID (r1 = 0x33f60264).

解決方法一

========================================================

    Linux內核啓動時出現:bad machine ID,原因大致是u-boot傳遞給內核的machine ID錯誤,可以手動在內核源代碼中添加machine ID.

解決方法:
在u-boot命令行中輸入bdinfo
查看板卡信息,我的輸出如下:
[ ~ljh@GDLC ]# bdinfo
arch_number = 0x000000C1
env_t       = 0x00000000
boot_params = 0x30000100
DRAM bank   = 0x00000000
-> start    = 0x30000000
-> size     = 0x04000000
ethaddr     = 08:00:3E:26:0A:5B
ip_addr     = 10.1.8.245
baudrate    = 115200 bps


修改內核的arch/arm/kernel/head.S,直接將s3c2410的參數賦給內核
# cd linux-2.6.19
# vi arch/arm/kernel/head.S +72
----------------------------------------------    
70     __INIT
71     .type       stext, %function
72 ENTRY(stext)
   /********* add here *********/
   mov    r0, #0
   mov    r1, #0xc1
   ldr    r2, =0x30000100
   /********* end add *********/

73     msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
74     @ and irqs disabled


 

 

第一種 

移植內核時總是出現問題:Uncompressing Linux................................................................ done, booting the kernel.

這個問題困擾了兩天半了,今天終於解決了,linux系統也移植成功了,現將這種情況的解決辦法跟大家分享一下:

Uncompressing Linux................................................................ done, booting the kernel.

就不動了,以前用2.6.8.1內核是可以啓動的。

re:命令行的console參數錯了,應該爲console=ttySAC0,不是console=ttyS0。

    因爲2.6對2410的串口支持已經很好了,使用默認配置的話就不要去懷疑串口驅動了。問題出在命令行上,有人說我將默認的命令行改成了console=ttySAC0也還是不行。這隻能說明改動了默認的命令行,只有在bootloader沒有傳遞命令行參數給內核的時候才起作用。如果你的bootloader啓動過2.4的內核,命令行參數肯定是不對的,在bootloader中將命令行改了就行了。例如:console=ttySAC0,115200 root=/dev/ram init=/linuxrc rw initrd=0x30008000,0x320000

    因爲燒寫bootlader麻煩,時間長,調試階段不建議修改bootloader。我將內核中的arch/arm/kernel/setup.c文件中的parse_tag_cmdline()函數中的內容註釋掉,並且配置正確的CONFIG_CMDLINE參數,即可運行。以後每當改變內核參數只要改變CONFIG_CMDLINE就可以了。(CONFIG_CMDLINE這個值可以在make menuconfig中配置,2.6.11版本和2.6.14版本配置位置有所不同,請注意).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章