说明
系统:Android10.0
设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)
前言
在uboot启动,以及生成的所有镜像文件中, 有一个parameter.txt文件, 这个文件通过名字就知道, 参数文件, 肯定是和定制化和启动有关, 学习他很有必有, 本章重点介绍parameter.txt里的内容。
一,简介
ls rockdev/Image-rk3399_roc_pc_plus/
paramete.txt 是瑞星微安卓系统平台对系统参数进行配置的文件,比如定义串口号,固件版本,机器型号,传递给内核参数存放位置,cmdline, 以及系统分区信息。
parameter.txt对应的内容:
FIRMWARE_VER:10.0
MACHINE_MODEL:RK3399
MACHINE_ID:007
MANUFACTURER: RK3399
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3399
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00002000@0x00008000(dtbo),0x00000800@0x0000a000(vbmeta),0x00020000@0x0000a800(boot),0x00030000@0x0002a800(recovery),0x00038000@0x0005a800(backup),0x00002000@0x00092800(security),0x000c0000@0x00094800(cache),0x00008000@0x00154800(metadata),0x00000400@0x0015c800(frp),0x00714000@0x0015cc00(super),0x00100000@0x00870c00(oem),-@0x00970c00(userdata:grow)
二, parameter.txt分析
FIRMWARE_VER:10.0
Android固件版本,打包update.img 用到。升级工具据此识别固件版本。
MACHINE_MODEL: RK3399
机型。
MACHINE_ID: 007
产品 ID, 可以用于识别机器机型。
MANUFACTURER: RK3399
厂商信息。
MAGIC: 0x5041524B
魔幻数, 无法修改
ATAG: 0x00200800
U-boot传递内核的参数存放内存位置,uboot对应一个atag结构体数组。
MACHINE: 3399
内核识别用,不能修改
CHECK_MASK: 0x80
内核识别用,无法修改。
PWR_HLD: 0,0,A,0,1
控制 GPIO0A0 输出高电平
CMDLINE
androidboot.baseband=N/A
通信基带的型号, 如APQ(是AP only的芯片,无modem,用于wifi only的平板), MSM(Mobile Station Modem)
androidboot.selinux=permissive(宽容) /enforcing(严格)/disable(关闭)
Selinux权限模式, init进程会根据这个来决定设置selinux权限模式
androidboot.hardware=rk30board
硬件平台
androidboot.console=ttyFIQ0
串口定义
init=/init
祖先可执行程序路径
MTD分区信息:
mtdparts 的格式如下:
mtdparts=<mtddef>[;<mtddef]
mtdparts 可以由一个或多个 mtddef 组成。每个mtddef定义如下:
<mtddef> := <mtd-id>:<partdef>[,<partdef>]
mtddef 可以由mtd-id 和一个或多个partdef组成,每个partdef定义如下:
<partdef> := <size>[@offset][<name>][ro]
<mtd-id> := unique id used in mapping driver/device
<size> := standard linux memsize OR "-" to denote all remaining space
<name> := (NAME)
因此在使用的时候,需要按照下面的格式来设置:
mtdparts=mtd-id:<size1>@<offset1>(<name1>),<size2>@<offset2>(<name2>)
Rk3399中的分区表信息:
mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00002000@0x00008000(dtbo),0x00000800@0x0000a000(vbmeta),0x00020000@0x0000a800(boot),0x00030000@0x0002a800(recovery),0x00038000@0x0005a800(backup),0x00002000@0x00092800(security),0x000c0000@0x00094800(cache),0x00008000@0x00154800(metadata),0x00000400@0x0015c800(frp),0x00714000@0x0015cc00(super),0x00100000@0x00870c00(oem),-@0x00970c00(userdata:grow)
RK30xx,RK29xx,RK292x 都是用 rk29xxnand 做标识
@符号前是分区的大小, @符号后是分区的起始地址
括号中是分区的名字
单位都是 sector(512Bytes)
比如 uboot 起始地址为 0x2000 sectors (4MB)的位置,大小为 0x2000 sectors(4M)
另外 flash 最大的 block 是 4M(0x2000 sectors),所以每个分区需要 4MB 对齐,即每个分区必须为 4MB 的整数倍。
三,查看TF卡分区
通过windows下SD卡烧录工具烧录统一镜像(sd卡启动), 将TF插入到linux pc系统中就会发发现:
15个分区, 其实就对应于parameter.txt中mtdparts的描述。查看sd卡的容量信息:
cat /proc/partitions (里面的单位是k)
fdisk也是可以查看分区信息:
#/mnt/extend_disk/android_src/RK/rk3399_Android10.0$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 23000000-0000-4C4A-8000-699000005ABB
设备 Start 末尾 扇区 Size 类型
/dev/sdb1 8192 16383 8192 4M 未知
/dev/sdb2 16384 24575 8192 4M 未知
/dev/sdb3 24576 32767 8192 4M 未知
/dev/sdb4 32768 40959 8192 4M 未知
/dev/sdb5 40960 43007 2048 1M 未知
/dev/sdb6 43008 174079 131072 64M 未知
/dev/sdb7 174080 370687 196608 96M 未知
/dev/sdb8 370688 600063 229376 112M 未知
/dev/sdb9 600064 608255 8192 4M 未知
/dev/sdb10 608256 1394687 786432 384M 未知
/dev/sdb11 1394688 1427455 32768 16M 未知
/dev/sdb12 1427456 1428479 1024 512K 未知
/dev/sdb13 1428480 8850431 7421952 3.6G 未知
/dev/sdb14 8850432 9899007 1048576 512M 未知
/dev/sdb15 9899008 62333887 52434880 25G 未知
查看某个特定分区的信息
cat /sys/block/sdb/sdb6/uevent
MAJOR=8
MINOR=22
DEVNAME=sdb6
DEVTYPE=partition
PARTN=6
PARTNAME=boot
总结
通过理解parameter.txt, 是可以了解到系统的整个分区布局, 以及启动参数, 对理解烧录和启动都有很大帮助。