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.重新启动开发板

嵌入式及3G相关资源及学习请点击:嵌入式开发视频 android开发视频 android培训 3G培训 QT培训 QT开发视频 物联网培训 物联网技术视频 嵌入式学习   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值