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.

[参考译文] J784S4XEVM:J784S4 EVM–无法从 eMMC 引导 (SDK 11.02)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1641161/j784s4xevm-j784s4-evm-unable-to-boot-from-emmc-sdk-11-02

器件型号: J784S4XEVM

您好、

我将 SDK 11.02 用于定制操作系统构建。 我成功构建了默认 ADAS 映像、将其刷写到 SD 卡中、并能够引导 EVM 而不会出现任何问题。

我现在尝试刷写 eMMC 并从 eMMC 接口启动电路板。 我按照以下 TI 文档中提供的步骤操作:

DIP 开关配置

切换标签

  • SW11:12345678

  • SW7:12345678

SD 卡引导

  • SW11:10000010

  • SW7:00000000

eMMC 引导

  • SW11:10000000

  • SW7:01000000


使用的 U-Boot 命令

=> setenv mmcdev 0
=> printenv bootpart
bootpart=1:2
=> setenv bootpart 0:2
=> boot

eMMC 分区内容

引导分区 (MMC 0:1)

Image
tiboot3-j784s4-gp-evm.bin
tiboot3-j784s4-hs-evm.bin
tiboot3-j784s4-hs-fs-evm.bin
tiboot3.bin
tispl.bin
u-boot.img
uEnv.txt
EFI/
emmc/

根文件系统 (MMC 0:2)

bin/  boot/  dev/  etc/  home/  lib/  media/  mnt/  opt/
proc/ root/  run/  sbin/ srv/   sys/  tmp/    usr/  var/

检测到 MMC 设备

mmc@4f80000: 0 (eMMC)
mmc@4fb0000: 1 (SD)

问题描述

尽管将引导和根文件系统分区刷写到 eMMC 并配置 U-Boot 以使用 mmcdev=0、但电路板无法从 eMMC 成功引导。 系统似乎启动、但在进入登录提示符之前卡住。

我还附加了完整的 eMMC 引导日志以供参考。

请您帮助回顾以下内容:

  • 用于 eMMC 引导的 DIP 开关配置是否正确

  • 是否为 eMMC 引导正确设置了 U-Boot 环境变量

  • 为成功 eMMC 引导而缺少的任何步骤或所需的配置更改

    emmc_boot_dmesg_logs_apr_28.txt 

谢谢、
Adnan

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

    尊敬的 Adnan:

    您能否分享您在默认 Linux 内核代码和设备树的基础上所做的更改?

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    我没有对内核或设备树进行任何修改。 我按原样使用 SDK 构建了默认 ADAS 映像。

    以下是我使用的命令


    Docker pull ghcr.io/texasInstruments/ubuntu-distro:latest

    主机上的#
    导出 WORK_DIR=/home/dstpl/disk2/xxx
    Docker run --privileged -it -v ${WORK_DIR}:/home/tisdk -v /dev:/dev-v /media/:/media/-w /home/tisdk ghcr.io/texasInstruments/ubuntu-distro:latest

    tisdk@9b297a000db9:~$ pwd.
    /home/tisdk

    #提供必要的权限在/home/tisdk 中写入用户 tisdk
    tisdk@9b297a000db9:~$ sudo chown -R tisdk /home/tisdk

    #克隆 oe-layersetup
    tisdk@9b297a000db9:~$ git clone git.ti.com/.../oe-layersetup.git tisdk
    tisdk@9b297a000db9:~$ cd tisdk
    tisdk@9b297a000db9:~$./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-scarthgap-11.02.08.02-config.txt
    tisdk@9b297a000db9:~$ cd build
    tisdk@9b297a000db9:~$。 conf/setenv

    echo 'arago_brand =“adas“>> conf/local.conf
    MACHINE=:“j784s4-evm“ bitbake -k tisdk-adas-image

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

    尊敬的 Gokul:

    在尝试使用向 eMMC 器件写入零 /dev/zero时、我观察到当操作达到大约 50%完成时电路板意外复位。

    使用的命令如下:

    umount /dev/mmcblk0*
    dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=30310 status=progress

    我想了解出现这种行为的原因。

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

    尊敬的 Shaik:

    我会仔细研究一下、然后回复您。

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    经过调查后、复位问题追溯到通过开关配置启用看门狗。 修改开关设置以禁用看门狗后、到目前为止尚未观察到随机复位。(sw16.4)

    此致、
    Adnan

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

    尊敬的 Shaik:

    您能否确保引导加载程序二进制文件、rootfs、内核映像和刷写到 eMMC 的器件树与用于 SD 卡的二进制文件完全相同。

    这是因为、在两个不同的引导介质上使用相同的二进制文件时、不会在登录提示符处导致卡滞问题。

    此致

    Gokul Praveen  

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

    尊敬的 Gokul:

    如何确保这一点并将所有必需的文件安全地复制到 EMMC?

    谢谢  

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

    尊敬的 Shaik:

    您能否分享将文件刷新到 EMMC 的步骤?

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    以下是我的命令序列:e2e.ti.com/.../5224.boot_5F00_log.txt

    dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=30310 status=progress
    sync
    
    fdisk /dev/mmcblk0
    o
    n
    p
    1
    
    +400M
    a
    t
    c
    n
    p
    2
    
    
    w
    
    mkfs.vfat -F 32 -n boot /dev/mmcblk0p1
    mkfs.ext4 -L root /dev/mmcblk0p2
    
    mkdir -p /mnt/sdboot /mnt/sdroot /mnt/emmcboot /mnt/emmcroot
    
    mount /dev/mmcblk1p1 /mnt/sdboot
    mount /dev/mmcblk1p2 /mnt/sdroot
    
    mount /dev/mmcblk0p1 /mnt/emmcboot
    mount /dev/mmcblk0p2 /mnt/emmcroot
    
    cp -r /mnt/sdboot/* /mnt/emmcboot/
    cp -r -a /mnt/sdroot/* /mnt/emmcroot/
    sync
    
    echo 0 > /sys/block/mmcblk0boot0/force_ro
    
    dd if=/mnt/sdboot/tiboot3.bin of=/dev/mmcblk0boot0 seek=0 bs=512
    dd if=/mnt/sdboot/tispl.bin   of=/dev/mmcblk0boot0 seek=1024 bs=512
    dd if=/mnt/sdboot/u-boot.img  of=/dev/mmcblk0boot0 seek=5120 bs=512
    
    sync
    
    
    restart and set below params in uboot 
    mmc partconf 0 1 1 1
    mmc bootbus 0 2 0 0
    mmc rst-function 0 1
    
    power off-remove sd-card change switch configuration to emmc boot
    stop at uboot and set 
    => setenv mmcdev 0
    => setenv bootpart 0
    => boot
    
    

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

    移除 SD 卡并尝试从 eMMC 引导后、卡住等待根器件。

    [ 7.801569] sdhci-am654 4fb0000.mmc:开机失败
    [ 7.837101] mmc1:使用 ADMA 64 位的 4fb0000.mmc [4fb0000.MMC]上的 SDHCI 控制器
    [ 7.844749]正在等待根设备 PARTUID=076c4a2a-02...

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

    嗨、Shaik。

    您能保持插入的 SD 卡并尝试从 eMMC 引导吗? 如果这样做有效、则从 SD 卡中获取 rootfs。

    这是因为,我相信目前的 rootfs,是从 SD 卡本身,这就是为什么它是失败,因为没有插入 SD 卡.

    在 UBoot 中停止并检查是否从 eMMC 引导后、您是否可以输入以下命令?

    setenv mmcdev 0
    setenv bootdev 0 
    setenv bootpart 0:2
    setenv args_mmc "run finduuid;setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait"
    

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    执行提供的步骤后、系统现在能够在有和没有 SD 卡的情况下从 eMMC 成功引导。

    但是、在每次启动时、我仍需要通过调试 UART 中断 U-Boot、并在系统启动之前手动运行以下命令:

    • setenv mmcdev 0
    • setenv bootpart 0
    • setenv 引导部分 0:2
    • setenv args_mmc “run finduid;setenv bootargs console=ttyS2115200n8 root=/dev/mmcblk0p2 rw rootftype=ext4 rootwait“

    saveenv 命令在此 U-Boot 编译版本中不可用:

    => saveenv
    未知命令'saveenv'-尝试'help'

    是否有建议的方法可以保留这些 U-Boot 环境设置、以便在启动时自动应用这些设置、而无需每次都进行手动干预?

    Hit any key to stop autoboot:  0 
    MMC: no card present
    mmc_init: -123, time 2002
    MMC: no card present
    mmc_init: -123, time 2002
    ** Bad device specification mmc 1 **
    gpio: pin gpio@22_17 (gpio 188) value is 1
    gpio: pin gpio@22_16 (gpio 187) value is 0
    k3_r5f_rproc r5f@41000000: Core 1 is already in use. No rproc commands work
    MMC: no card present
    mmc_init: -123, time 2002
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:2
    Can't set block device
    MMC: no card present
    mmc_init: -123, time 2002
    ** Bad device specification mmc 1 **
    Couldn't find partition mmc 1:2
    Can't set block device
    MMC: no card present
    


    此致。
    Adnan

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

    尊敬的 Adnan:

    执行所提供的步骤后、无论是否使用 SD 卡、系统现在都能够从 eMMC 成功引导。

    很高兴听到这个消息。

    是否有一种方法可以保留这些 U-Boot 环境设置、以便在启动时自动应用这些设置、而无需每次都进行手动干预?

    您是否还可以为 SDK uboot 目录应用以下补丁并重新编译 U-Boot、因为这将有助于保留变量。 您也可以在 uboot 处停止后使用 printenv 命令确认这一点(应用补丁后重建一个)

    diff --git a/board/ti/j784s4/j784s4.env b/board/ti/j784s4/j784s4.env
    index e174fac8..1fe8ee8d 100644
    --- a/board/ti/j784s4/j784s4.env
    +++ b/board/ti/j784s4/j784s4.env
    @@ -15,8 +15,9 @@ run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
     
     boot_targets=mmc1 mmc0 usb pxe dhcp
     boot=mmc
    -mmcdev=1
    -bootpart=1:2
    +mmcdev=0
    +bootdev=0
    +bootpart=0:2
     bootdir=/boot
     rd_spec=-
     dorprocboot=1

    diff --git a/include/env/ti/mmc.env b/include/env/ti/mmc.env
    index 037a0901..710abf5c 100644
    --- a/include/env/ti/mmc.env
    +++ b/include/env/ti/mmc.env
    @@ -1,10 +1,7 @@
     mmcdev=0
     mmcrootfstype=ext4 rootwait
     finduuid=part uuid ${boot} ${bootpart} uuid
    -args_mmc=run finduuid;setenv bootargs console=${console}
    -       ${optargs}
    -       root=PARTUUID=${uuid} rw
    -       rootfstype=${mmcrootfstype}
    +args_mmc=run finduuid;setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
     #ifndef CONFIG_BOOTSTD
     loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
     #endif
    

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    如果我理解正确、在不同的引导源(例如 SD 卡与 eMMC)之间切换时、引导加载程序配置或编译可能需要根据所选的引导模式有所不同、特别是在我想避免在每次引导时手动执行命令的情况下。

    我的目标是验证并记录 EVM 上所有受支持引导模式的完整引导流程、以便我们可以在定制电路板上复制确切的过程、该电路板旨在支持所有这些引导选项。

    您能否确认每种引导模式是否需要单独的引导加载程序设置、或者是否有方法来标准化配置、以便在引导期间不需要手动干预?

    此外、由于我已经验证了 eMMC 引导、因此我现在计划验证其他引导介质、例如 OSPI、QSPI、NAND 闪存、UFS 等

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

    尊敬的 Shaik:

    如果我理解正确、在不同的引导源(例如 SD 卡与 eMMC)之间切换时、引导加载程序配置或编译可能需要根据所选的引导模式有所不同、尤其是当我希望避免在每次引导时手动执行命令时。

    您可以使用单独的内部版本、也可以使用 saveenv 命令。 然而,saveenv 目前已被弃用,这就是为什么我没有建议更早。

    但是,你可以尝试遵循下面的常见问题解答,这可能会启用它:

     【常见问题解答】TDA4VH:在 SDCARD 中启用 saveenv 功能、eMMC 和 OSPI 闪存中 saveenv 的权变措施。 

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    感谢您的意见。

    您能否分享有关使用 SD 卡、eMMC 或 DFU 对 EVM 板上的 QSPI/OSPI 和 NAND 进行刷写和更新的参考链接或文档? 或者、如果您可以提供相应的分步命令/过程、将会有所帮助。


    此致、
    Adnan

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

    尊敬的 Shaik:

    [引述 userid=“641958“ url=“~/support/processors-group/processors/f/processors-forum/1641161/j784s4xevm-j784s4-evm-unable-to-boot-from-emmc-sdk-11-02/6334479

    您能否分享有关使用 SD 卡、eMMC 或 DFU 对 EVM 板上的 QSPI/OSPI 和 NAND 进行刷写和更新的参考链接或文档? 或者、如果您可以提供相应的分步命令/过程、将会有所帮助。

    [/报价]

    由于我不是 QSPI/OSPI 的专家、因此、如果您可以将此问题标记为已解决、并发布另一个 E2E 问题、以便相应的专家可以回答这个问题、那将会很好。

    此致

    Gokul Praveen

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

    尊敬的 Gokul:

    我将继续关闭此工单并提交一个新的工单、具体涉及 QSPI/OSPI 刷写和引导。

    此致、
    Adnan