xifanlover 发表于 2013-07-22 15:59

新手nandflash提问

本帖最后由 xifanlover 于 2013-07-22 16:04 编辑

我使用SAM_BA v2.10这个软件烧录nandflash_at91sam9260.bin和u-boot.bin到nandflash,然后重启配置环境变量,然后烧录kernel的uImage。这个时候nandflash里地址分配是:
nandflash_at91sam9260.bin地址为:0x0-0x20000
u-boot.bin地址为:0x20000-0x60000
环境变量存储地址为:0x60000-0x80000
kernel.bin地址为:0x80000-0x200000
我表示这样的地址我很好理解。可是我师傅给了我一份文档,文档里说对nandflash MTD分区,具体分区如图。
javascript:;
然后我就疑惑了,我上面烧录的所有东西都在mtd0分区里面?貌似不像啊,我感觉按照上图的意思应该是把bootstrap、u-boot和kernel烧录到相应的分区里面。
大家能帮我解解惑么?

xifanlover 发表于 2013-07-22 16:07

做为新手,我在cu论坛里面已经提了2个问题了,都得到了大神很仔细的回答,获得了很大的帮助。我现在还是新手,等我懂点了,也会替一些新手解惑的。而且会把自己学习过程中的资料一点点分享给大家。哈,先自己顶一个。等待大神的解答。

xifanlover 发表于 2013-07-23 08:55

nandflash的分区是在内核编译的时候完成的,分区修改文件arch/arm/mach-at91/board-sam9260ek.c中ek_nand_partition结构体内容,如下所示:
/* NAND flash*/
static struct mtd_partition __initdata ek_nand_partition[] = {
        {
                .name        = "bootloader",
                .offset        = 0,
                .size        =2 * SZ_1M,
        },
        {
                       .name   = "u_kernel",
                .offset = MTDPART_OFS_NXTBLK,
              .size = 4 * SZ_1M,
      },      
        {
                    .name   = "u_rootfs",
                    .offset = MTDPART_OFS_NXTBLK,
                    .size = 15 * SZ_1M,
      },
        {
                .name        = "kernel",
                .offset        = MTDPART_OFS_NXTBLK,
                .size        = 4 * SZ_1M,
        },
        {
                    .name   = "rootfs",
              .offset = MTDPART_OFS_NXTBLK,
                       .size   = 30 * SZ_1M,
            },
        {
                    .name   = "app_program",
              .offset = MTDPART_OFS_NXTBLK,
                       .size   = 20 * SZ_1M,
           },
        {
                    .name   = "app_data",
              .offset = MTDPART_OFS_NXTBLK,
              .size   = MTDPART_SIZ_FULL,
           }
/*
        {
                .name        = "app_res",
                .offset        = MTDPART_OFS_NXTBLK,
                .size        = MTDPART_SIZ_FULL,
        }
*/
};

xifanlover 发表于 2013-07-23 09:37

师傅说,nandflash mtd分区只是做个标识,没有其他作用,不用把bootloader和kernel烧录到bootloader分区和kernel分区相应的地方。

heyangya 发表于 2013-07-28 22:49

对于flash的分区主要包括bootloader环境变量中的和内核代码固定的,如果环境变量中没有设置分区信息就使用内核中预先配置的

xifanlover 发表于 2013-07-30 14:19

恩,你说的对,我是内核\arch\arm\mach-at91\board-sam9260ek.c分区的。回复 5# heyangya


   
页: [1]
查看完整版本: 新手nandflash提问