[ZT]烧写内核uImage和根文件系统rootfs到NAND FLASH

/*2011.1.8*/
/*uboot  1.1.4*/
/*内核:  linux-2.6.22.6*/
/*NAND FLASH为:k9f2g08u0a*/

因为之前没连续写过一块以上的数据,今天写uImage才发现之前修改的uboot1.1.4里的NAND驱动有问题.
继续修改如下:

1.vi uboot1.1.4/include/configs/fl2440.h
添加:
#define CONFIG_FL2440           1

2.vi uboot1.1.4/common/cmd_nand.c
修改nand_rw函数:
将start  += n; 这句改为:
#if defined(CONFIG_FL2440)
                start  += 2*n;
#else
                start  += n;
#endif

3.vi uboot1.1.4/include/linux/mtd/nand.h
#define CFG_ENV_OFFSET  0x60000  -> #define  CFG_ENV_OFFSET 0xC0000 /*0xC0000=2*0x60000*/
/*这样uboot的环境变量在NAND中存储的的实际地址才是0x60000*/

4.vi uboot1.1.4/common/cmd_nand.c
先注释了这行:
/*#define CONFIG_MTD_NAND_ECC */
要么使用nand write写过数据的块会被内核认为是坏块.

5. 烧写内核镜像文件,写入到NAND FLASH内.

tftp 0x32000000 uImage
nand erase 0x100000 0x200000
nand write 0x32000000 0x100000 0x200000

6.  接着写根文件系统到NAND:
设置uboot环境变量,从NAND启动内核,
先用NFS挂载根文件系统:
setenv bootcmd nand read 0x32000000 0x100000 0x200000/;bootm 0x32000000

setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.0.22:/home/arm/rootfs

ip=192.168.0.11:192.168.0.22:192.168.0.33:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200

saveenv

6.1  在主机上将根文件系统打包:
cd rootfs
tar cvf rootfs.tar ./

6.2  启动开发板,在开发板上先用mount命令挂载要作为根文件系统的分区:
mount -t yaffs /dev/mtdblock2 /mnt


6.3  然后执行以下命令将根文件系统解压到NAND里:
tar xvf rootfs.tar -C /mnt/

7.  重设uboot环境变量,加载NAND中根文件系统:
setenv bootargs noinitrd root=/dev/mtdblock2 rootfstype=yaffs console=ttySAC0 init=/linuxrc

saveenv

OK!

特别注意:

要同步修改好内核镜像文件uImage下,.config配置文件中的CMDLINE启动参数.

nfs方式启动的时候是/dev/nfs

nand方式启动的时候是/dev/mtdblock2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值