您的位置:首页 > 运维架构 > Linux

开发板通过u-boot和linux内核修改nand flash分区

2018-12-03 19:07 148 查看

一个MTD分区折磨了我好几天,现在搞明白了,跟大家分享以下。

目的:我的开发板默认的MTDkernel分区是2M,我现在需要将分区扩为4M。

硬件平台:JZ2440(芯片:S3C2440)

1.在UBOOT下的uboot/include/config/100ask24x0.h 中(开发板不一样,配置文件也不一样)修改,根据自己的情况修改大小。

[code]#define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader)," \
                            "128k(params)," \
                            "4m(kernel)," \
                            "-(rootfs)"

然后编译 make 

2 然后在linux下:linux-3.4.2\arch\arm\mach-s3c24xx\Common-smdk.c 修改成与u-boot中相对应的参数。

[code]static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name	= "bootloader",
.size	= SZ_256K,
.offset	= 0,
},
[1] = {
.name	= "params",
.offset = MTDPART_OFS_APPEND,
.size	= SZ_128K,
},
[2] = {
.name	= "kernel",
.offset = MTDPART_OFS_APPEND,
.size	= SZ_4M,
},
[3] = {
.name	= "rootfs",
.offset	= MTDPART_OFS_APPEND,
.size	= MTDPART_SIZ_FULL,
}
};

static struct s3c2410_nand_set smdk_nand_sets[] = {
[0] = {
.name		= "NAND",
.nr_chips	= 1,
.nr_partitions	= ARRAY_SIZE(smdk_default_nand_part),
.partitions	= smdk_default_nand_part,
},
};

然后编译生成uImage:make uImage

3 把u-boot.bin下载到开发板后,设置参数,执行如下命令:mtdparts default

4 在UBOOT下,UBOOT优先使用params分区中的参数,再次使用100ask24x0.h中的,所以想要使用刚才所修改的分区,还需要把params的分区中的参数擦除掉:nand erase params,让uBOOT使用100ask24x0.h中我们所修改的参数。

5 在UBOOT下使用mtd命令查看分区情况。然后在UBOOT下使用print命令,打印环境变量,如果环境变量中的参数跟mtd下的参数对应,说明分区完全成功。

使用mtd命令查看分区情况:

使用print命令查看环境变量情况:

6 分区完全成功后,就需要重新下载文件系统和Linux内核镜像文件。

                                                       新手望轻喷!!!

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐