6. 分区修改

6.1. 分区表配置

CV184x SDK把分区表中的各分区添加为 build/Kconfig.partitions 配置项,不同EVB defconfig档案记录了对应Flash 的各分区默认配置值。

执行defconfig命令选定EVB时,先解析 build/Kconfig.partitions 文件,再加载defconfig档案中的默认配置,最后生成xml文件形式的分区表,保存为 build/partitions.xml。 以cv1842hp_wevb_0014a_spinor为例:

$ source build/envsetup_soc.sh

$ defconfig cv1842hp_wevb_0014a_spinor

$ file build/boards/cv184x/cv1842hp_wevb_0014a_spinor/partition/partition_spinor.xml
build/boards/cv184x/cv1842hp_wevb_0014a_spinor/partition/partition_spinor.xml: symbolic link to ../../../../partitions.xml

$ cat build/partitions.xml
<?xml version="1.0" ?>
<physical_partition type="spinor">
<!--This is an auto-generated file. DO NOT EDIT manually.-->
<partition label="fip" size_in_kb="2048" readonly="false" file="fip_spl.bin" mountpoint="" type=""/>
<partition label="2nd" size_in_kb="1024" readonly="false" file="yoc.bin" mountpoint="" type=""/>
<partition label="BOOT" size_in_kb="3072" readonly="false" file="boot.spinor" mountpoint="" type=""/>
<partition label="MISC" size_in_kb="128" readonly="false" file="logo.jpg" mountpoint="" type=""/>
<partition label="ENV" size_in_kb="64" readonly="false" file="" mountpoint="" type=""/>
<partition label="ENV_BAK" size_in_kb="64" readonly="false" file="" mountpoint="" type=""/>
<partition label="ROOTFS" size_in_kb="4352" readonly="false" file="rootfs.spinor" mountpoint="" type=""/>
<partition label="DATA" size_in_kb="1024" readonly="false" file="data.spinor" mountpoint="/mnt/data" type="jffs2"/>
</physical_partition>

6.2. 分区表解读

分区表的标签含义如下:

  1. physical_partitiOn type:flash 种类。

  2. partition label: 分区名称。

  3. size_in_kb:分区大小(以KB为单位) 。

  4. file:所指向的image file名称。

  5. type:(在partition label栏位中) 文件系统格式。

  6. mountpoint:分区挂载路径。

CV184x SDK 会生成以下的image file,每个档案代表不同的分区, 分列如下:

  • FIP : Bootloader/U-Boot 分区

  • CV184X CA3 采用FSBL+UBOOT 架构,最后打包后也复用(FIP)檔名,方便后续使用。

  • 2nd(双系统) : Yun on Processor (YOC) 所在分区

  • BOOT : Partition for Linux Kernel 分区

  • MISC : Boot Logo 分区

  • ROOTFS : root file system 分区

  • SYSTEM: CVITEK libraries所在分区

  • DATA : 使用这资料分区

注:2nd分区为双系统特有分区,仅在双系统环境下存在

6.3. 修改分区

  • 修改分区表

在选定EVB后,支持通过menuconfig命令以图形界面的方式修改 build/partitions.xml 分区表。

  1. 需要修改已有分区的大小,可以直接修改对应配置项的值,分区大小对齐参阅前面章节;

  2. 当需要增减分区时,先修改分区的数量,然后,取消勾选不需要的分区,或者设置新的分区,如下图所示,修改完后保存设定,退出菜单界面就会自动更新到 build/partitions.xml 分区表:

  3. 当最后一个分区的大小删除不填写时,生成分区表时会自动计算剩余大小作为最后一个分区的大小。

_images/image19.png

例如,上图保存修改后,更新如下:

$ cat build/partitions.xml
<?xml version="1.0" ?>
<physical_partition type="spinor">
<!--This is an auto-generated file. DO NOT EDIT manually.-->
<partition label="fip" size_in_kb="2048" readonly="false" file="fip_spl.bin" mountpoint="" type=""/>
<partition label="2nd" size_in_kb="1024" readonly="false" file="yoc.bin" mountpoint="" type=""/>
<partition label="BOOT" size_in_kb="3072" readonly="false" file="boot.spinor" mountpoint="" type=""/>
<partition label="MISC" size_in_kb="128" readonly="false" file="logo.jpg" mountpoint="" type=""/>
<partition label="ENV" size_in_kb="64" readonly="false" file="" mountpoint="" type=""/>
<partition label="ENV_BAK" size_in_kb="64" readonly="false" file="" mountpoint="" type=""/>
<partition label="ROOTFS" size_in_kb="4352" readonly="false" file="rootfs.spinor" mountpoint="" type=""/>
<partition label="DATA" size_in_kb="1024" readonly="false" file="data.spinor" mountpoint="/mnt/data" type="jffs2"/>
<partition label="DATA" size_in_kb="128" readonly="false" file="temp.spinor" mountpoint="" type=""/>
</physical_partition>
  • 指定分区表

需要更改为指定分区表,只需要修改EVB 配置目录中的分区表软连接 build/boards/cv184x/cv1842hp_wevb_0014a_spinor/partition/partition_spinor.xml