[Firefly-Linux] RK3568 Ubuntu固件分区详解(2)

| 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使用,不会烧录到NVMNANDEMMC等)存储器件里面。 |
| 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)@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是sector1sector512Bytes。上例中,boot分区起始位置为0x8000 sectors位置,大小为0x10000 sectors(32MB)
  3. 为了性能,每个分区起始地址需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。
  4. 如果使用sparse格式的镜像,升级时会擦除数据,为了兼容性更好,对应的分区最好按4MB对齐,大小也按4MB整数倍配置。
  5. 使用GPT分区时,parameter里面定义的地址,都是真实的逻辑地址(LBA),例如uboot定义在0x4000,那么烧录到EMMCNAND里面时,逻辑地址也是0x4000。最后一个分区需要指定grow参数,工具会把剩余的空间都分配给最后一个分区。


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

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

二、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.
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/dfe0e36e7d0157b522125471dbe5cf57.png)

![img](https://img-blog.csdnimg.cn/img_convert/12f08068a5c5ad7572e5b7df1265f4ec.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/2d2ff389c4b8ecc5fd438582c5607537.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/8e959926449705b4ae6c96659bcabf63.png)

![img](https://img-blog.csdnimg.cn/img_convert/f27bd8e2bcda98608d74a0bd70f13d39.png)

![img](https://img-blog.csdnimg.cn/img_convert/c8bf4a64eea3e41de2566e172530dd59.png)

![](https://img-blog.csdnimg.cn/img_convert/cd35ac36c84f2582d6ea8feb284a064c.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值