官方论坛资料
https://community.nxp.com/t5/i-MX-Processors/How-to-Flash-Android-9-on-IMX8-with-128G-eMMC/m-p/1176513
本文记录nxp的修改emmc分区大小的笔记,原本的emmc是16G的但是更换为64G的emmc后,内部的储存大小还是显示16G。
一、明确修改处(修改又用,但是有bug)
evk_8mp:/ $ df -h
vail Use% Mounted on
tmpfs 1.6G 804K 1.6G 1% /dev
tmpfs 1.6G 0 1.6G 0% /mnt
/dev/block/dm-4 953M 950M 0 100% /
/dev/block/dm-5 214M 214M 0 100% /product
/dev/block/dm-6 110M 109M 0 100% /system_ext
/dev/block/dm-7 546M 544M 0 100% /vendor
tmpfs 1.6G 0 1.6G 0% /apex
tmpfs 1.6G 252K 1.6G 1% /linkerconfig
/dev/block/dm-9 8.3G 20M 8.2G 1% /data
通过df -h 命令查看分区挂载,如果没有修改分区按照默认的13G的算法,我们的/data的大小大约为8.3g(可用空间,总空间为16G)。
首先找到对应的BoardConfig.mk
{
WORKSPACE}device/nxp/imx8m/evk_8mp/BoardConfig.mk
这里面有这样一段代码,通过阅读对应的手册可以知道,不同的bpt文件可以生成不同的Img,用于emmc启动还是SD卡启动。
对应的资料请看自己的参考手册。
# Support gpt
ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
BOARD_BPT_INPUT_FILES += $(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab_super.bpt
ADDITION_BPT_PARTITION = partition-table-28GB:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab_super.bpt \
partition-table-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab-dual-bootloader_super.bpt \
partition-table-28GB-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab-dual-bootloader_super.bpt
else
ifeq ($(IMX_NO_PRODUCT_PARTITION),true)
BOARD_BPT_INPUT_FILES += $(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab-no-product.bpt
ADDITION_BPT_PARTITION = partition-table-28GB:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab-no-product.bpt \
partition-table-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab-dual-bootloader-no-product.bpt \
partition-table-28GB-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab-dual-bootloader-no-product.bpt
else
BOARD_BPT_INPUT_FILES += $(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab.bpt
ADDITION_BPT_PARTITION = partition-table-28GB:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab.bpt \
partition-table-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-13GB-ab-dual-bootloader.bpt \
partition-table-28GB-dual:$(CONFIG_REPO_PATH)/common/partition/device-partitions-28GB-ab-dual-bootloader.bpt
endif
endif
由于我是默认的emmc启动,选择的是13GB的bpt,在对应的目录下打开bpt文件
"settings": {
"disk_size": "13 GiB", //只有这里不一样
"disk_alignment": 2097152,
"partitions_offset_begin": 8388608
},
你要确定用的那个bpt,不确定的话可以把每个13GB都改为了56,然后编译,烧录。
修改: device-partitions-13GB-ab-no-product.bpt
修改: device-partitions-13GB-ab.bpt
修改: device-partitions-13GB-ab_super.bpt
串口的时候出现了一段部不正常的log
[ 11.213931] random: crng init done
[ 11.217345] random: 7 urandom warning(s) missed due to ratelimiting
[ 11.224639] wait_for_keymaster: Using SoftwareKeymasterDevice from Google for encryption. Security level: SOFTWARE, HAL: android.hardware.keymaster@4.1::It
[ 11.240599] wait_for_keymaster: Keymaster device ready
[ 11.248383] init: Service 'wait_for_keymaster' (pid 250) exited with status 0 waiting took 4.298000 seconds
[ 11.258208] init: Sending signal 9 to service 'wait_for_keymaster' (pid 250) process group...
[ 11.266933] libprocessgroup: Successfully killed process cgroup uid 0 pid 250 in 0ms
[ 11.276120] init: Calling: /system/bin/vdc checkpoint restoreCheckpoint /dev/block/by-name/userdata
[ 11.311001] vdc: Command: checkpoint restoreCheckpoint /dev/block/by-name/userdata Failed: Status(-8, EX_SERVICE_SPECIFIC): '22: No magic'
[ 11.325067] vdc: vdc terminated by exit(25)
[ 11.329327] vdc:
[ 11.331435] init: vdc call failed with error code: 25
[ 11.336574] init: Calling: /system/bin/vdc checkpoint needsCheckpoint
[ 11.363264] vdc: vdc terminated by exit(1)
[ 11.367402] vdc:
[ 11.370454] type=1400 audit(1644397493.516:8): avc: denied {
setattr } for comm="kdevtmpfs" name="dm-8" dev="devtmpfs" ino=237 scontext=u:r:kernel:s0 tcont1
[ 11.389154] device-mapper: table: 252:8: dm_table_destroy: dm_put_device call missing for 179:11
[ 11.414903] type=1400 audit(1644397493.560:9): avc: denied {
getattr } for comm="kdevtmpfs" path="/dm-8" dev="devtmpfs" ino=

本文档记录了在NXP i.MX8平台上,将EMMC从16G升级到64G后遇到的分区大小调整和系统启动故障。通过修改BoardConfig.mk文件和设备分区表解决了分区大小问题,但在启动过程中遇到GPU超时错误。通过对内核日志的分析,发现全盘加密过程可能导致了GPU超时。通过跳过特定函数避免了GPU复位,实现了系统正常启动。尽管这不是最佳解决方案,但适用于当前项目需求。问题总结指出,初次启动的加密过程可能是导致GPU超时的原因,而重启后由于加密过程已完成,因此可以正常启动。
最低0.47元/天 解锁文章
254

被折叠的 条评论
为什么被折叠?



