nxp修改emmc分区大小(BUG和对应的修改)

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


官方论坛资料

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=
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值