分享一个V3s bsp Linux 3.4 spi nor flash 修改分区参数的方法, 抛砖引玉,请问有没有更好的方法,
比如主线Linux那种 bootargs 后者 dts 传参自动生成分区?
这个帖子太长了: licheepi zero BSP 内核(linux3.4) 编译教程 https://whycan.cn/t_682.html
重起一个新的
/* Register the whole NorFlash as a partition. */
static int partition_register(struct mtd_info *mtd, struct mtd_part_parser_data *ppdata)
{
struct mtd_partition partitions[] = {
{
.name = "NorFlash part0",
.offset = 0,
.size = MTDPART_SIZ_FULL
}};
return mtd_device_parse_register(mtd, NULL, ppdata, partitions, 1);
}
根据板子实际情况,改成如下即可 ===>
/* Register the whole NorFlash as a partition. */
static int partition_register(struct mtd_info *mtd, struct mtd_part_parser_data *ppdata)
{
struct mtd_partition partitions[] = {
{
.name = "u-boot",
.offset = 0,
.size = SZ_512K
},
{
.name = "sys_config",
.offset = 0x80000,
.size = SZ_512K
},
{
.name = "kernel",
.offset = 0x100000,
.size = 3*SZ_1M
},
{
.name = "rootfs",
.offset = 0x400000,
.size = 12*SZ_1M
}
};
return mtd_device_parse_register(mtd, NULL, ppdata, partitions, sizeof(partitions)/sizeof(struct mtd_partition));
}
离线
选中:Device Drivers ---><*> Memory Technology Device (MTD) support ---> [*] Command line partition table parsing
uboot中设置环境变量:setenv bootargs 'console=ttyS0,115200 root=/dev/mtdblock4 rootfstype=squashfs mtdparts=spi0.0:992K(uboot),32K(ubootenv),64K(dtb),4032K(kernel),11M(rootfs)'
启动时候内核打印以下信息就算是ok了。忽略我的size异常导致的打印吧。
[ 0.833578] 5 cmdlinepart partitions found on MTD device spi0.0
[ 0.840254] Creating 5 MTD partitions on "spi0.0":
[ 0.845754] 0x000000000000-0x0000000f8000 : "uboot"
[ 0.851279] mtd: partition "uboot" doesn't end on an erase block -- force read-only
[ 0.860979] 0x0000000f8000-0x000000100000 : "ubootenv"
[ 0.866815] mtd: partition "ubootenv" doesn't start on an erase block boundary -- force read-only
[ 0.877720] 0x000000100000-0x000000110000 : "dtb"
[ 0.884033] 0x000000110000-0x000000500000 : "kernel"
[ 0.890646] 0x000000500000-0x000001000000 : "rootfs"
离线