Mini2440 SD卡安装emdebian要点

com

实现过程基本上是参考http://code.google.com/p/mini2440/wiki/Emdebian

包括SD卡分区及模式化的内容。另外就是emdebian文件系统,用的是其提供的(见http://code.google.com/p/mini2440/downloads/list)。

该文中给出了一个强大的脚本,可以完成uboot、kernel代码下载及编译一条龙,不过编译器有些老了,如下http://mini2440.googlecode.com/files/mini2440-bootstrap-v2.sh。

但是该方案在实现过程中的一个bug是u-boot的环境变量设置不对,我的bootcmd及bootargs如下所示:

setenv bootcmd ‘mmc init;fatload mmc 0:1 ${load_addr} uImage; bootm ${load_addr}’

setenv bootargs ‘noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw ip=dhcp console=ttySAC0,115200 init=/bin/sh mem=64M’

其中的setenv load_addr 0x30007fc0。

后来遇到的就是u-boot的问题了,主体参考tekkaman的博客(http://blog.chinaunix.net/uid/20543672.html),其中的bootload章节(http://blog.chinaunix.net/uid/20543672/cid-6407-list-1.html)。最新的是2010.03 mini2440,但是编译时候出错,网卡驱动有bug,所以用的是uboot 2009.11(见http://blog.chinaunix.net/uid-20543672-id-94368.html)。编译的很顺利,但是最开始的时候为了捷径,直接下载已经编译好的u-boot,结果是死活启动不了,应该是文件受损了。

最后是linux内核启动时候遇到的问题:

No filesystem could mount root, tried:  yaffs yaffs2 vfat

 

VFS: Cannot open root device “mmcblk0p2” or unknown-block(179,2)

Please append a correct “root=” boot option; here are the available partitions:

1f00             256 mtdblock0 (driver?)

1f01             128 mtdblock1 (driver?)

1f02            5120 mtdblock2 (driver?)

1f03          125568 mtdblock3 (driver?)

1f04          131072 mtdblock4 (driver?)

b300         7782400 mmcblk0 driver: mmcblk

b301           50820 mmcblk0p1

b302         7730580 mmcblk0p2

Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

Backtrace:

 

查到解决的办法是在系统内核时,在.config文件中开启以下三个参考:

CONFIG_ARM_THUMB=y

CONFIG_AEABI=y

CONFIG_EXT3_FS=y

这段内容来自于http://www.friendlyarm.net/forum/topic/617#postform

本内核用的是2.6.32.2,即自带的,但是开启参数编译通过之后,下载到sd卡中启动失败,出现如下错误:

pc : [<3000801c>]          lr : [<33f95030>]
sp : 33f4fb60  ip : 000000ff     fp : 00000000
r10: 00000000  r9 : 33edc6d0     r8 : 33f4ffe0
r7 : 30008000  r6 : 33f4ffc4     r5 : fffff200  r4 : 000003f0
r3 : 00000000  r2 : 30000100     r1 : ea000012  r0 : 33f98305
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU …

这是个很有趣的问题,见http://www.latelee.org/porting-uboot/143-u-boot-porting-booting-kernel.html中给的分析,是因为uimage比zimage多了40个字节,

还有更厉害的解决办法,见

http://hi.baidu.com/eastream/item/4096b2147dcd1f0c8fbde433

所以在处理的时候注意地址,这是mkimage的参数设置了,我用的如下参考:

mkimage -A arm -O linux -T kernel -C none -a 0x30007fc0 -e 0x30008000 -n linux-2.6.32.2 -d zImage uImage

在完成了这些内容之后,设置好uboot中的变量,主要是bootcmd及bootargs,那么系统就可以顺利的运行起来。尽情发挥。。。。

 

收藏与分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注