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.
工具与软件:
我们在 AM62x 平台上工作的处理器 SDK 09.02.01.10。
当尝试刷写 u-boot.img.raw 映像时、我们收到错误消息"DFU state (10)= dfuERROR、status (14)=出错、但器件不知道是什么"
我们的 eMMC 定制电路板为4GB (类型:THGBMTG5D1LBAIL)。
请提供建议。
$ sudo dfu-util -a tiboot3.bin.raw -D tiboot3-am62x-hs-fs-evm.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 state(7) = dfuMANIFEST, status(0) = No error condition is present DFU state(2) = dfuIDLE, status(0) = No error condition is present Done! $ sudo dfu-util -a tispl.bin.raw -D tispl.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 #3 ... 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% 1182907 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! $ sudo dfu-util -a u-boot.img.raw -D u-boot.img 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 #4 ... 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 [ ] 0% 0 bytes failed! DFU state(10) = dfuERROR, status(14) = Something went wrong, but the device does not know what it was
UART 上的错误消息如下所示。
MMC:块编号0x1428超过最大值(0x1000)
MMC 操作失败#MMC:块编号0x1428超过最大值(0x1000)
=> dfu 0 mmc 0 generic_phy_get_bulk : no phys property ###############DOWNLOAD ... OK Ctrl+C to exit ... ##########################################################DOWNLOAD ... OK Ctrl+C to exit ... MMC: block number 0x1428 exceeds max(0x1000) MMC operation failed#MMC: block number 0x1428 exceeds max(0x1000)
上传整个 UART 引导日志。
U-Boot 2023.04-00001-gf5b119738d (Jan 23 2024 - 11:51:46 +0800) SoC: AM62X SR1.0 HS-FS Model: Texas Instruments AM625 SK EEPROM not available at 80, trying to read at 81 Reading on-board EEPROM at 0x51 failed -121 DRAM: 2 GiB Core: 71 devices, 31 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial Out: serial Err: serial EEPROM not available at 80, trying to read at 81 Reading on-board EEPROM at 0x51 failed -121 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 MMC: no card present SD/MMC found on device 1 MMC: no card present ** Bad device specification mmc 1 ** Couldn't find partition mmc 1 Can't set block device MMC: no card present ** Bad device specification mmc 1 ** Couldn't find partition mmc 1 Can't set block device MMC: no card present ** Bad device specification mmc 1 ** ## Error: "main_cpsw0_qsgmii_phyinit" not defined MMC: no card present ** Bad device specification mmc 1 ** Couldn't find partition mmc 1:2 Can't set block device MMC: no card present ** Bad device specification mmc 1 ** Couldn't find partition mmc 1:2 Can't set block device libfdt fdt_check_header(): FDT_ERR_BADMAGIC No FDT memory address configured. Please configure the FDT address via "fdt addr <address>" command. Aborting! Bad Linux ARM64 Image magic! switch to partitions #0, OK mmc0(part 0) is current device ** No partition table - mmc 0 ** Couldn't find partition mmc 0:1 MMC: no card present starting USB... Bus usb@31100000: generic_phy_get_bulk : no phys property Register 1000840 NbrPorts 1 Starting the controller USB XHCI 1.10 scanning bus usb@31100000 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: unknown device ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error missing environment variable: pxeuuid Retrieving file: pxelinux.cfg/01-88-0c-e0-75-23-ec ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/00000000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/0000000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/000000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/00000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/0000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/000 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/00 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/0 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/default-arm-k3-am62x ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/default-arm-k3 ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/default-arm ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Retrieving file: pxelinux.cfg/default ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error Config file not found ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error => setenv uuid_gpt_disk b8577803-d581-48c8-a7d2-d88cfd7cca1c => setenv uuid_gpt_rootfs 8eba550e-29bb-4951-986f-98b7f4dce0eb => gpt write mmc 0 ${partitions} Writing GPT: success! => setenv dfu_alt_info ${dfu_alt_info_emmc} => dfu 0 mmc 0 generic_phy_get_bulk : no phys property ###############DOWNLOAD ... OK Ctrl+C to exit ... ##########################################################DOWNLOAD ... OK Ctrl+C to exit ... MMC: block number 0x1428 exceeds max(0x1000) MMC operation failed#
我尝试 在 u-boot 中设置不同的 dfu_alt_info_emmc、 从 tiboot3.bin.raw 和 tispl.bin.raw 向 u-boot.img.raw 释放空间 、然后我可以看到 u-boot.img.raw 能够具有40%的下载过程。 因此、该问题似乎与 eMMC 或引导加载程序映像的总大小有关。 但是、我们的引导加载程序映像能够下载到 AM62X SKEVM PROC142A 板中、因此引导加载程序映像的大小应适合我们的自定义板。
这是原始 dfu_alt_info_eMMC:
rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x400 mmcpart 1; tispl.bin.raw raw 0x400 0x1000 mmcpart 1; u-boot.img.raw raw 0x1400 0x2000 mmcpart 1; u-env.raw raw 0x3400 0x100 mmcpart 1; sysfw.itb.raw raw 0x3600 0x800 mmcpart 1
然后、我修改 dfu_alt_info_eMMC:
rawemmc raw 0 0x800000 mmcpart 1; rootfs part 0 1; tiboot3.bin.raw raw 0x0 0x300 mmcpart 1; tispl.bin.raw raw 0x300 0x0a00 mmcpart 1; u-boot.img.raw raw 0x0d00 0x0800 mmcpart 1; u-env.raw raw 0x1500 0x100 mmcpart 1; sysfw.itb.raw raw 0x1600 0x800 mmcpart 1
并执行 dfu-util 下载 u-boot.img、我可以看到下载过程的40%。
$ sudo dfu-util -a u-boot.img.raw -D u-boot.img 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 #4 ... 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 [========== ] 40% 397312 bytes failed! DFU state(10) = dfuERROR, status(14) = Something went wrong, but the device does not know what it was
下面是我们定制电路板上的 mmcinfo、 引导容量为2MiB ENH。
您知道这是 引导区域0和1的总大小吗? 还是单个引导区域?
如果是单个引导区域、我可以将 tiboot3.bin 和 tispl.bin 放在引导区域0中、将 u-boot.img 放在另一个引导区域中吗?
=> mmcinfo Device: mmc@fa10000 Manufacturer ID: 11 OEM: 0 Name: 004GA1 Bus Speed: 200000000 Mode: HS200 (200MHz) Rd Block Len: 512 MMC version 5.0 High Capacity: Yes Capacity: 3.7 GiB Bus Width: 8-bit Erase Group Size: 512 KiB HC WP Group Size: 4 MiB User Capacity: 3.7 GiB WRREL Boot Capacity: 2 MiB ENH RPMB Capacity: 512 KiB ENH Boot area 0 is not write protected Boot area 1 is not write protected
嗨、专家
我们有任何更新吗?
谢谢你。
Gibbs
嗨、Gibbs、
我要把这个分配给另一位专家。 请允许我们随时讨论这个问题。
此致、
Vaibhav
嗨、Gibbs、
此致、
开会。