uboot 和内核的分区关系

随着内核的更新,内核越来越大,uboot给nand的kernel分区默认是2M的

device nand0 <nandflash0>, # parts = 4 
 #: name                        size            offset          mask_flags 
 0: bootloader          0x00040000      0x00000000      0 
 1: params              0x00020000      0x00040000      0 
 2: kernel              0x00200000      0x00060000      0 
 3: root                0x0fda0000      0x00260000      0

修改分区如下,建议留给kernel4M大小:

第一步 在你的配置文件下include/config/xxx.h 里面有一个宏定义

#define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader)," \ 
                            "128k(params)," \ 
                            "2m(kernel)," \ 
                            "-(root)"

把2M改为4M(改好后重新编译uboot),在cmd_jffs2.c里面我们看到把默认的分区信息分配给了mtdparts_default

#if defined(MTDPARTS_DEFAULT) 
static const char *const mtdparts_default = MTDPARTS_DEFAULT; 
#else 
#warning "MTDPARTS_DEFAULT not defined!" 
static const char *const mtdparts_default = NULL; 
#endif

然后在cmd_jffs2.c的函数int do_jffs2_mtdparts(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])中把mtdparts_default

给了环境变量setenv("mtdparts", (char *)mtdparts_default);

因此我们可以在uboot的中设置命令 mtdparts default,然后利用mtd查看 分区一样改好了

device nand0 <nandflash0>, # parts = 4 
 #: name                        size            offset          mask_flags 
 0: bootloader          0x00040000      0x00000000      0 
 1: params              0x00020000      0x00040000      0 
 2: kernel              0x00400000      0x00060000      0 
 3: root                0x0fba0000      0x00460000      0

第二步 修改内核的分区信息,\linux-3.4.2\arch\arm\mach-s3c24xx\Common-smdk.c 这个文件中把分区信息修改的和uboot一样

然后就可以使用了

你可能感兴趣的:(uboot 和内核的分区关系)