新手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烧录到相应的分区里面。
大家能帮我解解惑么? 做为新手,我在cu论坛里面已经提了2个问题了,都得到了大神很仔细的回答,获得了很大的帮助。我现在还是新手,等我懂点了,也会替一些新手解惑的。而且会把自己学习过程中的资料一点点分享给大家。哈,先自己顶一个。等待大神的解答。 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,
}
*/
};
师傅说,nandflash mtd分区只是做个标识,没有其他作用,不用把bootloader和kernel烧录到bootloader分区和kernel分区相应的地方。 对于flash的分区主要包括bootloader环境变量中的和内核代码固定的,如果环境变量中没有设置分区信息就使用内核中预先配置的 恩,你说的对,我是内核\arch\arm\mach-at91\board-sam9260ek.c分区的。回复 5# heyangya
页:
[1]