uboot分区和内核MTD分区

来源:互联网 发布:exchange2010多域名 编辑:程序博客网 时间:2024/04/29 08:14

 如果你是通过uboot的内核命令行给MTD层传递MTD分区信息,这种情况下,内核读取到的分区信息始终和u-boot中的保持一致(推荐的做法)

如果你是把分区信息写在内核源代码MTD里定义好的方法,那最好保证它和u-boot中的保持一致,即同步修改uboot及内核的相关部分。

例如:以下是uboot环境变量和分区情况

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),4m(kernel),-(root)


要想使内核和根文件系统能够正确引导:内核中分区应该是

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {
.name = "bootloader",
.offset = 0,
.size = SZ_256K,
},
[1] = {
.name = "params",
.offset = SZ_256K,
.size = SZ_128K,
},
[2] = {
.name = "kernel",
.offset = SZ_256K + SZ_128K,
.size = SZ_4M,
},
[3] = {
.name = "root",
.offset = SZ_256K + SZ_128K + SZ_4M,
.size = SZ_256M - SZ_256K - SZ_128K - SZ_4M,
}

};

当然也可以是

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {
.name = "bootloader",
.offset = 0,
.size = SZ_256K,
},

[1] = {
.name = "kernel",
.offset = SZ_256K + SZ_128K,
.size = SZ_4M,
},
[2] = {
.name = "root",
.offset = SZ_256K + SZ_128K + SZ_4M,
.size = SZ_256M - SZ_256K - SZ_128K - SZ_4M,
}
};

但这里bootargs中的root应该是/dev/mtdblock2,





0 0
原创粉丝点击