您好,
我正在使用 SolidRun i.MX8MP 板。我有默认图像(core-image-inimal-imx8mpsolidrun.wic.zst)同时闪存到 SD 卡和 eMMC。我想让板从 eMMC 用户分区 1 (mmcblk2p1) 启动,但它从 mmcblk2boot0 启动。
说明
从 SD 卡启动:
mmc 开发人员
切换到分区 #0,OK
mmc1 是当前设备
SD 卡能从用户分区正确启动。
内核加载 imx8mp-hummingpulse.dtb
我在 U-Boot 中所做的自定义更改(例如板消息、DTB 选择)会反映出来。
从eMMC启动:
mmc 开发人员
切换到分区 #0,OK
mmc2(第 0 部分)是当前设备
U-Boot 从 boot0 加载。
加载的是默认 DTB imx8mp-cubox.dtb 而不是 imx8mp-hummingpulse.dtb。
我在 U-Boot 中所做的更改根本没有反映出来。
eMMC 信息:
mmc info
启动区域 0:4 MiB
启动区域 1:4 MiB
用户区域:29.1 G
iB 启动区域未受写保护
我试过单独设置 U-Boot 变量但它不起作用
setenv mmcdev 2
setenv mmcpart 1
Uboot 仍从 boot0 加载 - 忽略用户分区的更改。
我在启动期间使用 UART 控制台停止 U-Boot 并打印 boot_targets;输出是 (mmc1 mmc2 usb pxe dhcp)。我使用 setenv 将其更改为 mmc2 mmc1 usb pxe dhcp,并使用 saveenv 将其保存。重新刷新新镜像后,我再次检查 boot_targets,结果仍然显示 mmc2 mmc1 usb pxe dhcp,所以即使刷新了新镜像,我所做的更改仍然存在。
这证实 ROM 总是执行 boot0,而不是用户分区。
有什么办法可以从 eMMC 分区 (mmcblk2p1) 启动吗?
谢谢!
您可以阅读此链接。
https://community.nxp.com/t5/forums/replypage/board-id/imx-processors/message-id/243934
你对 eMMC 缺乏了解。
您可以阅读此链接。
你对 eMMC 缺乏了解。
很抱歉回复晚了,前段时间春节放假,现在回到办公室了。我不太明白这个问题。由于 mmcblk2p1 是 FAT32 分区,用于放置 dtb 文件和内核映像,您的意思是可以将 uboot 放入该分区而无需构建引导加载程序?对我来说,这是全新的启动过程,你能否确认并分享更多关于启动方法的细节,即使在 SD 启动情况下也是如此。
B.R