免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5641 | 回复: 9
打印 上一主题 下一主题

请问这个nand 分区信息对应nand flash地址是? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 09:32 |只看该作者 |倒序浏览
如下:
static struct mtd_partition nand_partitions[] = {
        /* bootloader (U-Boot, etc) in first sector */
        {
              .name                = "bootloader",
              .offset                = 0,
              .size                = SZ_256K,
              .mask_flags        = MTD_WRITEABLE, /* force read-only */
        },
        /* bootloader params in the next sector */
        {
              .name                = "params",
              .offset                = MTDPART_OFS_APPEND,
              .size                = SZ_128K,
              .mask_flags        = MTD_WRITEABLE, /* force read-only */
        },
        /* kernel */
        {
              .name                = "kernel",
              .offset                = MTDPART_OFS_APPEND,
              .size                = SZ_4M,
              .mask_flags        = 0
        },
        /* file system */
        {
              .name                = "filesystem",
              .offset                = MTDPART_OFS_APPEND,
              .size                = MTDPART_SIZ_FULL,
              .mask_flags        = 0
        }
};
按道理是
uboot:0-40000,参数占用20000,即40000-60000

kernel:占用400000,即60000 - 460000

文件系统:剩下的。
不知道对不?现在想通过uboot烧写kernel和文件系统,搞不清其实地址,例如:

nand erase 140000 20000

nand write 80800000 140000 20000
大侠请教!

论坛徽章:
0
2 [报告]
发表于 2008-11-19 12:44 |只看该作者
         {
              .name                = "kernel",
              .offset                = MTDPART_OFS_APPEND,  //kernel分区的起始地址
              .size                = SZ_4M,     //kernel分区的大小
              .mask_flags        = 0
        }


nand erase MTDPART_OFS_APPEND值  SZ_4M值

假设你使用tftp将uImage下载到了内存的80800000这个地址,tftp会显示传输了多少个byte( 假设为7ccee3 hex):
nand write 80800000 MTDPART_OFS_APPEND值 0x7ccee3

论坛徽章:
0
3 [报告]
发表于 2008-11-19 13:50 |只看该作者
实际上 MTDPART_OFS_APPEND = -1,这真么理解呢?

论坛徽章:
0
4 [报告]
发表于 2008-11-19 14:27 |只看该作者

回复 #3 lanmanck 的帖子

那你就不用MTDPART_OFS_APPEND, 自己指定绝对地址嘛!
.offset=0x00100000,  
.size=0x00100000,

对于你上面的,kernel分区的起始地址就是:
0x00000000+SZ_256K+SZ_128K

MTDPART_OFS_APPEND应该是一个宏,用来计算当前分区的起始地址:
http://www.chinaunix.net/jh/4/1019715.html

[ 本帖最后由 dglwx 于 2008-11-19 14:29 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-11-19 14:55 |只看该作者
谢谢关注。我搜索了一下,有如下解析:

    这里将Flash分成3个分区,分别存放引导装载程序(Bootloader)、内核和根文件系统。mask_flags:MTD_WRITEABIE表示分区是只读的;MTDPART_OFS_APPEND表示分区位置紧挨着上一个分区;MTDPART_SIZ_FULL表示占用剩余的全部空间。文中将JFFS2文件系统的映像存放在第3个分区上,作为系统的根文件系统。

我按照:MTDPART_OFS_APPEND表示分区位置紧挨着上一个分区 这句话去烧写flash,发现不对
nand erase 6000 200000
重启后uboot会说crc和环境变量错误,原因应该是把它们所在地址给擦除了。
之后我看到它输出默认的环境变量值,nboot 80700000 0 a0000。原来kernel起始地址是a0000,这是怎么得来的?还是自己指定,并不一定要按照分区信息吗?

论坛徽章:
0
6 [报告]
发表于 2008-11-19 15:14 |只看该作者
nand erase 6000 200000


0x6000=24K, 你从24K处开始擦除,当然把bootloader和params擦掉了!

        /* bootloader (U-Boot, etc) in first sector */
        {
              .name                = "bootloader",
              .offset                = 0,
              .size                = SZ_256K,
              .mask_flags        = MTD_WRITEABLE, /* force read-only */
        },
        /* bootloader params in the next sector */
        {
              .name                = "params",
              .offset                = MTDPART_OFS_APPEND,
              .size                = SZ_128K,
              .mask_flags        = MTD_WRITEABLE, /* force read-only */
        },


要烧uImage应该从SZ_256K+SZ_128K处开始擦,擦除SZ_4M大小;
要烧写根文件系统,从SZ_256K+SZ_128K+SZ_4M处开始擦, 擦出MTDPART_SIZ_FULL大小.

你自己指定每个分区的起始地址和size大小最好了!如果使用上面的宏来确定,你就不能立刻看出每个分区的起始地址(如想想知道,还是需要自己来计算)。

[ 本帖最后由 dglwx 于 2008-11-19 15:20 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-11-19 15:15 |只看该作者
少了个 0 ,应该是60000,呵呵,谢谢dglwx。

论坛徽章:
0
8 [报告]
发表于 2012-10-29 17:42 |只看该作者
正在看关于UBOOT分区的信息,学习了~~

论坛徽章:
0
9 [报告]
发表于 2012-10-30 16:29 |只看该作者
    其实在系统启动的过程中会在超级终端或其他的串口终端上显示分区的信息。。。


   

论坛徽章:
1
技术图书徽章
日期:2013-10-29 15:46:41
10 [报告]
发表于 2012-11-02 11:14 |只看该作者
都在翻老贴啊...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP