加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:40:32 所属栏目:百科 来源:网络整理
导读:? 关于Bootloader一些常用参数的使用以及在NAND FLASH里面固化整个嵌入式系统 工作这段时间以来,常常有许多学员为用H-JTAG向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.重新启动开发板

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读