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/66AK2G12:Linux 引导故障:PMMC 探测器故障

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/671142/linux-66ak2g12-linux-boot-failure-pmmc-probe-fails

器件型号:66AK2G12

工具/软件:Linux

您好!

我设法使 u-boot 在自定义 K2G 板上运行、但遇到了一些 Linux 启动序列问题、无法在任何在线位置找到任何此问题的证据。  将 zImage 加载到0x82000000、将 DTB 加载到0x88000000、然后调用 bootz 0x82000000 - 0x88000000后、内核开始引导。  大约2秒后、我会收到以下消息:

[2.321396] ti-sci 2921c00.PMMC:msp (调用方:platform_drv_probe +0x58/0xa4)
[2.330247] ti-sci 2921c00.PMMC:mbox 发送失败-110
[2.33590] ti-sci 2921c00.PMMC:
无法与 TI-sci probe 通信。[2.34 

串行端口在此阶段保持几分钟、直至最终输出:

[471.361910] VFS:无法通过 NFS 安装根 FS,正在尝试软盘。
[471.36835]所有分区列表:
[471.372376] 0100 65536 ram0 [471.376120](驱动器?)
[471.378608] 0101 65536 ram1 [471.382443](驱动器?)
[471.384930]0102 65536 RAM2 [471.388671](驱动程序?)
[471.391154] 0103 65536 ram3 [471.394974](驱动程序?)
[471.397459] 0104 65536 ram4 [471.401200](驱动器?)
[471.403755]0105 65536 ram5 [471.407497](驱动器?)
[471.409979]0106 65536 ram6 [471.413750](驱动器?)
[471.416234] 0107 65536 ram7 [471.419973](驱动器?)
[471.422487]0108 65536 ram8 [471.426228](驱动程序?)
[471.428709] 0109 65536 ram9 [471.432477](驱动程序?)
[471.434960] 010A 65536 ram10 [471.438791](驱动程序?)
[471.441272] 010b 65536 ram11 [471.445132](驱动程序?)
[471.447615] 010C 65536 ram12 [471.451474](驱动器?)
[471.453956] 010d 65536 ram13 [471.457787](驱动器?)
[471.460267]010e 65536 ram14 [471.464125](驱动器?)
[471.466608] 010f 65536 ram15 [471.470440](驱动程序?)
[471.472959]没有文件系统可以安装根、已尝试:[471.477882] NFS
[471.479811]
[471.481410]内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2.0)
[471.490085]--[结束内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2、0)

经过一些调查、发现第一组错误与 K2G 上的 PMMC 通信超时有关。  我找不到任何有关如何确保加载该第三处理器的固件或是否需要固件的文档。

这里的真正问题可能是 NFS 问题、但在 NFS 错误出现前几分钟内没有输出似乎很奇怪。  关于 NFS 问题、我尝试了以下操作:

  • 确保/etc/exports 是最新的并重新运行/usr/sbin/exportfs -va
  • 已验证我的 bootargs、console=ttyS0、115200n8 noinitrd rootfstype=NFS root=/dev/nfs rw nfsroot=192.168.0.14:/home/jeff/ti/targetNFS、v3、TCP、rsize=4096、wsize=4096 IP=DHCP
  • 已尝试将 rootwait=5 (以及10和15)添加到 bootargs
  • 通过 NFS 将文件下载到电路板、以确保 NFS 正常工作
  • 已验证主机上网络文件系统的路径

由于我可以通过 NFS 下载文件、因此我不认为 NFS 是问题所在。  在我看来、控制台输出在 SCI 错误和 NFS 错误之间停止几分钟似乎有点奇怪。   

我们非常感谢为指明解决办法方向而提供的任何援助。

Jeff

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

    是否可以发布完整的引导日志。 这是哪个 Linux SDK 版本?

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

    引导日志如下所示、在"DONE... 引导内核":

    **2132 printk 消息丢失**[0.580269]串行:8250/16550驱动程序,10个端口,禁用 IRQ 共享
    [0.580465]平台串行8250:设置 DMA_PFN_offset00780000
    [0.587142]控制台[ttyS0]禁用
    [0.587244] 2530c00.serial: MMIO 0x2530c00处的 ttyS0 (IRQ = 23、base_baud = 12500000)是 TI DA8xx/66AK2x
    [ 0.617483]控制台[ttyS0]已启用
    [ 0.623943][DRM]已初始化
    [ 0.960181]
    
    固定:已加载模块[ 1.122652]循环:已加载模块[ 1.132007]、平台外
    设[1.132007]、MDIO 1.870000]:固定总线[1.071002] Probed
    [1.144799] EHCI_hcd:USB 2.0 '增强型'主机控制器(EHCI)驱动程序
    [1.151678] EHCI 平台:EHCI 通用平台驱动程序
    [1.157631] ohci_hcd:USB 1.1 '开放式'主机控制器(OHCI)驱动程序
    [1.164166] ohci 平台:OHCI 通用平台驱动程序[1.170CC_c_
    新
    的 CDC] CCC 接口[1.170CCM_核心:1.176410] USB 调制解调器和 ISDN 适配器的 USB 抽象控制模型驱动
    程序[1.184846] i2c /dev/entries 驱动程序
    [1.196350] NET:注册协议系列10[1.222172]
    SIT:IPv6、IPv4和 MPLS over IPv4隧道驱动程序
    [1.229672] NET: 注册协议系列17
    [1.234843]注册的密钥类型 DNS_旋 变传感器
    [1.239565]注册了 SWP/SWPB 仿真处理程序
    [2.321372] ti-sci 2921c00.PMMC:mbox timedout in resp (caller:platform_drv_prob+0x58/0xa4)
    [2.330224] ti-sci 2921c00.mc:
    无法与 TI-sci 2110.mc 进行通信[2.3400-msci:mscc:2.3400-msci
    2921c00.PMMC 的探测失败,错误-110[471.361647]
    VFS:无法通过 NFS 安装根 FS,正在尝试软盘。
    [471.36899]所有分区列表:
    [471.372216] 0100 65536 ram0 [471.375962](驱动程序?)
    [471.378449]0101 65536 ram1 [471.382284](驱动程序?)
    [471.384772] 0102 65536 RAM2 [471.388513](驱动程序?)
    [471.390996] 0103 65536 ram3 [471.394816](驱动程序?)
    [471.397302] 0104 65536 ram4 [471.401042](驱动器?)
    [471.403597]0105 65536 ram5 [471.407339](驱动器?)
    [471.409821]0106 65536 ram6 [471.413593](驱动程序?)
    [471.416076]0107 65536 ram7 [471.419817](驱动程序?)
    [471.422330]0108 65536 ram8 [471.426071](驱动程序?)
    [471.428550] 0109 65536 ram9 [471.432319](驱动器?)
    [471.434804] 010A 65536 ram10 [471.438634](驱动器?)
    [471.441114]010b 65536 ram11 [471.444973](驱动程序?)
    [471.447457]010C 65536 ram12 [471.451287](驱动器?)
    [471.453798] 010d 65536 ram13 [471.457631](驱动器?)
    [471.460112] 010e 65536 ram14 [471.463971](驱动程序?)
    [471.466453] 010f 65536 ram15 [471.470285](驱动器?)
    [471.472802]没有文件系统可以安装根、已尝试:[471.477726] NFS
    [471.479655]
    [471.481227]内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2.0)
    [471.489900]--[结束内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2、0]
    

    我使用的是2月15日下载的 Linux SDK 04.02.00.09。 我还在使用 CCS 7.3.0.00019。 U-Boot 版本为2017.01。

    无关的注释是、在该平台上支持 NAND 引导方面是否取得了任何进展?  我刚刚无意中发现了这篇文章(https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/615259/2269676)、似乎我们已经被这篇文章锁定了一个角落。  不支持 NAND 启动意味着我们需要花费高昂的电路板修订。

    Jeff

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

    我能够找到 PMMC 的固件映像、ti-sci-firmware-k2g.bin。  如环境变量"run_PMMC"中所示、使用 rproc 加载此固件会导致成功加载 PMMC。  但是、在加载 PMMC 后、以太网 PHY 变得不可支持。  因此、根据我执行操作的顺序、我会得到不同的结果。

    对于每种情况、我都会运行以下代码:

    setenv serverip 192.168.0.14
    setenv nfs_root /home/jeff/ti/targetNFS
    运行 init_nfs 

    这将设置 bootargs 并获取电路板的 IP 地址。  之后、程序会有所不同。

    方案1:首先将所有必需的文件加载到 DDR 中

    tftpboot 0x82000000 zImage
    tftpboot 0x83000000 keystone-k2g-evm.dtb
    tftpboot 0x0c040000 skern-k2g.bin
    tftpboot 0x88000000 ti-sci-firmware-k2g.bin
    mon_install 0x0c040000
    rproc init;rproc load 0 0x88000000 0x8354;rproc start 0;
    bootz 0x82000000 - 0x83000000 

    这些独立步骤中的每一个步骤似乎都成功。  

    rproc 命令输出如下所示:

    => rproc init;rproc load 0 0x88000000 0x8354
    uclass_find_device_By_seq:0 -1
    uclass_find_device_By_seq:0
    - dt-1
    -未找到
    rproc_pre_probe:'pmc@2900000':使用 fdtd_dec_get_bool
    :remote-memory_dlpref_proc:0_proc = 0_prob_prob_proc
    
    
    @
    
    = 0_prob_prob_probe:0x00000_prob_prob_prob_probe:0_prob_prob_prob_prob_prob_prob_prob_prob_prob_prob_probe_probe:0_prob_prob_prob_prob_prob_prob_prob_probe_probe_probe_probe:0_pro
    
    从地址0x88000000加载到'PMMC@2900000'大小为33620字节
    的 ti_powerproc_load:pMMC@2900000:从0x88000000加载二进制文件、大小0x00008354到0x02900000
    ti_powerproc_load:pMMC@2900000:完成!
    使用数据加载远程处理器0@addr=0x88000000 33620字节:成功!
    => rproc start 0
    uclass_find_device_By_seq:0
    --1 0
    -找到
    _rproc_ops_wrapper:启动 PMMC@2900000...
    

    运行的 bootz 会产生以下输出:

    正在解压缩 Linux... 已完成、正在引导内核。
    **2133 printk 消息丢失**[0.580244]串行:8250/16550驱动程序,10个端口,禁用 IRQ 共享
    [0.580444]平台串行8250:设置 DMA_PFN_offset00780000
    [0.587128]控制台[ttyS0]禁用
    [0.587230] 2530c00.serial: MMIO 0x2530c00 (IRQ = 23、base_baud = 12500000)处的 ttyS0是 TI DA8xx/66AK2x
    [ 0.617471]控制台[ttyS0]启用
    [ 0.623900][DRM]已初始化
    [ 0.960106]
    
    固定:已加载模块[ 1.122646]循环:已加载模块[ 1.131990]平台外设[1.870000] MDIO [1.870000:
    固定总线[1.071002] Probed
    [1.144776] EHCI_hcd:USB 2.0 '增强型'主机控制器(EHCI)驱动程序
    [1.151654] EHCI 平台:EHCI 通用平台驱动程序
    [1.157588] ohci_hcd:USB 1.1 '开放'主机控制器(OHCI)驱动程序
    [1.164122] ohci 平台:OHCI 通用平台驱动程序[1.170CCC_CCM]
    新的 CDC_CCM[1.6086] CCM_核心接口[1.60122]
    USB 调制解调器和 ISDN 适配器的 USB 抽象控制模型驱动
    程序[1.184781] i2c /dev/entries 驱动程序
    [1.196263] NET:注册协议系列10[1.222178]
    Sit:IPv6、IPv4和 MPLS over IPv4隧道驱动程序
    [1.229672] NET: 已注册协议系列17
    [1.234843]注册的密钥类型 DNS_旋 变传感器
    [1.239569]正在注册 SWP/SWPB 仿真处理程序
    [1.254429] ti-sci 2921c00.PMMC:ABI:2.4 (固件版本0x0011 '0.1.1-50-g129ef (Eagle)))
    [1.265518] OMAP-GPMA:2.4[1.EDMA.EDMA.78000 DMC.EDMC.EDMC.000]未能获取
    驱动程序
    memcpy 被禁用
    [1.331254] EDMA 2728000。EDMA:TI EDMA 引擎驱动
    程序[1.338631] ECAP 21d1800.ECAP:无法获取时钟
    [1.344368] keystone-navigator-qmss soc:qmss@4020000:qmgr start queue 0、队列数量128
    [1.353656] soc:qms40mss@ 添加了 qmgr 起始队列0、队列数量128、reg_peek f09fc000、reg_status (空)、reg_config f09f0
    [ 1.375973] keystone-navigator-DMA SoC:knav_DMAE@0:DMA DMA_GbE 注册的53个逻辑通道、流32、TX chans:21、Rx chans:32
    [DMACK_8098]未能获取 davinci md39f1.00]器件[1.8040f c00 mcr clock_mf 1.84f
    2620110.netcp: 启用了 ALE
    的[1.403307] netcp-1.0 2620110.netcp:器件节点查找 pps 计时器失败
    [1.410716] netcp-1.0 2620110.netcp:无法获取 CPT REFCLK
    [1.416946] netcp-1.0 2620110.netcp:模块(netcp-GbE)的探测失败,带有-517
    [1.424790] netcp-1.0 2620110.netcp:模块(netcp-1.0
    )不能用于 netcp-g3169 [2620110.netcp:设备 不用于器件
    的模块(netcp-PA)[1.439290] netcp-1.0 2620110.netcp:模块(netcp-PA2)不用于器件
    [1.446533] netcp-1.0 2620110.netcp:模块(netcp-sa)不用于器件
    [1.4534] OMAP-GPMC1800.GPMC:无法获取 GPcp 10000.0[1.46007_mcp
    时钟[1.45289]、无法获取 GPIOs [1.4600]
    无法获取设备时钟
    [470.721698] VFS:无法通过 NFS 安装根 FS,正在尝试软盘。
    [470.728156]所有分区列表:
    [470.732041] 0100 65536 ram0 [470.735786](驱动器?)
    [470.738273] 0101 65536 ram1 [470.742257](驱动器?)
    [470.744744]0102 65536 RAM2 [470.748485](驱动程序?)
    [470.750968] 0103 65536 ram3 [470.754783](驱动器?)
    [470.757267]0104 65536 ram4 [470.761008](驱动器?)
    [470.763523]0105 65536 ram5 [470.767264](驱动程序?)
    [470.769746] 0106 65536 ram6 [470.773516](驱动器?)
    [470.776001] 0107 65536 ram7 [470.779741](驱动程序?)
    [470.782251] 0108 65536 ram8 [470.785993](驱动器?)
    [470.788474] 0109 65536 ram9 [470.792243](驱动程序?)
    [470.794727] 010A 65536 ram10 [470.798558](驱动程序?)
    [470.801039]010b 65536 ram11 [470.804898](驱动程序?)
    [470.807381] 010C 65536 ram12 [470.811212](驱动器?)
    [470.813724] 010d 65536 ram13 [470.817555](驱动器?)
    [470.820036]010e 65536 ram14 [470.823896](驱动器?)
    [470.826379] 010f 65536 ram15 [470.830209](驱动程序?)
    [470.832727]没有文件系统可以安装根、已尝试:[470.837651] NFS
    [470.839580]
    [470.841149]内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2.0)
    [470.849821]-[结束内核紧急状态-未同步:VFS:无法在未知块上安装根 FS (2、0]
    

    我发现的部分原因是时钟错误。  上述输出中存在许多"无法获取时钟"错误。  这告诉我 PMMC 固件正在更改 U-Boot 设置的时钟配置。  我没有找到任何有关 PMMC 源文件或可修改代码的指示。  在我看来、这是不应修改的代码、代码中其他位置的设置(器件树、板级配置文件等)与 PMMC 通信、以确保这些设置已打开。

    场景2:随我一起加载和安装

    tftpboot 0x0c040000 skern-k2g.bin
    mon_install 0x0c040000
    tftpboot 0x88000000 ti-sci-firmware-k2g.bin
    rproc init;rproc load 0 0x88000000 0x8354;rproc start 0;
    tftpboot 0x82000000 zImage
    --由于 PHY Autoneg 超时而失败
    
    
    

    启动 PMMC 后访问网络的所有尝试都会导致自动协商超时。  这无疑 与上述情况下生成的消息相关联、表明 MDIO/RGMII 接口没有任何时钟信号。

    我还尝试对文件系统使用 UBIFS 而不是 NFS。  这只是导致内核恐慌快得多(~1秒、而不是~417)。  我可能未正确配置 UBIFS、或者 NAND 无法用于引导、正如我在上一个帖子中链接到的帖子中所示。

    关于 PMMC、我在查找有关这应该如何工作的大量文档时遇到了一些困难。  我确实找到了一篇包含一些信息的 wiki 文章(processors.wiki.ti.com/.../TISCI  现在、我将在这里直接搜索。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经确定了在 PMMC 启动时 PHY 没有响应的原因。 PMMC 通过 BOOTCFG_ETHERNET_CLKCTL 在 CLKOUT 引脚上启用 CLKOUT。 CLKOUT 引脚连接到 PHY PWRDN 引脚。 因此、禁用 CLKOUT 可以解决通信问题。

    尽管如此、Linux 仍无法启动、但这并不是此帖子所涉及的内容。 我认为这一问题已经解决。