This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3359:申请将 U-Boot、内核和 RAM FS 加载到 AM335x 定制板上的 eMMC 的指导

Guru**** 2431030 points
Other Parts Discussed in Thread: AM3359

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1540708/am3359-request-for-guidance-on-loading-u-boot-kernel-and-ram-fs-to-emmc-on-am335x-custom-board

器件型号:AM3359


工具/软件:

尊敬的 TI 支持团队:

 我正在开发基于 AM335x 的定制电路板、在从基于 TFTP 的引导过渡到持久 eMMC 引导解决方案方面需要获得支持。 以下是我的当前状态和具体问题:

当前设置和进度
串行负载(X/Y 调制解调器):

已通过串行成功加载 u-boot-spl.bin (SPL) 和 u-boot.img。

电路板通过 UART 启动至 U-Boot 提示符。

TFTP 引导(临时):

通过 TFTP 将以下文件传输到 RAM:

MLO (SPL)→0x80000000

zImage(具有基于嵌入式 RAM 的 rootfs 的内核)→0x82000000

器件树 blob (am335x-custom.dtb)→0x88000000

已使用以下命令验证引导:


=> setenv bootargs console=ttyO0115200n8 root=/dev/ram0 rw
=> bootz 0x82000000 - 0x88000000
结果:系统在 RAM 中成功引导。

目标:持久 eMMC 引导
现在、我需要将这些映像写入 eMMC、以便电路板在下电上电后自主启动。 我的电路板具有一个 4GB eMMC (MTFC4GACAJCN-4M IT)、无 SD 卡插槽。

关键问题:
分区:

eMMC 的推荐分区布局是什么?

原始 SPL/MLO 区域

用于内核/dtb 的 FAT 分区

(可选)用于 rootfs 的 EXT4(但我现在使用 RAM FS)。

写入图像:

如何正确使用 MMC 写入闪存:

MLO 传输到引导扇区。

zImage 和 dtb 到 FAT 分区。

我尝试过的示例命令(但需要验证):


=> MMC 设备 1
=> MMC 将 0x80000000 0x100 0x300 # MLO 写入引导区域 (384KB)
=> fatwrite mmc 1:1 0x82000000 zImage ${filesize}#失败:“设备损坏“
环境存储:

saveenv 失败、带有**坏设备 MMC 0 **。 如何配置环境以使用 eMMC?

替代方法:

如果 FAT 命令不可用、我是否可以对所有图像使用 RAW MMC 写入? 什么偏移/大小?

请求的指导
请提供:

U-Boot 命令的分步序列可执行以下操作:

分区 eMMC (GPT/MBR)。

使用 MMC 写入或其他方法来写入 MLO、zImage 和 DTB。

为 eMMC 引导配置 bootcmd。

澄清:

eMMC 引导分区编号 (boot0/boot1/user)。

处理 zImage 中的嵌入式 RAM FS(无需单独的 rootfs 分区)。

fat 命令不可用时的调试提示。

板详细信息
处理器:AM3359

eMMC:4GB (MTFC4GACAJCN-4M IT)

U-Boot 版本:2018.01

当前引导流程:串行→TFTP→RAM(工作)。

感谢您的时间和专业知识。 我附加了 U-Boot 环境和分区布局以供参考。 如果需要更多详细信息、请告诉我。

此致、

Raj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Raj:

    请查看 AM335x TRM 第 26.1.8.5 节“MMC/SD 卡“。

    总结、

    AM335x eMMC 引导来自 UDA、而不是引导分区。 UDA 应为 MBR 分区格式、不支持 GPT。

    如果您熟悉 AM335x 上的 SD 卡引导、eMMC UDA 的分区/格式化方式与 SD 卡引导相同:UDA 有 2 个分区、第一个分区采用 FAT 格式、用于主机 MLO 和 u-boot.img、第二个分区可以是 ext4 格式、用于主机 Linux rootfs。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bin Liu:

    感谢您的答复和支持。

    我们正在使用不包含 SD 卡接口的定制 AM3359 EVM 板。 相反、我们目前使用串行和 TFTP 引导方法进行初始加载和测试。

     当前进度:
    使用 TFTP 和 serail、我们已成功地将以下文件传输到 RAM 中:

    u-boot-spl.bin

    u-boot.img

    zImage(包含基于 RAM 的根文件系统(即我们没有单独的文件系统))

    设备树 Blob (.dtb)

    系统从 RAM 成功引导、我们已经验证了带有嵌入式 initramfs 的 zImage 在这种临时设置过程中运行良好。

     目标:
    我们现在希望从 eMMC 存储器永久引导、即在每次断电和上电循环后、系统都应从 eMMC 完全引导、而无需串行或 TFTP

    请求指导:
    我们希望您在以下方面提供详细的指导:

    将文件从 RAM 复制到 eMMC 的步骤
    一旦我们通过 TFTP 将文件(zImage、dtb 等)加载到 RAM 中、如何使用 U-Boot 命令将它们复制到 eMMC 中的正确位置?

    U-Boot 环境设置
    是否需要在 eMMC 中创建用于引导的 uEnv.txt 等引导脚本? 如果是:

    该文件究竟应该放置在哪里?

    使用 RAM 文件系统引导 zImage 的内容应该是什么?

    处理 saveenv 失败
    尝试使用 saveenv 时、U-Boot 会返回如下错误:
    ***警告 — 错误的 CRC、使用默认环境
    无法将环境保存到 MMC ...
    我们怀疑这可能是由于环境存储区域中的配置错误造成的。

    您能帮助我们确定在哪里以及如何正确配置 CONFIG_ENV_IS_IN_MMC 或 U-Boot 中的环境偏移量以确保环境变量正确保存到 eMMC 吗?

    预期分区布局
    建议的 eMMC 分区布局对于:

    U-Boot

    内核映像(我的 zImage 本身具有基于 ram 的文件系统)

    DTB

    可选的引导脚本 (uEnv.txt)

    自动从 eMMC 引导
    一旦将文件复制到 eMMC、为使引导过程自动使用 eMMC (mmc1) 作为引导源、需要在 U-Boot 中配置哪些环境变量?

    ️ μ s 环境信息:


    处理器:AM3359

    引导模式:TFTP/串行(初始)

    目标:完全从 eMMC 引导

    SDK 版本:TI Processor SDK Linux AM335x 05.00.0.15

    U-Boot 版本:2018.01(TI 版本)

    我们期待您提供有关将映像复制到 eMMC 和配置 U-Boot 以实现稳定 eMMC 引导过程的正确过程的技术意见。

    再次感谢您的支持。

    此致、
    Raj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Raj:

    我已经介绍了 eMMC UDA 分区和格式信息、您可以通过所有不同的方法对 eMMC 进行分区/格式化、并将 U-boot 二进制文件和根文件系统复制到 eMMC。

    如果仍然不清楚这一点、我建议您获取 BeagleBone Black 板、并从 SD 卡进行引导、然后了解 sdcard 如何托管 U-Boot 和 Linux。 eMMC UDA 的工作方式与启动 sdcard 大致相同。