在移植 linux2.6 kernel 到我们远锋s3c2440 开发板的过程中,kernel 老是起不来,Uncompressing Linux.................................. done, booting the kernel. 后就停止了,折腾了好几次,刚刚终于找到了原因,很开心。原来板上的晶振频率是16.934400M,而kernel默认的是12M,因此跑到了kernel 就卡住了,只要把 ./arch/arm/mach-s3c2410/cpu.c 中的xtal = 12*1000*1000 改成 xtal = 16934400 就ok了。
一般通过 tftpboot 0x33000000 zImage 与 go 0x33000000 启动kernel 时,也会遇到卡住问题,CPU ID 错误,那是因为 go 是直接跳到 kernel 地址去执行,bootloader 没有向kernel 传递相关参数,导致kernel 不能启动,只要把head.S 文件中的 1: mov r7,r1 @ save architecture ID 改成 mov r7, #0xc1 就可以了。
还有,要注意的是 nand flash 的mtd分区表问题。