Bootloader常用参数及在NAND FLASH里固化嵌入式系统

  关于Bootloader一些常用参数的使用以及在NAND FLASH里面固化整个嵌入式系统

工作这段时间以来,常常有许多学员为用H-JTAG向FLASH中烧写文件而苦恼。难道我们每次都要用这种方法去烧写文件?呵呵,答案必须不是。

我建议大家在做系统移植时要保证自己的板子NOR FLASH有一个好的Bootloader,这样当NAND FLASH里面的Bootloader要更换或者崩溃时就可以使用NOR FLASH里面的Bootloader向NAND FLASH烧写Bootloader,从而避免使用H-JTAG进行烧写的一连串的复杂动作,最给力的是它有效的避免了H-JTAG硬件自身的缺陷,“有时好使,有时不好使”的问题,呵呵,用过H-JTAG的人,大多数应该遇到过这种情况。

下面以FS2410板子像NAND FLASH 烧写Bootloader为例子:

1. 从NOR FLASH启动Bootloader,准备好要向NAND FLASH烧写的文件

2.设置好Bootloader的一些参数,确保Bootloader和主机之间能ping的通.

3.下载烧写文件到内存中

Tftp 30008000 u-boot.bin(自己要烧写Bootloader文件);

4.把内存中的数据拷贝到NAND FLASH里面

(1)nand erase擦除NAND FLASH.

(2)nand write 0x30008000 0x00000000 0x00040000

把内存地址的0x30008000中的数据写到NAND FALSH存储空间的0x000地址,大小 0x00040000(确保这个大小比要烧写的文件u-boot.bin大一点).

5.重新打开电源,从NAND FLASH启动,这个时候你可以看到NAND FLASH里面的Bootloader正常启动了

下面在给出将内核,根文件系统镜像固化在NAND FLASH中的操作流程

1.给nandflash分区(修改arch/arm/plat-s3c24xx/common-smdk.c)

static struct mtd_partition smdk_default_nand_part[] = {
                [0] = {
                        .name = "bootloader u-boot-2010.03",
                        .size = 0x40000,
                        .offset = 0,
                },
                [1] = {
                        .name = "kernel linux-2.6.35",
                        .offset = 0x40000,
                        .size = 0x400000,
                },
                [2] = {
                        .name = "rootfs buysbox-1.17.3",
                        .offset = 0x440000,
                        .size = 0x800000,
                },
                [3] = {
                        .name = "usrfs",
                        .offset = 0xc40000,
                        .size = 0xa00000,
                },

};

分好区以后,重新编译内核(以上分区,指示参考,可以根据自己的需要进行分区)

2.烧制内核和文件系统

下载内核到内存地址为30008000上
        tftp 30008000 zImage

擦除flash
        nand erase 0x00040000(从这个地址开始擦除,被忘记这个地址以前我们放了Bootloader)

从内存拷贝到flash上
        nand write 0x30008000 0x00040000 0x00400000

下载文件系统镜像到内存地址为30008000上
        tftp 30008000 rootfs.cramfs

从内存拷贝到flash上
        nand write 0x30008000 0x00440000 0x00800000

3.设置u-boot参数
        setenv ipaddr 192.168.1.222 (随意设置)
        setenv serverip 192.168.1.79(虚拟机ip)
        setenv ethaddr 11:22:33:44:55:66
        setenv gatewayip 192.168.1.1

setenv bootcmd nand read 0x33000000 0x00040000 0x00400000\; go 0x33000000
        setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 devfs=mount display=sam240

4.重新启动开发板

 

你可能感兴趣的:(Bootloader常用参数及在NAND FLASH里固化嵌入式系统)