嵌入式爱好者

查看: 8166|回复: 3

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

[复制链接]

6

主题

15

帖子

28

积分

扫一扫,手机访问本帖
发表于 2014-5-25 18:15:29 | 显示全部楼层 |阅读模式
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无法启动。对于以上问题,希望能够给以解答,谢谢!
回复

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2014-5-26 08:51:16 | 显示全部楼层
这里有一篇博文,你可以看一下哈,地址链接:http://blog.csdn.net/rainysky_sj/article/details/8685365
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

6

主题

15

帖子

28

积分

 楼主| 发表于 2014-5-26 09:50:45 | 显示全部楼层
hi 委员长,
这篇博文和我问题不一样哦,我问题的是ok6410a uboot下烧写更新uboot镜像,为什么要使用nand write.uboot命令,使用nand write为什么不行?使用两个命令烧写uboot后,nand dump出nand flash中的内容发现,写入nand flash中的内容是一样的。

点评

那些你都可以试试的,没有说规定死了  详情 回复 发表于 2014-5-26 13:56
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

发表于 2014-5-26 13:56:12 | 显示全部楼层
lvlovelive 发表于 2014-5-26 09:50
hi 委员长,
这篇博文和我问题不一样哦,我问题的是ok6410a uboot下烧写更新uboot镜像,为什么要使用nand  ...

那些你都可以试试的,没有说规定死了
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-21 13:04

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表