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.

[参考译文] AM625-Q1:可以从 eMMC 用户分区引导 u-boot 吗?

Guru**** 2482165 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1452406/am625-q1-could-we-boot-u-boot-from-emmc-user-partition

器件型号:AM625-Q1

工具与软件:

您好、亲爱的专家。

客户在 eMMC 引导时遇到引导问题。

我们已经知道"根本原因" 是客户的 u-boot.img 大于2MB、但其 eMMC 芯片(类型:THGBMTG5D1LBAIL)引导分区"仅允许"最大大小为2MB。

我们发现一些 eMMC 器件在引导分区中具有大小限制、对吧?

除了减小引导加载程序大小、我们还有其他权变措施吗?

我们认为、唯一解决的方法是尝试从 eMMC"用户分区"引导、是可行的吗?

如何解决该问题?

谢谢你。

Gibbs  

该线程从这里扩展、

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1451376/processor-sdk-am62x-dfu-util-error-while-loading-u-boot-img/5566595#5566595

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

    您好!

    [quote userid="533255" url="~/support/processors-group/processors/f/processors-forum/1452406/am625-q1-could-we-boot-u-boot-from-emmc-user-partition 但他们的 eMMC 芯片(类型:THGBMTG5D1LBAIL)引导分区"只"允许最大大小为2MB。

    这对于默认 U-Boot 映像而言是不够的。 如果大小为4MB、则可以遵循以下主题:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1354107/processor-sdk-am64x-booting-from-emmc

    [quote userid="533255" url="~/support/processors-group/processors/f/processors-forum/1452406/am625-q1-could-we-boot-u-boot-from-emmc-user-partition 我们认为唯一解决的方法是尝试从 eMMC"用户分区"引导、是不是可以?

    这是可能的。 ROM 支持 eMMC UDA FS 引导模式。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1443900/am6422-explanation-about-emmc-boot-partition/5539147#5539147

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1395749/am625-bootmode-pins-for-emmc-uda-fs

    此致、

    Prashant

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

     Prashant、您好!

    使用 DFU 引导至 u-boot 后、如何进一步完成 eMMC UDA FS 或 eMMC UDA 原始 流程?

    我们的定制电路板没有 SD 卡设计、因此我想我仍然可以使用 dfu-util 工具将图像推送到用户分区。  但是、我收到了 libusb_error_io 失败。  下面是我的步骤。

    1.按如下方式创建分区:

    $ setenv partitions "uuid_disk=${uuid_gpt_disk};name=boot,start=0,size=32M,uuid=${uuid_gpt_boot};name=rootfs,start=32M,size=-,uuid=${uuid_gpt_rootfs}"
    $ gpt write mmc 0 ${partitions}
    
    $ mmc part
    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: EFI
    
    Part    Start LBA       End LBA         Name
            Attributes
            Type GUID
            Partition GUID
      1     0x00000022      0x00010021      "boot"
            attrs:  0x0000000000000000
            type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
            guid:   4129e871-936b-40c8-afa6-ca62e11055c9
      2     0x00010000      0x01da3fde      "rootfs"
            attrs:  0x0000000000000000
            type:   ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
            guid:   8eba550e-29bb-4951-986f-98b7f4dce0eb

    2.设置 dfu_alt_info

    $ setenv dfu_alt_info_mmc "boot part 0 1; rootfs part 0 2; tiboot3.bin fat 0 1; tispl.bin fat 0 1; u-boot.img fat 0 1; uEnv.txt fat 0 1; sysfw.itb fat 0 1"
    $ setenv dfu_alt_info ${dfu_alt_info_mmc}

    3.通过 dfu-util 刷写图像

    $ sudo dfu-util -a tiboot3.bin -D tiboot3.bin
    dfu-util 0.11-dev
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2021 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to sourceforge.net/.../
    
    dfu-util: Warning: Invalid DFU suffix signature
    dfu-util: A valid DFU suffix will be required in a future dfu-util release
    Opening DFU capable USB device...
    Device ID 0451:6165
    Device DFU version 0110
    Claiming USB DFU Interface...
    Setting Alternate Interface #2 ...
    Determining device status...
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    DFU mode device DFU version 0110
    Device returned transfer size 4096
    Copying data from PC to DFU device
    Download	[=========================] 100%       295502 bytes
    Download done.
    dfu-util: unable to read DFU status after completion (LIBUSB_ERROR_IO)
    ----------------------------------------------------------------------
    
    => dfu 0 mmc 0
    generic_phy_get_bulk : no phys property
    ##dfu: fs_set_blk_dev error!
    Deferred dfu_flush() failed!dfu - Device Firmware Upgrade
    
    Usage:
    dfu <USB_controller> [<interface> <dev>] [list]
      - device firmware upgrade via <USB_controller>
        on device <dev>, attached to interface
        <interface>
        [list] - list available alt settings
    ---------------------------------------------------------------------

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

    您好!

    3. 通过 dfu-util
    刷写映像

    这不起作用、因为在刷写任何映像之前需要对分区进行格式化。 U-Boot 不支持格式化、因此您必须引导到 Linux 来格式化分区。

    在任何情况下、这些步骤都不起作用、因为 ROM 不支持从 GPT 分区引导。 它仅支持从 MBR 分区表管理的可引导 FAT 分区进行引导。 同样、您必须使用 Linux、因为 U-Boot 不支持创建 MBR 分区表。

    ---------------

    对于 AM64x、最简单的方法是仅将 WIC 映像刷写到 eMMC UDA 分区、如下所示:

    ❯ pwd
    /home/p-shivhare/ti/psdk/am64x/09.02.01.10/filesystem/am64xx-evm
    ❯ xz -d tisdk-base-image-am64xx-evm.wic.xz
    ❯ dfu-util -a wic -D tisdk-base-image-am64xx-evm.wic
    dfu-util 0.11
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2021 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to sourceforge.net/.../
    
    Warning: Invalid DFU suffix signature
    A valid DFU suffix will be required in a future dfu-util release
    Opening DFU capable USB device...
    Device ID 0451:6165
    Device DFU version 0110
    Claiming USB DFU Interface...
    Setting Alternate Interface #0 ...
    Determining device status...
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    DFU mode device DFU version 0110
    Device returned transfer size 4096
    Copying data from PC to DFU device
    Download        [=========================] 100%   1103964160 bytes
    Download done.
    DFU state(7) = dfuMANIFEST, status(0) = No error condition is present
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    Done!

    => setenv dfu_alt_info "wic raw 0x0 0x10000000 mmcpart 0"
    => dfu 0 mmc 0
    ####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################DOWNLOAD ... OK
    Ctrl+C to exit ...
    => mmc dev 0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    => mmc part
    
    Partition Map for MMC device 0  --   Partition Type: DOS
    
    Part    Start Sector    Num Sectors     UUID            Type
      1     2048            262144          7560d2c3-01     0c Boot
      2     264192          1891988         7560d2c3-02     83
    => ls mmc 0:1
                EFI/
     19376640   Image
       610125   tiboot3-am64x-gp-evm.bin
       612714   tiboot3-am64x_sr2-hs-evm.bin
       612714   tiboot3-am64x_sr2-hs-fs-evm.bin
       612714   tiboot3.bin
      1018291   tispl.bin
      1335119   u-boot.img
          574   uEnv.txt
    
    8 file(s), 1 dir(s)
    
    => ls mmc 0:2
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <DIR>       4096 bin
    <DIR>       4096 boot
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 home
    <DIR>       4096 lib
    <SYM>         19 linuxrc
    <DIR>       4096 media
    <DIR>       4096 mnt
    <DIR>       4096 proc
    <DIR>       4096 run
    <DIR>       4096 sbin
    <DIR>       4096 srv
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    <DIR>       4096 var
    =>

    完成这些步骤后、简单地将引导模式更改为 eMMC UDA FS 应该至少能够引导 R5 SPL。 那么、对于您的自定义 EVM、您可以使用您的自定义构建映像替换默认映像。

    此致、

    Prashant