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.

[参考译文] AM69A:u-boot:PCI 枚举错误

Guru**** 2695575 points

Other Parts Discussed in Thread: AM69

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1582148/am69a-u-boot-pci-enum-error

器件型号: AM69A
Thread 中讨论的其他器件: AM69

您好、

我正在尝试在 AM69-SK 上启用 PCI。 我知道这不是官方支持、但我看到它在另一个线程中适用于 J721S2。  

我的问题是、在第一次尝试访问 PCI 配置内存时、运行“PCI enum“时出现异常:

=> pci enum
cdns,torrent serdes@5070000: val is 0x00000001
pcie_cdns_ti pcie@2900000: readl addr 0x0d000000 + 0x00100054
"Error" handler, esr 0xbf000000
elr: 0000000080861374 lr : 0000000080861368 (reloc)
elr: 00000000ffef5374 lr : 00000000ffef5368
x0 : 000000000d100000 x1 : 0000000000000000
x2 : 000000000000000a x3 : 0000000000000002
x4 : 0000000002880000 x5 : 00000000fde5092f
x6 : 0000000000000034 x7 : 00000000fde50da0
x8 : 0000000000000010 x9 : 00000000ffffffe8
x10: 0000000000000002 x11: 00000000000090a4
x12: 00000000fde50b4c x13: 00000000fde511e0
x14: 0000000000000008 x15: 00000000fde5092f
x16: 00000000ffeface4 x17: 0000000000000000
x18: 00000000fde73e00 x19: 00000000fde89d70
x20: 00000000fff8c621 x21: 0000000000000000
x22: 00000000fde8c7c0 x23: 0000000000000002
x24: 00000000fffe13e4 x25: 00000000fde89c50
x26: 0000000000000000 x27: 0000000000000000
x28: 00000000fde89cb0 x29: 00000000fde50da0

Code: 94016d32 f9400e60 91440000 b9405401 (d5033fbf)
Resetting CPU ...

我有一个很好的例子
CONFIG_CMD_PCI=y
CONFIG_PCIE_CDNS_TI=y
CONFIG_PCI=y

此时、SerDes 和 Wiz 不返回错误、看起来 phy 已初始化。 为什么 PCI 寄存器会导致内存故障?

谢谢您、

Michael

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

    您好、Michael:

    如您所见、SDK 中的 Jacinto 器件不正式支持 PCIe。 你可以尝试,但很有可能它不能正常工作。

    我在上一个线程中尝试过的 J722S 内容是将其放入以下 defconfig 中:

    我在上一个实验中、它对 J721S2 使用默认器件树。 但是、我必须将以下内容添加到 U-Boot 内核配置文件 (j721s2_evm_a72_defconfig):

    CONFIG_CMD_PCI=y
    CONFIG_PCIE_CDNS_TI=y
    CONFIG_PCI=y
    CONFIG_NVME=y
    CONFIG_NVME_PCI=y
    CONFIG_CMD_NVMP=y

    PCIe 器件本身很可能未通电、因此对 CONFIG 寄存器的访问将返回总线错误。

    此致、

    Takuma

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

    嗨、Takuma、感谢您的回复。

    我在 defconfig 中启用了 CONFIG_CMD_PCI、_PCIE_CDNS_TI 和_PCI。 此外、我必须将 “ti、j7200-pcie-host“添加到 pcie0_rc dts 节点。

    最有可能是 PCIe 设备本身未通电、因此访问 CONFIG 寄存器会返回总线错误。

    如何确认? 什么会阻止 PCIe 通电?

    串行器/解串器 Wiz 正在上电、 可访问寄存器。 在`PCI 枚举`尝试读取其寄存器之前将返回相同的总线错误。

    此致、

    Michael

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

    您好、Michael:

    如果链路训练失败或链路训练成功后链路断开、则可能会发生这种情况。

    此致、

    Takuma

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

    尊敬的 Takuma:

    我又回来了。

    我在 Linux 中记录了对 Wiz 和 PHY 的寄存器写入、并发现 U-boot 执行了一些过多的 PHY 复位、并且缺少时钟设置。

    所以我修补了这些寄存器、我很有信心这些寄存器写入操作现在是等效的。

    但第一次尝试读取 PCIe 寄存器 0x0d100054 时仍会崩溃。

    关于我接下来可以查看的方面、您还有其他建议吗? 有什么可以验证我缺少的内容? 如何确认是否已开机?

    谢谢您、

    Michael

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

    您好、Michael:

    Takuma 正在度假直到下周结束(美国感恩节),所以这个线程将不得不等待,直到他回来。

    此致

    Suman

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

    没问题。

    为了进行扩展、我尝试将寄存器写入与 Wiz、PCIe 和 PHY 相匹配。 以下是照片。 但我仍然无法让串行器/解串器建立链路、我不确定缺少什么或如何调试它。 我还删除了导致重置的写入、因为我发现 Linux 不执行该写入操作。

    Linux:

     [    1.888900] wiz bus@100000:wiz@5070000: 408 <= 18000000
    [    1.899591] wiz bus@100000:wiz@5070000: 408 <= 18100000
    [    1.990453] wiz bus@100000:wiz@5070000: 404 <= 80000000
    [    2.002149] wiz bus@100000:wiz@5070000: 404 <= 0
    [    2.022289] wiz bus@100000:wiz@5070000: 480 <= 20000000
    [    2.032977] wiz bus@100000:wiz@5070000: 480 <= 30000000
    [    2.043042] wiz bus@100000:wiz@5070000: 4c0 <= 20000000
    [    2.053732] wiz bus@100000:wiz@5070000: 4c0 <= 30000000
    [    2.063800] wiz bus@100000:wiz@5070000: 500 <= 20000000
    [    2.074500] wiz bus@100000:wiz@5070000: 500 <= 30000000
    [    2.084609] wiz bus@100000:wiz@5070000: 540 <= 20000000
    [    2.095296] wiz bus@100000:wiz@5070000: 540 <= 30000000
    [   16.771750] wiz bus@100000:wiz@5070000: 40c <= 20000000
    [   16.786014] wiz bus@100000:wiz@5070000: 40c <= 20800000
    [   16.800272] wiz bus@100000:wiz@5070000: 40c <= 22800000
    [   16.840050] cdns-torrent-phy 5070000.serdes: 50 <= 252
    [   17.122941] (NULL device *): 0 <= 82
    [   17.133640] (NULL device *): 0 <= 382
    [   17.154653] cdns-torrent-phy 5070000.serdes: 171 <= 19
    [   17.163264] cdns-torrent-phy 5070000.serdes: 172 <= 19
    [   17.171870] cdns-torrent-phy 5070000.serdes: 1ff <= 1
    [   17.180392] cdns-torrent-phy 5070000.serdes: 171 <= 19
    [   17.188999] cdns-torrent-phy 5070000.serdes: 172 <= 19
    [   17.197607] cdns-torrent-phy 5070000.serdes: 1ff <= 1
    [   17.206126] cdns-torrent-phy 5070000.serdes: 171 <= 19
    [   17.214734] cdns-torrent-phy 5070000.serdes: 172 <= 19
    [   17.223342] cdns-torrent-phy 5070000.serdes: 1ff <= 1
    [   17.231862] cdns-torrent-phy 5070000.serdes: 171 <= 19
    [   17.240468] cdns-torrent-phy 5070000.serdes: 172 <= 19
    [   17.249075] cdns-torrent-phy 5070000.serdes: 1ff <= 1
    [   17.266824] wiz bus@100000:wiz@5070000: 480 <= 70000000
    [   17.284726] wiz bus@100000:wiz@5070000: 4c0 <= 70000000
    [   17.302626] wiz bus@100000:wiz@5070000: 500 <= 70000000
    [   17.320522] wiz bus@100000:wiz@5070000: 540 <= 70000000
    [   17.334855] wiz bus@100000:wiz@5070000: 40c <= a2800000

    更新了 U-boot:

    >0x05070408 <- 0x18000000
    >0x05070408 <- 0x18100000
    >0x05070408 <- 0x18100000
    >0x05070404 <- 0x80000000
    >0x05070404 <- 0x0
    >0x05070480 <- 0x20000000
    >0x05070480 <- 0x30000000
    >0x050704c0 <- 0x20000000
    >0x050704c0 <- 0x30000000
    >0x05070500 <- 0x20000000
    >0x05070500 <- 0x30000000
    >0x05070540 <- 0x20000000
    >0x05070540 <- 0x30000000
    >0x0507040c <- 0x20000000
    >0x0507040c <- 0x20800000
    >0x0507040c <- 0x22800000
    >0x050700a0 <- 0x252
    >0x00104070 <- 0x82
    >0x00104070 <- 0x82
    >0x00104070 <- 0x382
    >0x050782e2 <- 0x19
    >0x050782e4 <- 0x19
    >0x050783fe <- 0x1
    >0x050786e2 <- 0x19
    >0x050786e4 <- 0x19
    >0x050787fe <- 0x1
    >0x05078ae2 <- 0x19
    >0x05078ae4 <- 0x19
    >0x05078bfe <- 0x1
    >0x05078ee2 <- 0x19
    >0x05078ee4 <- 0x19
    >0x05078ffe <- 0x1
    >0x05070480 <- 0x70000000
    >0x050704c0 <- 0x70000000
    >0x05070500 <- 0x70000000
    >0x05070540 <- 0x70000000
    >0x0507040c <- 0xa2800000
    pcie_cdns_ti_start_user_link
    pcie_cdns_ti_user_writel: 0x02907004 0x00000001
    pcie_cdns_ti pcie@2900000: failed to bring up link

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

    您好、Michael:

    对不起,延误,我回到办公室。 看看是否可以重现错误日志。 我可以有 1 天时间 在 AM69 上设置这个吗?

    此致、

    Takuma

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

    没问题、我感谢您的帮助。

    如果我需要提供任何信息、请告诉我。

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

    您好、Michael:

    研究过的东西。  我们使用 j7200 compatible 字段来重现原始 POST 的错误日志。 纵观驱动程序、看起来不支持 AM69/J784S4。 J784S4 的器件数据与 J7200 略有不同、因此我认为该差异导致了错误。  

    总之、J784S4/AM69 中不支持 PCIe、为了实现这一点、需要 SDK 团队进行一些开发工作。 已提出添加支持的请求、但由于计划功能的备货、需要等待一段时间才能添加支持。

    此致、

    Takuma

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

    理解、Takuma、感谢您试用。

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

    您好、Michael:

    感谢您的理解。 将此 TT 保留为未结商品、直至满足要求。

    此致、

    Takuma