lvlovelive 发表于 2014-5-25 18:15:29

在uboot下,通过tftp nand write.uboot命令更新uboot问题

hi all
使用OK6410A开发板,使用原厂提供的uboot image。在uboot下通过tftp命令将更新的uboot image镜像下载到内存中,然后nand erase擦除nand flash中原始uboot分区内容,最后通过nand write.uboot命令将内存中的新uboot image镜像烧写到nand flash中。以上操纵能够实现在uboot下直接更新uboot镜像。查看了原厂提供的uboot1.1.6源码,关于这部分的nand flash操作,代码如下:
else if (!read && s != NULL && (!strcmp(s, ".uboot")) && nand->writesize == 4096) {
            size=4096;
            nand_write(nand, off, &size, (u_char *)addr);
            off+=4096;
            addr+=2048;
            nand_write(nand, off, &size, (u_char *)addr);
            off+=4096;
            addr+=2048;
            nand_write(nand, off, &size, (u_char *)addr);
            off+=4096;
            addr+=2048;
            nand_write(nand, off, &size, (u_char *)addr);
            off+=4096;
            addr+=2048;

            size=1024*1024-4*4096;
            ret = nand_write(nand, off, &size, (u_char *)addr);

      }else if(!read && s != NULL && (!strcmp(s, ".uboot")) && nand->writesize == 8192)
      {

            size=8192;

            ret=nand_write(nand, off, &size, (u_char *)addr);

            off+=8192;
            addr+=2048;
            ret=nand_write(nand, off, &size, (u_char *)addr);

            off+=8192;
            addr+=2048;
            ret=nand_write(nand, off, &size, (u_char *)addr);

            off+=8192;
            addr+=2048;
            ret=nand_write(nand, off, &size, (u_char *)addr);

            off+=8192;
            addr+=2048;

            size=1024*1024-4*8192;
            ret = nand_write(nand, off, &size, (u_char *)addr);
      }
对于上述代码的操作,不清楚该代码为什么要这么做?难道是s3c6410芯片对于nand flash的操作比较特殊?addr为什么是2048?直接使用nand write命令从内存中将新的uboot image镜像烧写到nand flash中,可以吗?这个方法实际操作是失败的,烧写后uboot无法启动。对于以上问题,希望能够给以解答,谢谢!

飞凌-unix 发表于 2014-5-26 08:51:16

这里有一篇博文,你可以看一下哈,地址链接:http://blog.csdn.net/rainysky_sj/article/details/8685365

lvlovelive 发表于 2014-5-26 09:50:45

hi 委员长,
这篇博文和我问题不一样哦,我问题的是ok6410a uboot下烧写更新uboot镜像,为什么要使用nand write.uboot命令,使用nand write为什么不行?使用两个命令烧写uboot后,nand dump出nand flash中的内容发现,写入nand flash中的内容是一样的。

飞凌-unix 发表于 2014-5-26 13:56:12

lvlovelive 发表于 2014-5-26 09:50 static/image/common/back.gif
hi 委员长,
这篇博文和我问题不一样哦,我问题的是ok6410a uboot下烧写更新uboot镜像,为什么要使用nand...

那些你都可以试试的,没有说规定死了
页: [1]
查看完整版本: 在uboot下,通过tftp nand write.uboot命令更新uboot问题