首页 > 系统相关 >[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区

[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区

时间:2023-01-17 18:31:24浏览次数:41  
标签:Firefly 10min img Image file Ubuntu 固件 分区 rootfs


[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区_rk3568

瑞芯微为了方便开发与产品定制,自己定义了一套固件的分区,这些分区信息存放在parameter.txt文件中,Firefly参考这个文件定义了自己的Ubuntu分区,文件为​parameter-ubuntu.txt​,存放于​Linux_SDK​​device/rockchip/rk356x​目录下;另外在Ubuntu固件打包的时候也会用到一个​package-file​文件,文件名为​rk356x-ubuntu-package-file​,存放于​Linux_SDK​​tools/linux/Linux_Pack_Firmware/rockdev​目录下。下面我带领大家简要分析一下这两个文件!

一、​​parameter-ubuntu.txt​

进入​​device/rockchip/rk356x​​​目录,​​cat parameter-ubuntu.txt​​:

FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00c00000@0x00038000(rootfs),-@0x00c38000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

以下是摘自瑞芯微文档中的概述:

  • ​Rockchip android​​​系统平台使用​​parameter​​文件来配置一些系统参数,比如固件版本,存储器分区信息等。(其实android系统平台与linux系统平台都一样)
  • ​Parameter​​​文件是非常重要的系统配置文件,最好在能了解清楚各个配置功能时再做修改,避免出现​​parameter​​文件配置异常造成系统不能正常工作的问题。
  • ​Parameter​​​文件大小有限制,最大不能超过​​64KB​​。

​parameter-ubuntu.txt​​文件内容的说明:

内容

说明

​FIRMWARE_VER: 1.0​

固件版本,打包​​updata.img​​时会使用到,升级工具会根据这个识别固件版本。

​MACHINE_MODEL: RK3568​

机器型号,打包​​updata.img​​​使用,不同的项目,可以自己修改,用于升级工具显示。在​​recovery​​里面升级固件时可以用于判断固件是否匹配。

​MACHINE_ID: 007​

产品开发​​ID​​​,可以为字符和数字组合,打包​​updata.img​​​使用,不同的项目使用不同的​​ID​​​,可以用于识别机器机型。在​​recovery​​里面升级固件时可以用于判断固件是否匹配。

​MANUFACTURER: RK3568​

厂商信息,打包​​updata.img​​使用,可以自己修改,用于升级工具显示。

​MAGIC: 0x5041524B​

​MAGIC​​​,不能修改,一些新的​​AP​​​使用​​DTS​​,这一项没有用,为了兼容,不要删除或修改。

​ATAG: 0x00200800​

​ATAG​​​,不能修改,一些新的​​AP​​​使用​​DTS​​,这一项没有用,为了兼容,不要删除或修改。

​MACHINE: 0xffffffff​

内核识别用,不能修改,这个定义和内核匹配。

​CHECK_MASK: 0x80​

保留,不能修改。

​TYPE: GPT​

指定该文件​​CMDLINE​​​里面定义的分区用于创建​​GPT​​​使用,不会烧录到​​NVM​​​(​​NAND​​​,​​EMMC​​等)存储器件里面。

​MACHINE: 0xffffffff​

内核识别用,不能修改,这个定义和内核匹配。

​CMDLINE​

(稍后说明)

​uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9​

保留,不能修改。

列表中的这些除了​​CMDLINE​​,其他我们几乎很少需要修改!

​CMDLINE​​属性是我们关注的地方:

CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00c00000@0x00038000(rootfs),-@0x00c38000(userdata:grow)

以下是摘自瑞芯微文档的说明:

  1. 为了兼容性,目前​​RK​​​所有​​AP​​​都是用​​rk29xxnand​​做标识。
  2. 单个分区说明:
    例如:​​​0x00010000@0x00008000(boot)​​​,​​@​​​符号之前的数值是分区大小,​​@​​​符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是​​sector​​​,​​1​​​个​​sector​​​为​​512Bytes​​​。上例中,​​boot​​​分区起始位置为​​0x8000 sectors​​​位置,大小为​​0x10000 sectors(32MB)​​。
  3. 为了性能,每个分区起始地址需要​​32KB(64 sectors)​​​对齐,大小也需要​​32KB​​的整数倍。
  4. 如果使用​​sparse​​​格式的镜像,升级时会擦除数据,为了兼容性更好,对应的分区最好按​​4MB​​​对齐,大小也按​​4MB​​整数倍配置。
  5. 使用​​GPT分​​​区时,​​parameter​​​里面定义的地址,都是真实的逻辑地址(​​LBA​​​),例如​​uboot​​​定义在​​0x4000​​​,那么烧录到​​EMMC​​​和​​NAND​​​里面时,逻辑地址也是​​0x4000​​​。最后一个分区需要指定​​grow​​参数,工具会把剩余的空间都分配给最后一个分区。

[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区_linux_02


下面是​​Ubuntu​​固件各个分区作用的说明:

  • ​uboot​​​分区:烧写​​uboot​​​编译出来的​​uboot.img​​。
  • ​misc​​​分区:烧写​​misc.img​​​。开机检测进入​​recovery​​模式。
  • ​boot​​​ 分区:烧写​​kernel​​​编译出来的​​boot.img​​​包含​​kernel​​和设备树信息。
  • ​recovery​​​分区:烧写​​recovery.img​​。
  • ​backup​​​分区:预留,暂时没有用。后续跟​​android​​​一样作为​​recovery​​​的 ​​backup​​使用。
  • ​rootfs​​​分区:存放​​ubuntu​​文件系统,只读。
  • ​userdata​​​分区:存放​​app​​​临时生成的文件或者是给最终用户使用。可读写,挂载在​​/userdata​​目录下。

[RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区_服务器_03

二、​​rk356x-ubuntu-package-file​

进入​​tools/linux/Linux_Pack_Firmware/rockdev​​​目录,​​cat rk356x-ubuntu-package-file​​:

# NAME          Relative path
#
#HWDEF HWDEF
package-file package-file
bootloader Image/MiniLoaderAll.bin
parameter Image/parameter.txt
uboot Image/uboot.img
misc Image/misc.img
boot Image/boot.img
recovery Image/recovery.img
rootfs Image/rootfs.img
userdata RESERVED
backup RESERVED

不难看出该文件用于指定分区与打包镜像的对应关系!以下是打包​​RK​​​格式的​​Ubuntu​​固件日志:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_20211019$ ./build.sh updateimg
processing option: updateimg
File name is ROC-RK3568-PC-UBUNTU20.04-GPT
Rename the file? [N|y]n
Make update.img
start to make update.img...
Resize rootfs partition size
dumpe2fs 1.44.1 (24-Mar-2018)
Android Firmware Package Tool v1.66
------ PACKAGE ------
Add file: ./package-file
Add file: ./package-file done,offset=0x800,size=0x11a,userspace=0x1
Add file: ./Image/MiniLoaderAll.bin
Add file: ./Image/MiniLoaderAll.bin done,offset=0x1000,size=0x719c0,userspace=0xe4
Add file: ./Image/parameter.txt
Add file: ./Image/parameter.txt done,offset=0x73000,size=0x1d5,userspace=0x1
Add file: ./Image/uboot.img
Add file: ./Image/uboot.img done,offset=0x73800,size=0x400000,userspace=0x800
Add file: ./Image/misc.img
Add file: ./Image/misc.img done,offset=0x473800,size=0xc000,userspace=0x18
Add file: ./Image/boot.img
Add file: ./Image/boot.img done,offset=0x47f800,size=0x1ff4800,userspace=0x3fe9
Add file: ./Image/recovery.img
Add file: ./Image/recovery.img done,offset=0x2474000,size=0x1e23800,userspace=0x3c47
Add file: ./Image/rootfs.img
Add file: ./Image/rootfs.img done,offset=0x4297800,size=0xa744fc00,userspace=0x14e8a0
Add CRC...
Make firmware OK!
------ OK ------
********RKImageMaker ver 1.66********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making ./Image/update.img OK.
Make update image ok!
/home/neutionwei/project/rk356x_linux_release_20211019/rockdev/pack/ROC-RK3568-PC-UBUNTU20.04-GPT-20211203-2103.img
Running build_updateimg succeeded.

三、注意点

Firefly发布的​​Linux_SDK​​​在打包固件的时候,对于​​rootfs​​​分区的大小,会根据​​rootfs​​​的实际文件大小进行动态变化,换句话说,​​parameter-ubuntu.txt​​​文件中的​​0x00c00000@0x00038000(rootfs),-@0x00c38000(userdata:grow)​​​内容的​​rootfs​​​分区大小指定与​​userdata​​分区起始地址会动态发生修改!这是因为不同的文件系统占用分区的大小差异很大,这样操作可避免造成分区浪费!


标签:Firefly,10min,img,Image,file,Ubuntu,固件,分区,rootfs
From: https://blog.51cto.com/u_13726704/6017616

相关文章