rv1126 扩展rootfs分区以及增加分区

rv1126 扩展rootfs分区以及增加分区 2023-11-21 15:00:00 2100

基于Ebaina的SDK版本:RV1126_RV1109_LINUX_SDK_V2.2.5.1_20231011

1.分区配置文件

瑞芯微RV1126分区配置是放到了一个文件里面,修改分区配置通过修改该配置文件即可,该文件的路径位于“device/rockchip/rv1126_rv1109”目录,至于使用了该目录下的哪个分区配置文件,要根据每个人的工程配置来看。我的RV1126模组是512M nandflash的,所以我自己新增了一个配置文件,名为“parameter-fit-nand-512M.txt”,里面内容如下:

FIRMWARE_VER: 8.1
MACHINE_MODEL: RV1126
MACHINE_ID: 007
MANUFACTURER: RV1126
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00000800@0x00001000(vnvm),0x00002800@0x00001800(uboot),0x00004000@0x00004000(boot),0x0006A800@0x00008000(rootfs),-@0x00072800(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

我们重点关注的是 “CMDLINE: mtdparts=”后面的内容,该内容定义了分区的大小以及起始地址,比如vnvm,@符号前面的是该分区的大小,也就是0x800;@符号后面的是该分区的起始地址。另外,下一个分区的起始地址等于上一个分区的起始地址加上上一个分区的大小,比如uboot分区的起始地址0x1800就等于vnvm分区起始地址0x1000加上vnvm分区的大小0x800。说到分区大小,这里提一句,所谓的分区大小,单位并不是字节,而是sector,大小是512字节。

2.扩展rootfs分区大小

比如说,实际的开发过程中,我们发现rootfs分区增加了几个第三方模块之后,空间不够了,这个时候,我们就需要扩展rootfs分区的大小,假如我们需要扩展64MB,结合上一小段说的,我们就需要将rootfs的分区大小扩展0x20000,也就是rootfs分区大小由0x0006A800改为0x0008A800,同时rootfs后面的分区起始地址也得跟着改,改的值根据rootfs分区的起始地址和分区大小来算即可,应该改为0x00092800,改后内容如下:

FIRMWARE_VER: 8.1
MACHINE_MODEL: RV1126
MACHINE_ID: 007
MANUFACTURER: RV1126
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00000800@0x00001000(vnvm),0x00002800@0x00001800(uboot),0x00004000@0x00004000(boot),0x0008A800@0x00008000(rootfs),-@0x00092800(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

3.增加分区

实际的开发过程中,有可能出现需要新分区的情况,并且我基于的这个SDK,recovery分区是被干掉的,而我需要用它来进行OTA升级,所以必须要增加分区,根据我的需求,就需要增加misc分区和recovery分区,增加的方式首先也是修改上述文件,只要按照本分区起始地址等于上一个分区的起始地址加上分区大小的原则就可以,我增加了misc和recovery分区之后的配置文件如下:

FIRMWARE_VER: 8.1
MACHINE_MODEL: RV1126
MACHINE_ID: 007
MANUFACTURER: RV1126
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00000800@0x00001000(vnvm),0x00002800@0x00001800(uboot),0x00002000@0x00004000(misc),0x00004000@0x00006000(boot),0x00010000@0x0000A000(recovery),0x0008A800@0x0001A000(rootfs),-@0x000A4800(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

在rootfs分区前面,增加了两个分区,各个分区的大小和起始地址都没有问题,但是实际运行的时候却出错了,找不到rootfs了。为啥呢?

这里面就需要注意一点,跟扩展分区不一样,增加分区,而且是rootfs分区前增加,不光需要修改配置文件,还需要修改内核设备树文件,因为内核设备树的开头有开机启动rootfs的命令,而该命令是要指定mtd序号的,mtd的序号就是上述配置文件中mtdparts=后面的内容决定的,从vnvm开始,mtd序号为0,依次递增。所以最终,rootfs前面增加分区,我们还需要修改dts文件,我的dts文件为“rv1109-38-v10-spi-nand.dts”,将:

bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs snd_aloop.index=7";

改为:

bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs snd_aloop.index=7";

这样就可以成功增加分区,并正常启动了。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 3 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区