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.

[参考译文] AM3358:将 u-boot 刷写到空 eMMC

Guru**** 2800725 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1056182/am3358-flashing-u-boot-to-the-empty-emmc

器件型号:AM3358
主题中讨论的其他器件:UNIFLASH

您好!

´m 正在使用 AM335x 制作定制板、但尚未准备就绪、我正在使用 BeagleBone Black 对制造进行刷写过程。 定制板将具有不带 SDCard 的 eMMC。
我已经准备好了所有 Yocto 映像、并根据 software-dl.ti.com/.../Flash_Tools.html 尝试使用 CCS Uniflash v3.4.1进行刷写。 在此过程中、有一个用于 Linux 闪存的链接、但该链接不存在。

在 BBB 中、我擦除了 eMMC:
-MMC DEV 1 0
MMC 擦除01024
为 BBB 供电时、控制台提供"CCCCCCC"。

在 Windows 中、我安装了驱动程序 Ethernet/RNDIS Gadget。 我在接口和 Uniflash 中配置了 IP。 我运行 Uniflash、但不会发生任何情况。

我出了什么问题?
BBB 是否能够在 RAM 中运行 u-boot 以进行闪存、对吗?
是否有描述刷写过程(包括 u-boot)的文档?
´s Windows 和 Linux 的最佳刷写方式是什么?

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

    您好!

    AM335x 上的 U-Boot 可以执行一些闪存任务、但这取决于闪存的位置。 但建议在 Linux 中刷写 eMMC、而不是在 U-Boot 中执行此操作、因为在 Linux 中对 eMMC 进行分区更容易。

    但是、需要考虑的最重要的一点是知道用于闪存的引导模式。 Uniflash 支持通过 CPSW 以太网或 USB 小工具模式以太网刷写 AM335x。 当您在控制台上看到'CCCCCCC'时、BBB 正在 UART 引导模式下引导、它与 EtherNet/RNDIS 无关。

    如需了解相关信息、请参阅以下文档、其中显示了如何使用 Linux 主机在 AM335x 上刷写 eMMC。

    https://software-dl.ti.com/processor-sdk-linux/esd/docs/07_03_00_005/linux/How_to_Guides/Host/Program_the_eMMC_on_Beaglebone_Black.html

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

    您好!

    我按照文档操作、从 SDK 07.03.00.005加载了 SPL、但 USB 未重启:

    CCCCCCCCCC
    U-Boot SPL 2020.01-g3c9ebdb87d (2021年7月20日- 19:10:35 +0000)
    正在尝试从 USB eth 引导

    警告:ETH_cpsw 使用 ROM 中的 MAC 地址
    eth0:ETH_cpsw
    警告:USB_ether 使用来自 ROM 的 MAC 地址
    ,eth1:USB_ether
    使用 musb-hdrc、out ep1out in ep1in status ep2in
    Mac de:ad:be:ef:00:01
    主机 MAC DE:AD:be:ef:00:00
    RNDIS 就绪
    MUSB - hdrc:外设复位 IRQ 丢失!
    ETH_cpsw 等待 PHY 自动协商完成................................................................................................ 超时!
    使用 BOOTP 引导时出现问题
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###

    Windows/Linux 上未显示 USB 连接。

    有什么想法吗?

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

    您好!

    我将´s 超时固定为20、它正常工作。

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

    您好!

    很高兴问题得到解决。 感谢您的更新。

    您是否想提供有关 USB 超时设置位置的详细信息?

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

    您好!

    我更改了文件 drivers/USB/gadget/ether.c:95

    发件人:

         #define USB_CONNECT_TIMEOUT (3 * CONFIG_SYS_Hz)

    至:
         #define USB_CONNECT_TIMEOUT (20 * CONFIG_SYS_Hz)

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

    感谢您分享解决方案。 这会很有帮助。

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

    您好!

    我按照文档 https://software-dl.ti.com/processor-sdk-linux/esd/docs/07_03_00_005/linux/How_to_Guides/Host/Program_the_eMMC_on_Beaglebone_Black.html 进行操作 

    但它n´t 启动:

    U-Boot 2020.01-g3102049-脏(2021年11月30日- 06:15:52 -0300)

    CPU:AM335X-GP 修订版2.1
    型号:TI AM335x BeagleBone Black
    DRAM:512 MiB
    WDT:开始服务(60s 超时)
    NAND:0 MIB
    MMC:OMAP SD/MMC:0、OMAP SD/MMC:1.
    正在从 FAT 加载环境... 未设置。 验证第一个电子保险丝 MAC
    网络:
    警告:USB_Ether MAC 地址不匹配:
    ROM 中的地址为:de:ad:be:ef:00:01
    环境中的地址为34:14:B5:66:37:47
    eth0:USB_ether
    按任意键停止自动引导:0
    => setenv 自动载入否
    => DHCP
    使用 musb-hdrc、out ep1out in ep1in status ep2in
    Mac de:ad:be:ef:00:01
    主机 MAC DE:AD:be:ef:00:00
    RNDIS 就绪
    更改超时...
    MUSB - hdrc:外设复位 IRQ 丢失!
    高速配置#2:2mA、以太网小工具、使用 RNDIS
    USB RNDIS 网络启动!
    BOOTP 广播1
    BOOTP 广播2.
    BOOTP 广播3.
    BOOTP 广播4.
    BOOTP 广播5.
    BOOTP 广播6.
    *** Offer/ACK 中未处理的 DHCP 选项:7.
    *** Offer/ACK 中未处理的 DHCP 选项:7.
    DHCP 客户端绑定到地址192.168.100.11 (6831ms)
    => tftp 0x81000000 zImage

    警告:USB_Ether MAC 地址不匹配:
    ROM 中的地址为:de:ad:be:ef:00:01
    环境中的地址为34:14:B5:66:37:47
    使用 musb-hdrc、out ep1out in ep1in status ep2in
    Mac de:ad:be:ef:00:01
    主机 MAC DE:AD:be:ef:00:00
    RNDIS 就绪
    更改超时...
    MUSB - hdrc:外设复位 IRQ 丢失!
    高速配置#2:2mA、以太网小工具、使用 RNDIS
    USB RNDIS 网络启动!
    使用 USB_ether 设备
    来自服务器192.168.100.1的 TFTP;我们的 IP 地址为192.168.100.11
    文件名'zImage'。
    加载地址:0x81000000
    正在加载:############################################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ########################
    1014.6 KiB/s
    完成
    传输的字节= 7041536 (6b7200十六进制)
    => tftp 0x82000000 AM335x-bonebblack.dtb

    警告:USB_Ether MAC 地址不匹配:
    ROM 中的地址为:de:ad:be:ef:00:01
    环境中的地址为34:14:B5:66:37:47
    使用 musb-hdrc、out ep1out in ep1in status ep2in
    Mac de:ad:be:ef:00:01
    主机 MAC DE:AD:be:ef:00:00
    RNDIS 就绪
    更改超时...
    MUSB - hdrc:外设复位 IRQ 丢失!
    高速配置#2:2mA、以太网小工具、使用 RNDIS
    USB RNDIS 网络启动!
    使用 USB_ether 设备
    来自服务器192.168.100.1的 TFTP;我们的 IP 地址为192.168.100.11
    文件名"AM335x-bonebine.dtb"。
    加载地址:0x82000000
    正在加载:####
    11.7 KiB/s
    完成
    传输的字节= 61337 (ef99十六进制)
    => bootz 0x81000000 0x82000000
    ##正在从82000000处的 FIT 图像加载 ramdisk ...
    错误的 ramdisk 映像格式!
    RAMDISK 映像损坏或无效

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

    您好!

    [引用 userid="502830" URL"~/support/processors-group/processors/f/processors-forum/1056182/am3358-flashing-u-boot-to-the-empty-emmc/3913376 #3913376"]=> bootz 0x81000000 0x82000000[/quot]

    我认为这个命令应该是这样的

    bootz <addr1> - <addr2>

    zImage 和 DTB 的地址之间有一个"-"。

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

    您好!

    我认为文档 https://software-dl.ti.com/processor-sdk-linux/esd/docs/07_03_00_005/linux/How_to_Guides/Host/Program_the_eMMC_on_Beaglebone_Black.html 不完整。

    我必须生成一个 initramfs 来引导:

    CD /opt/ti-processor-sdk-linux-am335x-evm-07.03.00.005/filesystem/arago-tiny-image-am335x-evm
    查找。 | cpio -H newc -o >./initramfs.cpio
    CD .
    CAT initramfs.cpio | gzip > initramfs.gz
    sudo aptt install u-boot-tools
    mkimage -a arm -O Linux -T ramdisk -C none -a 0x80800000 -n "RootFilesSystem"-d initramfs.gz initramfs
    cp initramfs /media/sf_Share

    在 u-boot 上:

    dhcp;setenv bootargs 'console=ttyO0、115200n8 root=/dev/ram0 rw ip=dhcp';tftpboot 0x82000000 zImage;tftpboot 0x88080000 initramfs;tftpboot 0x88000000 AM335x-bonebryblack.dtb;bootz 0x82000000 0x88080000 0x88000000 0x88000000

    n´t 一个问题:内核启动后、我无法启动 g_ether。  我根据文档配置了 USB 支持,但我注意到在“以太网小工具”选项的 menuconfig 中,只有“M”选项(模块),而不是“*”(内置)。

    是否有办法在内核 RamDisk 中启动以太网小工具?

    我尝试运行 g_ether。ko、但在这个 zImage 中不支持加载模块。

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

    您好!

    为了能够将 g_ether 小工具驱动程序构建到内核映像中,应首先在内核配置中将更多内核模块更改为'*'。 有关详细信息、请参阅下面随附的文档。

    e2e.ti.com/.../MUSB-Linux-Driver-Configuration-_2D00_-Texas-Instruments-Wiki.pdf

    本文档提到应针对内置 USB 小工具驱动程序禁用 CPPI41DMA、我认为该信息已过时、不再适用于 内核 v5.4 (但我不是100%肯定的、 我想我几年前就使用过这个、我不记得我必须禁用 CPPI41DMA)、但请尝试一下。

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

    您好!

    我在.config 中进行了手动更改、它起作用了。 ´s VID/PID、因为它打开了另一个网络接口。 我还必须在 initramfs 中添加 mkfs.ext4和 mkfs.vfat。

    现在、我有了 Linux 控制台和 USB 以太网、好了。

    我´s 刷写 MLO、u-boot.img 和 rootfs.tar.gz、但在复位后无法启动。

    DD if=/dev/zero of=/dev/mmcblk1 bs=4K count=1
    fdisk /dev/mmcblk1
    (笑声)
    同步
    同步
    (笑声)
    磁盘/dev/mmcblk1:3648 MB、3825205248字节、7471104扇区
    116736缸、4个缸盖、16个扇区/履带
    单位:1 * 512 = 512字节的扇区

    设备引导 StartCHS EndCHS StartLBA EndLBA 扇区大小 ID 类型
    /dev/mmcblk1p1 0、1、320、0、16 20495 20480 10.0M 83 Linux
    /dev/mmcblk1p2 320、1、123、16 20496 7471103 7450608 3637M 83 Linux

    mkfs.vfat /dev/mmcblk1p1
    mkfs.ext4 /dev/mmcblk1p2

    我在 P1中复制了 MLO 和 u-boot.img 并在 P2中提取 rootfs.tar.gz。 复位后、它不´s 引导。

    尝试后:

    DD if=/dev/zero of=/dev/mmcblk1 bs=4K count=1
    if=MLO of=/dev/mmcblk1 count=2 seek=1 conv=notrunc bs=128k
    if=u-boot.img of=/dev/mmcblk1 count=4 seek=1 conv=notrunc bs=384k

    我在 FIRST_Sector = 8192中创建了 P1。 复位、它´s 不引导。

    ´s 出错了吗?

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

    是否已将可引导标记设置为第一个分区?

    此步骤在上面链接的 Flashing BBB 文档 I 中的 flasher.sh 脚本中执行、如下所示。 也可以在 fdisk 命令中设置它。

    parted -s $DRIVE set 1 boot on