Airoha SoC 常见的闪存布局

目前从市面上的产品看来,使用了 Econet/Airoha SoC 的产品大多分区布局混乱不堪,找不到一个统一的规律,导致用户在刷机时往往一个设备一个教程,非常不方便。

原厂布局

对于 ARM v7/AARCH64 架构的 Airoha SoC,原厂提供的布局如下:

  • ARM v7:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&partitions {
partition@0 {
label = "bootloader";
reg = <0x00000000 0x00080000>; /* 512KB */
};
partition@80000 {
label = "tclinux";
reg = <0x00080000 0x02800000>; /* 40MB */
};
partition@2880000 {
label = "tclinux_slave";
reg = <0x02880000 0x02800000>; /* 40MB */
};
partition@5080000 {
label = "rootfs_data";
reg = <0x05080000 0x00800000>; /* 512KB */
};
};
  • AARCH64:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
&partitions {
partition@0 {
label = "bootloader";
reg = <0x00000000 0x00000000 0x00000000 0x00080000>; /* 512KB */
};
partition@80000 {
label = "tclinux";
reg = <0x00000000 0x00080000 0x00000000 0x03200000>; /* 40MB */
};
partition@3280000 {
label = "tclinux_slave";
reg = <0x00000000 0x03280000 0x00000000 0x03200000>; /* 40MB */
};
partition@6480000 {
label = "rootfs_data";
reg = <0x00000000 0x06480000 0x00000000 0x00800000>; /* 512KB */
};
partition@dd00000 {
label = "art";
reg = <0x00000000 0xffffffff 0x00000000 0x00380000>; /* 3584KB */
};
};

这只是一个参考布局,实际在早期版本的SDK中,还有另外的布局,以及reserves分区等等,原厂布局相对来说比较混乱,缺乏统一的规范。

另外由于监管要求,国内发行的产品中,往往会在闪存中预留一部分空间用于存放一些插件的数据以及其运行空间,但是这些软件往往没有统一规范,由厂商自行定义,导致不同厂商的产品在闪存布局上差异很大。

UBI布局

UBI layout 由社区提出,经过多次讨论和修改,最终形成了一个相对统一的布局规范。

对于 ARM v7/AARCH64 架构的 Airoha SoC,UBI layout 的布局如下:

  • ARM v7: 1MB(u-boot), -(ubi)

  • AARCH64: 128KB(bl2), -(ubi)

运行在 ARM v7 的 EN7523/AN7552(AN7563),没有 bl2 分区,EN7523需要打包 bl1+bl2+bl31+uboot 组成的 bootloader.bin 刷入到 u-boot 分区,AN7552(AN7563)则不需要bl1。

运行在 AARCH64 的 AN7581/AN7583,其兼容 ARM v7 架构的 bootloader 使用,但是同时也支持 bl2 分区引导 ubi 内的 bl31-uboot。

这样,我们能得到一个相对统一的闪存布局规范,方便用户在刷机时使用统一的教程和工具。