当前位置:   article > 正文

【正点原子Linux连载】第八章 Android SDK开发(下) 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南_misc blank-misc.img

misc blank-misc.img

1)实验平台:正点原子ATK-DLRK3568开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=731866264428
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban

第八章 Android SDK开发(下)

6.5 oem和userdata
oem.img包含了厂家的APP或数据,该镜像会烧录到开发板的oem分区,系统启动之后会被挂载到根文件系统/oem目录。userdata.img包含了最终用户的APP或数据,该镜像会烧录到开发板的userdata分区,系统启动之后会被挂载到根文件系统/userdata目录。

编译Linux SDK后(需执行“./build.sh firmware”或“./mkfirmware.sh”),会在rockdev/目录下生成oem.img以及userdata.img,使用file命令查看这两个镜像,如下所示:

由此可知,这两个镜像均是ext2格式文件系统镜像(分别由SDK板级配置文件中的RK_USERDATA_FS_TYPE和RK_OEM_FS_TYPE变量决定),可以直接使用mount命令将其挂载到Ubuntu系统进行查看。
  • 1

这两个镜像均是由mkfirmware.sh脚本制作而成(该脚本最终会调用device/rockchip/common/mk-image.sh脚本,详细过程请阅读mk-image.sh脚本内容)。oem.img和userdata.img的大小通常是自动的,无需配置;如有特殊需求,也可在SDK板级配置文件中定义RK_OEM_PARTITION_SIZE或RK_USERDATA_PARTITION_SIZE变量手动指定镜像大小,未定义这些变量则表示由脚本自动确定大小。
6.5 oem和userdata
oem.img包含了厂家的APP或数据,该镜像会烧录到开发板的oem分区,系统启动之后会被挂载到根文件系统/oem目录。userdata.img包含了最终用户的APP或数据,该镜像会烧录到开发板的userdata分区,系统启动之后会被挂载到根文件系统/userdata目录。

编译Linux SDK后(需执行“./build.sh firmware”或“./mkfirmware.sh”),会在rockdev/目录下生成oem.img以及userdata.img,使用file命令查看这两个镜像,如下所示:

由此可知,这两个镜像均是ext2格式文件系统镜像(分别由SDK板级配置文件中的RK_USERDATA_FS_TYPE和RK_OEM_FS_TYPE变量决定),可以直接使用mount命令将其挂载到Ubuntu系统进行查看。
  • 1

这两个镜像均是由mkfirmware.sh脚本制作而成(该脚本最终会调用device/rockchip/common/mk-image.sh脚本,详细过程请阅读mk-image.sh脚本内容)。oem.img和userdata.img的大小通常是自动的,无需配置;如有特殊需求,也可在SDK板级配置文件中定义RK_OEM_PARTITION_SIZE或RK_USERDATA_PARTITION_SIZE变量手动指定镜像大小,未定义这些变量则表示由脚本自动确定大小。

oem.img由device/rockchip/oem/oem_xxx(由板级配置文件中的RK_OEM_DIR决定)目录创建而成;userdata.img由device/rockchip/userdata/userdata_xxx(由板级配置文件中的RK_USERDATA_DIR决定)目录创建而成;如下所示:

由此可见,oem.img镜像的内容就是device/rockchip/oem/oem_normal目录下的内容;userdata.img镜像的内容就是device/rockchip/userdata/userdata_normal目录下的内容。
如果oem_normal或userdata_normal目录下的内容发生了更改,则需重新打包生成oem.img或userdata.img;先删除rockdev目录下的oem.img和userdata.img,然后再次执行./mkfirmware.sh脚本创建即可。
  • 1
  • 2

oem.img由device/rockchip/oem/oem_xxx(由板级配置文件中的RK_OEM_DIR决定)目录创建而成;userdata.img由device/rockchip/userdata/userdata_xxx(由板级配置文件中的RK_USERDATA_DIR决定)目录创建而成;如下所示:

在这里插入图片描述
在这里插入图片描述

由此可见,oem.img镜像的内容就是device/rockchip/oem/oem_normal目录下的内容;userdata.img镜像的内容就是device/rockchip/userdata/userdata_normal目录下的内容。
如果oem_normal或userdata_normal目录下的内容发生了更改,则需重新打包生成oem.img或userdata.img;先删除rockdev目录下的oem.img和userdata.img,然后再次执行./mkfirmware.sh脚本创建即可。
6.6 parameter.txt分区表文件
parameter.txt是RK平台的分区表文件,是一个TXT文本文件。烧写镜像时,并不需要将parameter.txt文件烧录到Flash器件(譬如eMMC),但是会读取它的信息来定义存储器的物理分区,各分区的分区名、分区的起始地址以及分区大小均由parameter.txt文件定义。
SDK板级配置文件中(device/rockchip/rk356x/BoardConfig-rk3568-atk-evb1-ddr4-v10.mk)定义了ATK-DLRK3568 Linux系统所使用的分区表文件,由RK_PARAMETER变量决定,如下所示:

该变量指向的文件便是device/rockchip/rk356x/parameter-buildroot-fit.txt。所以编译Linux SDK后,rockdev/目录下生成的parameter.txt分区表文件其实就是由该文件(parameter-buildroot-fit.txt)copy过去的。
在这里插入图片描述
6.7 misc.img镜像
misc.img镜像会烧录到开发板misc分区。
misc分区的概念来源于Android系统,在Android系统中,misc分区是一个很重要的分区,其主要用于Android系统和BootLoader之间的通信,misc分区中包含了BCB(BootLoader Control Block)数据块,BCB是Android控制系统启动流程而设计的一种和BootLoader交互的机制。
BCB数据结构如下图所示:
在这里插入图片描述

command:启动命令,目前支持以下三个:
在这里插入图片描述

recovery:为进入recovery模式的附带命令,开头为”recovery\n”,后面可以带多个参数,以”–”开头,以”\n”结尾,例如” recovery\n–wipe_ab\n–wipe_package_size=345\n–reason=wipePackage\n”:
在这里插入图片描述
在这里插入图片描述

Linux系统中常用来作为系统升级时或者恢复出厂设置时使用。U-Boot阶段会读取misc分区中的BCB数据,根据BCB数据中的command命令内容决定是进入正常系统还是recovery模式(command为boot-recovery,则进入recovery模式;command为空,则进入正常系统)。
设备进入recovery模式,会读取misc分区中recovery部分的内容,从而执行不同的动作,或升级分区固件,或擦除用户分区数据,或其它操作等等。

misc.img镜像都是预编译好的,RK提供了多个misc.img镜像供用户选择,这些镜像存放在device/rockchip/rockimg/目录下,如下所示:
  • 1

在这里插入图片描述

这些misc.img镜像中,常用的是blank-misc.img和wipe_all-misc.img,另外几个不常用。它们之间的区别就在于BCB数据块中command以及recovery标识不同,我们可以使用winhex或ultraEdit等工具,以二进制形式打开misc.img镜像文件,找到BCB数据块所在位置(偏移16KB位置,0x4000),如下所示:
  • 1

在这里插入图片描述

图1 pcba_small_misc.img镜像

在这里插入图片描述

图2 wipe_all-misc.img镜像
在这里插入图片描述

图3 blank-misc.img镜像
关于这些标识,上文已有介绍(对比BCB数据结构)。

当前使用的misc.img镜像由SDK板级配置文件中(device/rockchip/rk356x/BoardConfig-rk3568-atk-evb1-ddr4-v10.mk)的RK_MISC变量决定,如下所示:
在这里插入图片描述

该变量指定的文件便是rockimg目录下的blank-misc.img。所以编译Linux SDK后,rockdev/目录下生成的misc.img镜像其实就是由该文件(blank-misc.img)copy过去的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/879416?site
推荐阅读
相关标签
  

闽ICP备14008679号