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`参数,工具会把剩余的空间都分配给最后一个分区。
![](https://img-blog.csdnimg.cn/b6b641535e8d4127b18858088c70b6cc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATmV1dGlvbndlaQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
下面是`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`目录下。
![](https://img-blog.csdnimg.cn/aa8e81b86e6c4af1bf3c72e7b6fec06b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATmV1dGlvbndlaQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
### 二、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
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!