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.

[参考译文] AM6548:如何从 SD 卡从 eMMC 引导 Linux

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1371843/am6548-how-to-boot-linux-from-emmc-from-sd-card

器件型号:AM6548

工具与软件:

我想将默认的 Linux 映像从 SD 卡复制到 eMMC。 我目前已经按照本教程复制了 U-Boot:  

https://git.ti.com/cgit/processor-sdk/processor-sdk-u-boot/tree/board/ti/am65x/README?h=processor-sdk-u-boot-2019.01#n213

但是、eMMC 不会引导 Linux。 为了在将来无需 SD 卡的情况下从 eMMC 运行操作系统、我需要做些什么?

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

    您好!

    我已经在您的另一个线程中为此提供了一些参考、

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1364718/processor-sdk-am65x-booting-linux-from-emmc-and-uart

    请问在哪里会产生混淆?

    此致、

    普拉桑特

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

    这些工具使用 DFU。 我正在尝试使用此处的 SD 卡。

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

    您好!

    在这种情况下、请参阅 AM64x 的以下指南。 因为这个概念是相同的、所以它也应该适用于 AM65x。

    https://dev.ti.com/tirex/explore/node?node=A__Acd0nQTgfZUAAJJCnbWdKQ__AM64-ACADEMY__WI1KRXP__LATEST

    简而言之、

    • 对 eMMC 进行分区。
    • 将分区格式化为 EXT4。
    • 挂载分区。
    • 将 Rootfs 文件系统解压到挂载的分区中。
    • 卸载分区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,我尝试遵循指南,它不工作. 您能否在 AM65x 上测试此情况并告诉我您的结果。

    以下是从 MMC 0 (eMMC)引导时 U-Boot 的输出:

    =>引导
    切换到分区#0,确定
    mmc0 (第0部分)是当前器件
    在器件0上找到 SD/MMC
    加载"boot.scr"失败
    无法设置块设备
    ##错误:"main_cpsw0_qsgmii_phyinit"未定义
    加载"/boot/Image "失败
    加载"/boot/dtb/ti/k3-am654-base-board.dtb "失败
    libfdt FDT_check_header ():FDT_ERR_BADMAGIC
    未配置 FDT 存储器地址。 请配置
    通过"FDT addr "添加 FDT 地址

    "命令。
    正在中止!
    加载"/boot/dtb/ti/k3-am654-idk.dtbo "失败
    错误的 Linux ARM64图像魔法!
    切换到分区#0,确定
    mmc0 (第0部分)是当前器件
    正在扫描 MMC 0:1...
    MMC:不存在卡
    mc_init:-123、Time 2002
    无 EFI 系统分区
    无 EFI 系统分区
    无法保留 EFI 变量
    未定义引导顺序
    EFI 启动管理器:无法加载任何映像
    MMC:不存在卡
    mc_init:-123、Time 2002
    正在启动 USB...
    找不到工作中的控制器
    USB 被停止。 请先发出"USB 启动"命令。
    正在启动 USB...
    找不到工作中的控制器
    k3-navss-ringacc ringacc@2b800000:Ring Accelerator rings:286, gp-rings[96,32] sci-dev-id:195
    k3-navss-ringacc ringacc@2b800000: dma-ring-reset-quirk: Enabled
    am65_cpsw_nuss_port 以太网@46000000port@1:k3 CPSW:rflow_id_BASE:2
    以太网@46000000port@1等待 PHY 自动协商完成......... 超时!
    am65_cpsw_nuss_port 以太网@46000000port@1:PHY_startup 失败

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

    AM65产品只能提供有限支持。 该器件系列现在或多或少处于维护模式。 如果这是一个关键项目、并且需要更多支持、我们可以推荐几个您可以考虑用于该项目的 BP。 我们不能在 AM65 EVM 上尝试此功能。  

    此致

    穆库尔  

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

    感谢 Mukul 在这里设定了期望。 我将只添加一个备注、以防它对客户有所帮助。

    问题主要是因为 U-Boot 无法加载内核映像和 DTB、这意味着可能无法正确刷写 eMMC。 因此、在引导 Linux 之前、如果 eMMC 被分区并且映像位于文件系统中的相应位置、那么应该从 U-Boot 对其进行检查、如 AM62x 所示

    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: DOS
    
    Part    Start Sector    Num Sectors     UUID            Type
      1     2048            262144          a87f6bc5-01     0c Boot
      2     264192          1890192         a87f6bc5-02     83
    => ls mmc 0:2 /boot
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 EFI
    <SYM>         29 Image
            19376640 Image-6.1.80-ti-g2e423244f8c0
    <DIR>       4096 dtb
    <SYM>         32 fitImage
             8408718 fitImage-6.1.80-ti-g2e423244f8c0
    => ls mmc 0:2 /boot/dtb
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>       4096 ti
    => ls mmc 0:2 /boot/dtb/ti
    <DIR>       4096 .
    <DIR>       4096 ..
                1990 k3-am625-beagleplay-csi2-ov5640.dtbo
                1990 k3-am625-beagleplay-csi2-tevi-ov5640.dtbo
                2882 k3-am625-beagleplay-lincolntech-lcd185-panel.dtbo
               61115 k3-am625-beagleplay.dtb
                1116 k3-am625-sk-dmtimer-pwm.dtbo
                 872 k3-am625-sk-ecap-capture.dtbo
                1969 k3-am625-sk-lincolntech-lcd185-panel.dtbo
                1116 k3-am625-sk-mcspi-loopback.dtbo
                2462 k3-am625-sk-microtips-mf101hie-panel.dtbo
                1406 k3-am625-sk-microtips-mf103hie-lcd2.dtbo
                1636 k3-am625-sk-pwm.dtbo
                2360 k3-am625-sk-rpi-hdr-ehrpwm.dtbo
               59546 k3-am625-sk.dtb
                1915 k3-am62x-sk-csi2-imx219.dtbo
                1886 k3-am62x-sk-csi2-ov5640.dtbo
                1886 k3-am62x-sk-csi2-tevi-ov5640.dtbo
                2131 k3-am62x-sk-csi2-v3link-fusion.dtbo
                 936 k3-am62x-sk-eqep.dtbo
                1345 k3-am62x-sk-hdmi-audio.dtbo
                 478 k3-am62x-sk-hdmi-disable-fastboot.dtbo
                4232 k3-am62x-sk-lpm-wkup-sources.dtbo
                2192 k3-am62x-sk-mcan.dtbo
    => setenv mmcdev 0
    => setenv bootpart 0:2
    => boot
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    574 bytes read in 14 ms (40 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc0 ...
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    19376640 bytes read in 147 ms (125.7 MiB/s)
    59546 bytes read in 16 ms (3.5 MiB/s)
    Working FDT set to 88000000
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
       Loading Device Tree to 000000008feee000, end 000000008fffffff ... O
    K
    Working FDT set to 8feee000
    
    Starting kernel ...