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:内核启动停止

Guru**** 2585275 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634147/am3358-kernel-boot-stops

大家好、


我正在尝试将当前 u-boot (2013)和内核(3.14)升级到 beaglebonebBlack 上的最新 u-boot (2017)和内核(4.9)。

我可以使用 SD 卡成功引导最新映像、但在将映像写入 eMMC 后、它卡在内核上、显示 "Waiting for root device /dev/mmcblk0p2..(正在等待根设备)"。

根据我的理解,当 SD 卡安装在 BBB 上时,它将 SD 卡显示为/dev/mmcblk0,将 eMMC 显示为/dev/mmcblk1。

只有 eMMC,它 应该是/dev/mmcblk0。

在我的最新内核(4.9)日志中、它指出"mmcblk1:0001 S10004 3.56 GiB"、没有用于 eMMC 的 SD 卡。即 eMMC 安装在 mmcblk1上。

这就是为什么出现错误"Waiting for root device /dev/mmcblk0p2..(正在等待根设备)" 来了。 此外、当我将 bootargs 更改为/dev/mmcblk1p2时、它会起作用。

但是、根据我没有 SD 卡的旧版内核日志(3.14)、eMMC 安装为"mmcblk0:mmc1:0001 S10004 3.56 GiB"意味着它将 eMMC 用作 mmcblk0、并且不更改目标、它会从 eMMC 成功引导。

请帮助您从何处开始针对此问题进行调试。 我不希望 eMMC 和 SD 卡有不同的目标。

我已附上 Kernel_log.txt 和 Bootargs.txt 供参考。

此致、

维拉伊

e2e.ti.com/.../7103.Kernel_5F00_log.txte2e.ti.com/.../Bootargs.txt

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

    您能否确保 CONFIG_MMC (和相关配置)作为内置而不是模块创建。 CONFIG_MMC=y、而不是 CONFIG_MMC=m
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dwarakesh、

    感谢您的更新。

    是的、在我的内核 Defconfig 中、所有 CONFIG_MMC 和相关配置均按内置方式进行。

    即 CONFIG_MMC=y。

    此致、

    维拉伊

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

    我未注意到您的完整查询。 我认为问题一直是"等待根设备"。 实际上、如果没有 SDCard、MMC 器件实例是固定的、并且不会发生变化(例如、eMMC 的 MMC0和 SDCard 的 MMC1在器件树中是固定的)。 我不确定这是否是您在旧版内核中看到的行为。 是否可以交叉确认?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我怀疑在您的旧卡设置中可能会检测到 uEnv.txt、这会很有问题

    mmcroot=/dev/mmcblk{mmcdev}p2

    如果不是,从引导 env 中,我可以发现 mmcroot=/dev/mmcblk0p2已进行硬编码。

    如果您将其更改为
    # setenv mmcroot /dev/mmcblk{mmcdev}p2.
    # saveenv

    这将确保选择正确的分区
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dwarakesh、

    我没有在我的任何卡中使用 uEnv.txt。
    是的、在 u-boot 中、mmcroot=/dev/mmcblk0p2已硬编码。

    我想更改 u-boot 源码 i、e 我已更改 am335x_evm.h 文件中的"mmcroot=/dev/mmcblk{mmcdev}p2"并重建 u-boot、但 u-boot 似乎无法解析${mmcdev}。 它将参数保留为"/dev/mmcblk{mmcdev}p2"、而不是"/dev/mmcblk0p2 "或"/dev/mmcblk1p2 "。


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

    或者、

    尝试以下操作:

    bootcmd=run findfdt;MMC dev 0;如果 MMC 重新扫描;然后回显找到 micro SD 卡;setenv mmcdev 0;setenv mmcroot /dev/mmcblk0p1;否则回显未找到 micro SD 卡、将 mmcdev 设置为1;loadenv mmcdev 1;setenv mmcroot /dev/mmcblk1p1;fi;setenv 部分${mmcdev};如果在 mmcdevmmcmmcdev2上找到 mmcmmcdev_mmc;则回显${mmcdevmmcdev3:smmcmc;如果在 mmcdev3设备上重新扫描${mmcdev_mmcdev_mmcdev 然后从${bootenv}回显已加载的环境;运行 envenv;fi;if test -n $envcmd;然后回显正在运行的 uimportcmd ...;运行 uenvcmd;fi;如果运行 loaduimage;然后运行 loadfdt;运行 mmcboot;fi;否则运行 nandboot;fi;

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

    您好 Dwarakesh、

    感谢您的帮助!!!

    它可以解决我的问题。

    此致、

    维拉伊·米