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.

[参考译文] Linux/AM5728:引导时、未安装 eMMC。

Guru**** 2589280 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586854/linux-am5728-when-booting-emmc-not-mounted

器件型号:AM5728

工具/软件:Linux

您好!

我的客户正在参考 TMDXIDK5728进行开发。

存在无法引导的问题。

IDK 板中也会重现此症状。

请参阅以下内容。

  • 开发环境

主机 PC 操作系统:Ubuntu 16.04 Linux 64位

AM5728 SDK:U-boot-2016.05 / Linux-RT-4.4.19

AM5728 SDK 版本:TI-processor-sdk-linux-rt-am57xx-evm-03.01.00.06

IPC:IPC_3_43_02_04

XDC:xdctools_3_32_00_06_core

 eMMC 部件号:MTFC16GAKAECN-4MIT

 

引导模式为 QSPI。 (u-boot、内核)

根文件系统位于 eMMC 中。

 

正常引导后(内核、通常安装 rootfilesystem)插入 SD 卡。

将安装的 SD 卡上的数据复制到 rootfs。

按照上述步骤执行数据复制后、卸下 SD 卡。

断开/连接(电源关闭/打开)电源线。

开机时显示以下错误,系统无法启动:

mmc1:初始化 MMC 卡时出错-110

omap_hwmod:mmc2:_wait_target_disable 失败

e2e.ti.com/.../5008.AM572x_5F00_eMMC_5F00_Log.txt

但是、当热复位(SW2:用户热复位按钮)时、引导是正常的。

一旦启动失败、即使 擦除 eMMC 的整个区域并重新写入 rootfs、也会出现此症状。

 

谢谢、致以诚挚的问候。

Henry。

 

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

    您好、Henry、

    [引用用户="Henry Kim"]

    引导模式为 QSPI。 (u-boot、内核)

    根文件系统位于 eMMC 中。

    [/报价]

    根据我的理解、您的最终目标是在 QSPI 中使用 u-boot、在 eMMC 中使用内核和 rootfs、这是正确的吗?

    [引用用户="Henry Kim"]

    正常引导后(内核、通常安装 rootfilesystem)插入 SD 卡。

    [/报价]

    关于"正常启动后"、您的意思是什么? 从何处加载/引导 u-boot/kernel/rootfs? QSPI、eMMC、SD 卡?

    为什么此处涉及 SD 卡? 您是否计划从 SD 卡刷写 eMMC 中的 rootfs?

    另请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide

    此致、
    帕维尔

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

    大家好、Pavel

    感谢您的回复。

    根据我的理解、您的最终目标是在 QSPI 中使用 u-boot、在 eMMC 中使用内核和 rootfs、这是正确的吗?

    -是的、

    关于"正常启动后"、您的意思是什么? 从何处加载/引导 u-boot/kernel/rootfs? QSPI、eMMC、SD 卡?

    为什么此处涉及 SD 卡? 您是否计划从 SD 卡刷写 eMMC 中的 rootfs?

    -这意味着引导已完成。 未失败。 U-boot 和来自 QSPI 的内核、来自 eMMC 的 rootfs。

    - 不用于刷写 rootfs,只需将 文件复制到 eMMC 即可。

    将文件从 SD 卡复制到 eMMC 之前没有问题。

    复制文件后、问题始终在断电/打开时出现。 (电源线断开/连接)

    但是、当按下 RESET 按钮时、引导正常完成。

    TMDXIDK5728中也会重现此症状。

    谢谢、致以诚挚的问候。

    Henry。

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

    亨利

    [引用用户="Henry Kim"]

    - 不用于刷写 rootfs,只需将 文件复制到 eMMC 即可。

    将文件从 SD 卡复制到 eMMC 之前没有问题。

    复制文件后、问题始终在断电/打开时出现。 (电源线断开/连接)

    [/报价]

    在 rootfs 中复制该文件的确切位置? 在复制该文件时,是否可以提供完整的控制台日志?

    [引用 user="Henry Kim"]但是,当按下重置按钮时,启动正常完成。

    引导正常完成,您在 eMMMC rootfs 中看到您的文件?

    此致、
    帕维尔

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

    亨利

    我们有一个特殊脚本、用于在 PSDK Linux Automotive 中将文件从 SD 卡传输到 eMMC、即 mk-eMMC-boot.sh

    在此脚本中,我们将 ext4用于 eMMC rootfs,并执行以下步骤:

    -安装 eMMC_rootfs

    -cp -RVF MMC_rootfs/* eMMC_rootfs/。

    -同步

    -卸载 eMMC_rootfs

    我们使用"CP -RVF {SD 卡} {eMMC}"将文件从 SD 卡传输到 eMMC。

    我随附 mk-eMMC-boot.sh 脚本供您参考。

    e2e.ti.com/.../6254.mk_2D00_eMMC_2D00_boot.sh

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

    您好、Pavel、

    我刚才做了以下工作:

    mkdir /temp

    CP {SD 卡}/temp.txt  /temp/  

    同步    

    引导正常完成,我可以在 eMMMC rootfs 中看到该文件。

    我想知道在复制文件而不是复制 rootfs 后导致问题的原因。

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

    亨利

    [报价用户="Henry Kim"] CP {SD 卡}/temp.txt  /temp/ 

    是否可以使用以下命令尝试、是否有任何区别?

    CP -RVF {SD 卡}/temp.txt {eMMC}/temp/

    您能否在"同步"之后和断电之前尝试卸载 eMMC、这种情况有什么不同?

    此致、
    帕维尔

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

    我还看到、在出现故障的情况下、您会看到以下 bootargs 和消息:

    内核命令行:console=ttyO1,115200n8 root=PARTUUID =b20c611f-28c7-A549-b1b0-142b607587bf rw rootfstype=ext4等待

    正在等待根设备 PARTUUUUUID=b20c611f-28c7-A549-b1b0-142b607587bf...

    mmc1:初始化 MMC 卡时出错-110

    omap_hwmod:mmc2:_wait_target_disable 失败

     

    在我看来,Linux 内核试图从 eMMC 而不是 SD 卡装载 rootfs。

    在"同步"之后和断电/打开之前、您是否可以尝试卸载和移除 SD 卡?有什么区别?

    成功加载 eMMC rootfs 后,您是否还能提供控制台日志输出?

    此致、
    帕维尔

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

    您好、Pavel、

    以下是成功的日志: e2e.ti.com/.../6864.AM572x_5F00_Normally_5F00_Boot_5F00_Log.txt

    此致、

    Henry

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

    您的引导参数似乎是正确的。

    您能否在两种情况下(正常引导和失败引导)提供 sysboot[5:0]设置?

    另外、请在我之前的回复中回答其他未决问题。

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

    是否可以使用以下命令尝试、是否有任何区别?

    CP -RVF {SD 卡}/temp.txt {eMMC}/temp/

    您能否在"同步"之后和断电之前尝试卸载 eMMC、这种情况有什么不同?

    问题相同。



    此致、

    Henry

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

    [引用用户="Henry Kim"]

    CP -RVF {SD 卡}/temp.txt {eMMC}/temp/

    您能否在"同步"之后和断电之前尝试卸载 eMMC、这种情况有什么不同?

    问题相同。

    [/报价]

    您能否提供包含这些命令的完整控制台日志?


    此致、
    帕维尔

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

    您好、Pavel、

    sysboot[5:0]设置如下。

    两种情况(正常启动和故障启动) 都用作红色方框。 (第一个:QSPI、第二个:SD)

    此致、

    Henry

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

    您的 sysboot[5:0]引脚配置为 QSPI 引导、在您的情况下这似乎是正确的。

    您能否回答其他未决问题、例如、在复印操作后以及在电路板断电/通电之前、是否从电路板上卸下 SD 卡?

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

    Pavel、

    在"同步"之后和断电/打开之前、您是否可以尝试卸载和移除 SD 卡?有什么区别?

    -问题相同。 (卸载并卸下 SD 卡、然后重新打开/关闭电源)

    但是 ,当按下重置按钮时,引导完成成功。

    此致、

    Henry

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

    亨利

    [引用 user="Henry Kim"]-存在相同的问题。 (卸载并卸下 SD 卡、然后重复关闭/打开电源)[/quot]

    当您断电时、您实际上拔下电源线、这是正确的吗?

    是的、表示您可以重现 TMDXIDK5728的问题。 您能否尝试拔下电源线、通过 SW1 (PORz)和 SW2 (RESETn)重置 TMDXIDK5728板? 使用 SW1和/或 SW2按钮时、您是否会遇到此问题?

    在拔下电源线之前、您能否尝试通过用户空间命令关闭电路板电源、这种情况会产生什么结果? 在拔下电缆之前、请确保等待几秒钟以正确关闭/关闭电路板电源。

    请注意、您必须遵循断电/断电顺序、否则可能会损坏电路板和/或降低 POH。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以从用户空间使用"poweroff"命令。 另请参阅以下 e2e 线程:

    e2e.ti.com/.../501908
    e2e.ti.com/.../572173

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

    您好、Pavel、

    当您断电时、您实际上拔下电源线、这是正确的吗?

    -是的。

    是的、表示您可以重现 TMDXIDK5728的问题。 您能否尝试拔下电源线、通过 SW1 (PORz)和 SW2 (RESETn)重置 TMDXIDK5728板? 使用 SW1和/或 SW2按钮时、您是否会遇到此问题?

    -如果按 SW2按钮,引导将成功完成。

    在拔下电源线之前、您能否尝试通过用户空间命令关闭电路板电源、这种情况会产生什么结果? 在拔下电缆之前、请确保等待几秒钟以正确关闭/关闭电路板电源。

    -当我运行断电命令时,引导成功完成。

    -流程如下。

    运行 power-off 命令->"systemd-shutdown [1]:所有文件系统都未安装"消息输出(大约12秒)->电源线断开->电源线连接

            正在停止 UID 0的用户管理器...

    [ OK ]停止目标计时器。

    [ 确定 ]停止每日清理临时目录。

            正在停止加载/保存随机种子...

            停止用户 root 的会话 C1。

    [ OK ] Closed Load/Save RF kill Switch Status /dev/rfkill Watch。

    [ 确定 ]已停止设置虚拟控制台。

    [ 确定 ]停止目标系统时间同步。

    [ 确定 ]已停止更新关于系统运行级别更改的参数。

            正在停止更新 utmp 关于系统引导/关机...

    [ 确定 ]停止目标多用户系统。

            正在停止系统日志服务...

            正在停止 Avahi mDNS/DNS-SD 堆栈...

            正在停止具有轻量级系统要求的 Lightning Fast Web 服务器...

            正在停止内核日志服务...

            正在停止网络名称解析...

            正在停止电话服务...

            正在停止 thermal-zone-init.service ...

    [ 确定 ]停止目标登录提示。

            正在停止 tty1上的 Getty...

            正在停止 ttyS1...上的串行 Getty

    [ 确定 ]已在 ttyO2上停止串行 Getty。

            正在停止 ttyS2...上的串行 Getty

            使用 ipsec.conf 停止 StrongSwan IPsec IKEv1/IKEv2守护程序。

    [ 确定 ]停止目标交换。

    [ 确定 ]使用 ipsec.conf 停止 StrongSwan IPsec IKEv1/IKEv2守护程序。

    [ 确定 ]已停止内核日志服务。

    [ 确定 ]已停止系统日志服务。

    [ 确定 ]电话服务已停止。

    [ 确定 ]已停止 Avahi mDNS/DNS-SD 堆栈。

    [ 确定 ]已在 tty1上停止 Getty。

    [ 确定 ]已在 ttyS1上停止串行 Getty。

    [ 确定 ]已在 ttyS2上停止串行 Getty。

    [ 确定 ]停止网络名称解析。

    [ 确定 ]已停止具有轻量级系统要求的 Lightning Fast Webserver。

    [ 确定 ]已停止 UID 0的 User Manager。

    [ 确定 ]停止加载/保存随机种子。

    [ 确定 ]已停止用户 root 的会话 C1。

    [ 确定 ]已停止 thermal-zone-init.service。

    [ 确定 ]停止更新 utmp 关于系统引导/关机。

    [ 确定 ]已停止 UID 0的 User Manager。

    [ 确定 ]停止创建易失性文件和目录。

    [ 确定 ]停止目标本地文件系统。

            卸载/media/ram...

            卸载/var/volatile...

            卸载/run/user/0...

            正在停止 gdbserverproxy.service ...

    [ 确定 ]已删除根的层用户层。

            正在停止登录服务...

    [ 确定 ]目标网络已停止。

            正在停止网络服务...

    [ 确定 ]已删除片 system-serial\x2dgetty.slice。

            正在停止允许用户会话...

    [ 确定 ]已删除片 system-Getty.slice。

    [ 确定 ]网络服务已停止。

    [ 确定 ]登录服务已停止。

    [ 确定 ]卸载/media/ram.

    [ 确定 ]卸载/var/volatile.

    [ 确定 ]卸载/run/user/0.

    [ 确定 ]已停止 gdbserverproxy.service。

    [ 确定 ]已停止允许用户会话。

    [ 确定 ]停止目标远程文件系统。

            正在停止 rng-tools.service ...

    [ 确定 ]已达到目标卸载所有文件系统。

    [ 确定 ]停止目标本地文件系统(预)。

    [ 确定 ]已停止在/dev/中 创建静态设备节点。

    [ 确定 ]已停止重新装载根和内核文件系统。

            停止 D 总线系统信息总线。

    [ 确定 ]停止应用内核变量。

    [ OK ]停止加载内核模块。

    [ 确定 ] D 总线系统信息总线已停止

    [ 确定 ]已停止 rng-tools.service。

            正在停止 thttpd.service ...

    [ 确定 ]已停止 thttpd.service。

            正在停止 tiipclad-demon.service ...

            正在停止 telnetd.service ...

    [ 确定 ]已停止 tiipclad-demon.service。

    [ 确定 ]已停止 telnetd.service。

            正在停止 uim-sysfs.service ...

    [ 确定 ]已停止 uim-sysfs.service。

    [ 确定 ]停止目标基本系统。

    [ 确定 ]停止目标层面。

    [ 确定 ]已删除层用户和会话层。

    [ 确定 ]停止的目标路径。

    [ 确定 ]已停止向控制台目录监视发送密码请求。

    [ 确定 ]已停止将密码请求转发到 Wall Directory Watch。

    [ 确定 ]目标套接字已停止。

    [ 确定 ]已关闭 RPCbind 服务器激活套接字。

    [ 确定 ]已关闭 Syslog 套接字。

    [ 确定 ]关闭 dropbear.socket。

    [ 确定 ]已关闭 Avahi mDNS/DNS-SD 堆栈激活套接字。

    [ 确定 ]关闭的 D-Bus 系统消息总线插座。

    [ 确定 ]达到目标关闭。

    [ 确定 ]达到目标最终步骤。

            正在启动断电...

    systemd-shutdown [1]:正在将 SIGTERM 发送到其余进程...

    systemd-journale[209]:从 PID 1接收到的 SIGTERM (systemd-shutdow)。

    systemd-shutdown [1]:正在将 SIGKILL 发送到其余进程...

    systemd-shutdown [1]:将 SIGKILL 发送到 PID 1127 (rngd)。

    systemd-shutdown [1]:卸载文件系统。

    systemd-shutdown [1]:使用选项“”重新装入“/tmp”只读文件。

    systemd-shutdown [1]:卸载/tmp。

    systemd-shutdown [1]:使用选项“data=ordered”重新安装“/”只读。

    ext4-fs (mmcblk0p1):重新安装。 opts:data= ordered

    systemd-shutdown [1]:使用选项“data=ordered”重新安装“/”只读。

    ext4-fs (mmcblk0p1):重新安装。 opts:data= ordered

    systemd-shutdown [1]:使用选项“data=ordered”重新安装“/”只读。

    ext4-fs (mmcblk0p1):重新安装。 opts:data= ordered

    systemd-shutdown [1]:所有文件系统均已卸载。

    此应用为 IED (智能电子器件)

    大多数 IED 通过断开电源线断电。 IED 无法使用命令 关闭电源。

    如果发生断电、 则无法做出响应。

    因此、很难应用该命令。

    是否有其他方法可以解决此问题?

    此致、

    Henry

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

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

    日志文件系统在断电/故障时不太容易损坏、但您使用的是此类(EXT4)、并且仍然存在文件系统损坏。 首先、确认您没有安装护栏= 0/nobarrier。 这通常会提高性能、但如果不执行适当的关断操作、则会以损坏为代价。 此外、检查内核日志以确保 ext4未禁用障碍、因为堆栈中的某些内容不支持这些障碍。

    警告:在磁盘无法保证缓存正确写入时禁用屏障,如果发生电源故障,可能会导致严重的文件系统损坏和数据丢失。

    有关更多信息、请参阅以下指针:

    wiki.archlinux.org/.../ext4
    www.embeddedarm.com/.../preventing-filesystem-corruption-in-embedded-linux


    您还可以选中使用 SafeFAT 的选项:
    www.ti.com/.../embeddedsoftwarefulldetails.tsp


    您还可以检查功率损耗的硬件检测、看看以下指针是否会帮助您:
    e2e.ti.com/.../197885
    e2e.ti.com/.../341182
    e2e.ti.com/.../1062998
    processors.wiki.ti.com/.../Battery_Backup




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

    为了正确处理功率损耗/故障、您应该具有备用电源、该电源应在断电/关断序列期间为 AM57x 电路板供电。 拔下电源线应该是启动电路板断电的情况。

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

    大家好、Pavel

    感谢您的回复。

    您提出的解决方案不适合我们。

    我们希望实施不使用备用电源的解决方案。

    我们已经知道断开电源线时系统的不稳定。

    但是、我无法理解内存未损坏、无法启动。

    我 想知道确切的原因。

    引导成功完成当 IDK 电路板上的热复位时、eMMC 的数据似乎未损坏或丢失。

    因此、它似乎不是由断电造成的损坏。

    当我尝试在 initail u-boot 和 power-off/on 向 eMMC 写入数据时。 没有 eMMC 中断问题。

    当我将 SD 卡上的数据写入 eMMC 时、会出现问题。

    我想 问题是、当我将数据从 SD 卡写入 eMMC 时、Linux 驱动程序会出现。

    此致、

    Henry

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

    我认为 MMC/eMMC Linux 驱动程序不是问题所在。 当您处于 u-boot 状态时、您可以拔下电源线并正常启动、因为在 u-boot 模式下、我们在 eMMC 中启用的功能要少得多。 假设 u-boot 为裸机编程、其中我们有基本的寄存器设置。

    在 Linux 内核和用户空间中、我们有 MMC 层、文件系统等 这里的思维比 u-boot 复杂得多、这里我们有更多的流程、操作和交互。
    拔下电源线时、eMMC 中可能会运行一些后台进程、请参阅以下 wiki:
    processors.wiki.ti.com/.../SD_User's_Guide

    请注意、即使您设法解决此 eMMC 文件系统损坏问题(在用户空间中拔下电源线时)、仍然存在无法正确处理断电/关断序列的问题、这会缩短器件的寿命(PoH)、也可能会损坏器件。 然后、eMMC 文件系统损坏将是您的最小问题。

    此致、
    帕维尔