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.2archarmmach-s3c24xxCommon-smdk.c 这个文件里把分区信息改动的和uboot一样

然后就能够使用了

原文地址:https://www.cnblogs.com/jhcelue/p/7256509.html