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

RK为了方便开发与产品定制,自己定义了一套固件的分区,这些分区信息存放在parameter.txt文件中,Firefly参考这个文件定义了自己的Ubuntu分区,文件为parameter-ubuntu.txt,存放于Linux_SDKdevice/rockchip/rk356x目录下;另外在Ubuntu固件打包的时候也会用到一个package-file文件,文件名为rk356x-ubuntu-package-file,存放于Linux_SDKtools/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: 0x5041524BMAGIC,不能修改,一些新的AP使用DTS,这一项没有用,为了兼容,不要删除或修改。
ATAG: 0x00200800ATAG,不能修改,一些新的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.
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分区起始地址会动态发生修改!这是因为不同的文件系统占用分区的大小差异很大,这样操作可避免造成分区浪费!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/213058.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模电笔记。。。。

模电 2.8 蜂鸣器 按照蜂鸣器驱动方式分为有源蜂鸣器和无源蜂鸣器 有源的有自己的震荡电路,无源的要写代码控制。 里面有个线圈,相当于电感,储能,通直隔交。 蜂鸣器的参数:额定电压,工作电压&#xff0…

外贸辅助工具定制的价格范围,别被坑了哟!

随着全球化的不断发展,外贸已成为企业不可或缺的一部分。然而,在外贸过程中,企业往往会遇到各种问题,如语言障碍、文化差异、法规繁琐等,为了解决这些问题,许多企业选择定制外贸辅助工具。 但是&#xff0…

服务器数据恢复—ocfs2文件系统被格式化为其他文件系统如何恢复数据?

服务器故障: 由于工作人员的误操作,将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4文件系统每隔几百兆就会写入文件系统的原始信息,原Ocfs2文件系统数据会遭受一定程度…

一个简单的postman设置断言,为何会难住一个工作5年的测试?

postman设置断言 作为一款接口测试工 具,postman需要对发送请求后返回的结果是否正确做验证,在postman中通过 tests页签做请求的验证,也称为断言。 postman设置断言的流程 1、在tests页签截取要对比的实际响应信息(响应头、响应…

ArkTS快速入门

一、概述 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以…

DOS 批处理 (一)

DOS 批处理 1. 批处理是什么?2. DOS和MS-DOS3. 各种操作系统shell的区别Shell 介绍图形用户界面(GUI)shell命令行界面(CLI)的 shell命令区别 1. 批处理是什么? 批处理(Batch),也称为批处理脚本…

VisualStudio反汇编功能使用

VisualStudio反汇编功能使用 使用方法 到达断点时:CtrlK(松开)G(后按)唤出反汇编界面,就可以看到当前代码对应的汇编语言了 注意:进入反汇编窗口后可以F10单次调试一条汇编指令 其他&#…

机器学习第15天:GBDT模型

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 ​​ 文章目录 GBDT模型介绍 Boosting 残差 GBDT的缺点 python代码实现 代码 模型参数解释 结语 GBDT模型介绍 GBDT(Gradient Boos…

【深度学习】AlexNet网络实现猫狗分类

【深度学习】AlexNet网络实现猫狗分类 AlexNet简介 AlexNet是一种卷积神经网络(Convolutional Neural Network,CNN)模型,它在2012年的ImageNet图像分类挑战赛中取得了重大突破,引发了深度学习在计算机视觉领域的热潮…

前端学习系列之CSS

目录 CSS 简介 发展史 优势 基本语法 引用方式 内部样式 行内样式 外部样式 选择器 id选择器 class选择器 标签选择器 子代选择器 后代选择器 相邻兄弟选择器 后续兄弟选择器 交集选择器 并集选择器 通配符选择器 伪类选择器 属性选择器 CSS基本属性 优…

基于ssm家庭理财系统源码和论文

基于ssm家庭理财系统源码和论文743 idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 环境: jdk8 tomcat8.5 开发技术 ssm 摘要 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff…

机器人刚性碰撞任务的阻抗控制性能

问题描述 对于机器人刚性碰撞任务,阻抗控制可以有效地提高机器人的适应性和稳定性。 在刚性碰撞任务中,机器人在接触外部物体时需要快速适应并调整自身的运动轨迹和速度,以实现精确的操控和稳定的交互。阻抗控制可以通过调整机器人的阻抗参…

cuda lib 线程安全的要义

1, 概述 cuda lib 线程安全的几个多线程的情景: 单卡多线程; 多卡多线程-每卡单线程; 多卡多线程-每卡多线程; 需要考虑的问题: 每个 cublasHandle_t 只能有一个stream么? 每个cusolverHandle_t 只能有一…

AR + 通信,虚实结合让工作协同从线上到「现场」

在数字经济无所不在的当下,千行百业都与数智化办公接轨并因其实现转型升级。关注【融云 RongCloud】,了解协同办公平台更多干货。 升级的背后,是利用技术把工作用更自然的方式连接起来,让整个工作流协同更顺、体验更好。 而其中…

应用架构——集群、分布式、微服务的概念及异同

一、什么是集群? 集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题。 集群主要具有以下特征: …

042:el-table表格表头自定义高度(亲测好用)

第042个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

python3.5安装教程及环境配置,python3.7.2安装与配置

大家好,小编来为大家解答以下问题,python3.5安装教程及环境配置,python3.7.2安装与配置,现在让我们一起来看看吧! python 从爬虫开始(一) Python 简介 首先简介一下Python和爬虫的关系与概念&am…

【iOS】网络请求GET与POST

【iOS】网络请求GET与POST 前沿一. GET与POST的共同点二. GET与POST的不同点三. 实现方式总结 前沿 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符&#xff0…

护眼灯有效果吗?考研必备护眼台灯推荐

据统计,中国人口的近视率约为10%至20%。 国家卫健委发布的中国首份眼健康白皮书显示,我国小学生近视率为47.2%,初中生近视率为75.8%,大学生近视率超过90%。据世界卫生组织统计数据显示,目前全球约有14亿近视人口&#…

【C语言】深入理解C语言中的数学运算和类型转换

文章目录 引言取负运算的奥秘源码探索分析与解读 浮点数运算的精细差异源码分析精度损失与隐式类型转换 精度和除零运算探究float类型和double类型的精度各是多少(即十进制有效位的位数)?在你的机器上,“负数开方”是如何处理的&a…