|
我使用的linux内核为linux.26.20.3的版本,使用u-boot引导,ram 64M cpu s3c2410 nand flash 64M cs9800.
系统通过u-boot引导,bootargs为 console=ttySAC0,115200, mem64M (仅是作测试之用,文件系统还没有挂上)
u-boot中相关引导参数传递相关的宏,都已经设置。
u-boot锁定频率为200MHz
似乎该注意到的都已经注意到了,但是linux内核还是没有被成功引导起来。
引导信息如下:
U-Boot 1.2.0 (Oct 31 2007 - 11:42:11)
U-Boot code: 33F80000 -> 33F981CC BSS: -> 33F9CA84
RAM Configuration:
Bank #0: 30000000 64 MB
IN board init
NAND: 64 MB
In: serial
Out: serial
Err: serial
make sure define CONFIG_DRIVER_CS8900
net id is 0x630e
eth_initialize, file: board.c, line = 400
FCLK is 200000000
eth_initialize function
Hit any key to stop autoboot: 0
NAND read: device 0 offset 262144, size 2097152 ...
2097152 bytes read: OK
## Booting image at 30008000 ...
Image Name: linux-2.6.20
Created: 2007-10-28 8:34:56 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1179948 Bytes = 1.1 MB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
bootargs = console=ttySAC0,115200 mem64M
arg[0] = bootm
arg[1] = 0x30008000
Starting kernel ...
Uncompressing Linux.............................................................
首先,为了确认是否为u-boot的问题,我将linux2.4的内核传入0x30008000,并且用u-boot的bootm引导(当然修改 console=ttyS0,115200)成功引导,并且也显示接受到了 bootargs的信息。由此应该可以排除u-boot的问题。(是否有疑问?请指出)
为了跟踪2.6.20内核是否运行正常,发现了个奇怪的问题。
在汇编跟踪阶段采用了printascii和点led并行跟踪的方式,最后跟踪到b start_kernel处(该句之前,除了mmu on后内存地址空间发生变化led不可用,之后只能用printascii跟踪,所有的调试信息都能正常出现)。
当跟踪到main.c中的start_kernel后,所有的调试方式都失去了效果,终端没有任何信息。
我是在start_kernel函数的入口处继续使用printascii函数进行打印。
有谁遭遇到这怪事呢?给我些指点吧!谢谢! |
|