背景
客户需求:创建可读写分区bkdate,用于数据备份,ota升级、恢复出厂设备bkdata分区数据保留
1.分区表参数文件修改 device/rockchip/rk3288/parameter.txt
新增128M bkdata分区:
0x00040000@0x006BC000(bkdata),-@0x006FC000(userdata)
FIRMWARE_VER:7.1
MACHINE_MODEL:rk3288
MACHINE_ID:007
MANUFACTURER:RK3288
MAGIC: 0x5041524B
ATAG: 0x60000800
MACHINE: 3288
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x0000C000@0x00010000(kernel),0x00010000@0x0001C000(boot),0x00010000@0x0002C000(recovery),0x00038000@0x0003C000(backup),0x00040000@0x00074000(cache),0x00500000@0x000B4000(system),0x00008000@0x005B4000(metadata),0x00080000@0x005BC000(vendor0),0x00080000@0x0063C000(vendor1),0x00040000@0x006BC000(bkdata),-@0x006FC000(userdata)
在内核log信息中可以看到
[ 1.025640] bkdata: 0x0d7800000 -- 0x0df800000 (128 MB)
[ 1.025259] mmcblk1rpmb: mmc1:0001 8GTF4R partition 3 512 KiB
[ 1.025534] uboot: 0x000400000 -- 0x000800000 (4 MB)
[ 1.025544] trust: 0x000800000 -- 0x000c00000 (4 MB)
[ 1.025551] misc: 0x000c00000 -- 0x001000000 (4 MB)
[ 1.025574] resource: 0x001000000 -- 0x002000000 (16 MB)
[ 1.025581] kernel: 0x002000000 -- 0x003800000 (24 MB)
[ 1.025588] boot: 0x003800000 -- 0x005800000 (32 MB)
[ 1.025594] recovery: 0x005800000 -- 0x007800000 (32 MB)
[ 1.025601] backup: 0x007800000 -- 0x00e800000 (112 MB)
[ 1.025607] cache: 0x00e800000 -- 0x016800000 (128 MB)
[ 1.025614] system: 0x016800000 -- 0x0b6800000 (2560 MB)
[ 1.025620] metadata: 0x0b6800000 -- 0x0b7800000 (16 MB)
[ 1.025627] vendor0: 0x0b7800000 -- 0x0c7800000 (256 MB)
[ 1.025633] vendor1: 0x0c7800000 -- 0x0d7800000 (256 MB)
[ 1.025640] bkdata: 0x0d7800000 -- 0x0df800000 (128 MB)
[ 1.025646] userdata: 0x0df800000 -- 0x1d1c00000 (3876 MB)
[ 1.025674] mmcblk1: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15
分区定义说明:
1、为了兼容性,目前RK所有AP都是用rk29xxnand做标识。
2、单个分区说明:
例如:0x00002000@0x00008000(boot),@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是sector,1个sector为512Bytes.上例中,boot分区起始位置为0x8000 sectors位置,大小为0x2000 sectors(4MB).
3、为了性能,每个分区起始地址需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。
4、如果使用sparse格式的镜像,升级时会擦除数据,为了兼容性更好,对应的分区最好按4MB对齐,大小也按4MB整数倍配置。
2.fstab文件中添加相关配置
2.1 在device/rockchip/rk3288/fstab.rk30board.bootmode.emm