linux内核在Uncompressing Linux... done, booting the kernel中卡住的原因
今天用移植Linux2.6.22.2内核到MINI2440上,因为有相同类型的板子的支持,所以移植的起来很简单,但是在移植的时候还是出现了一个问题:
U-Boot 1.1.6-g63d519de-dirty (Sep 9 2013 - 23:25:22)
DRAM: 64 MB
Flash: 2 MB
NAND: 128 MiB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
MY2440 # tftp 0x30007fc0 uImage
dm9000 i/o: 0x20000000, id: 0x90000a46
MAC: 08:00:3e:26:0a:5b
TFTP from server 192.168.1.200; our IP address is 192.168.1.201
Filename 'uImage'.
Load address: 0x30007fc0
Loading: T #################################################################
#################################################################
#################################################################
#################################################################
#############################
done
Bytes transferred = 1476164 (168644 hex)
MY2440 # bootm 0x30007fc0
## Booting image at 30007fc0 ...
Image Name: Linux-2.6.22.6-g9d3e98a0-dirty
Created: 2013-09-15 13:49:55 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1476100 Bytes = 1.4 MB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
OK
Starting kernel ...
Uncompressing Linux.............................................................................................. done, booting the kernel.
在这里内核停住不动了~~~~
由于输出的信息有限,查找原因不是很方便。上网查询的时候看到这个问题的原因可能有以下几个:
-
machine type 不匹配
该部分审查代码后确定machine type是匹配的,排除
-
串口驱动没有编译入内核
该部分审查.config文件后发现串口也配置编入了内核,排除。
-
内核启动参数设置错误
在uboot中打印了启动参数后发现
MY2440 # printenv
bootargs=noinitrd root=/dev/mtdblock 2 init=/linuxrcconsole=ttySAC0
bootcmd=nboot 0x32000000 0 0;bootm 0x32000000
bootdelay=5
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.1.201
serverip=192.168.1.200
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
```
这里bootargs的启动参数设置错误,没有给linux传入使用哪个控制台,因此串口中无输出。问题找到