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.

[参考译文] PROCESSOR-SDK-AM64X:pci_buf_transfer 示例仅在电路板上电后的首次运行时有效

Guru**** 2482225 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on

器件型号:PROCESSOR-SDK-AM64X

工具与软件:

使用 SDK 9.01 (支持这些 PCIe 示例的最后一个构建)并 在两个 AM64 EVM 电路板上运行 mcu_plus_sdk_am64x_09_01_00_41\examples\drivers\pcie_buf_transfer。 一个板作为根复合体运行、另一个作为端点运行。 示例应用程序在电路板上电后首次正常工作、但如果我再次加载并运行测试应用、而没有对电路板进行下电上电、则测试失败。

很显然、每次处理器复位时不会对硬件进行下电上电、因此我假设在软件复位/重新加载后必须调用一些 PCIe 驱动程序函数、才能使 PCIe 接口再次正常工作。 但是、我在 TRM 和 AM64x 评估模块用户指南中进行了搜索、却看不到任何指示要采取步骤的内容。 希望有人可以为我提供有关这方面的示例或文档。

谢谢!

Ryan

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

    您好、 Ryan、

    感谢您的提问。

    [报价 userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on "]mcu_plus_sdk_am64x_09_01_00_41

    您是否可以在最新版本的"SDK-AM64X软件开发套件(MCU-PLUS-SDK)| TI.com 上尝试相同操作

    [quote userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on 令人高兴的是、有人可以给我指一个有关此问题的示例或文档

    AM64x MCU+ SDK:PCIe 缓冲区传输 RC

    此致

    Ashwani

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

    尊敬的 Ashwani:

    感谢您的答复。

    您可以在最新版本"SDK-AM64X软件开发套件(MCU-PLUS-SDK)| TI.com 吗

    我阅读的其他 E2E 帖子表明、这些示例在内部版本9.02及更高版本(包括最新的10.0版本)中已损坏。 这就是为什么我提到9.01是支持这些示例的最后一个构建的原因。

    AM64x MCU+ SDK:PCIe 缓冲区传输 RC

    是的、我已经阅读过此页面、它没有记录重新初始化 PCIe 接口以使其能够正常工作所需的任何内容、而不必在运行示例应用之间为电路板断电和重新启动。 该链路中所述的电缆。

    谢谢!

    Ryan

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

    这里还有一些关于示例第二次运行时出现故障的附加信息、根复合体写入的数据似乎无法按顺序到达端点。 如果我在演示应用的末尾设置一个断点、我可以看到缺少一些数据:


    然后,如果我在终点上移动到行,并再次运行 CacheP_inv()调用,它会拾取之前显示为0的剩余内存段。


    该示例假设内存将按地址区域从低到高的顺序更新、因此我猜这是驱动程序的预期行为、这里似乎工作不正常。 该驱动程序在电路板上电后首次正常工作、只有在再次运行该示例而不对电路板进行下电上电时才会出现此问题。

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

    为了确认其他 E2E 博文中报告的内容、我确实尝试了使用10.00 SDK 运行缓冲区传输示例。 PCIe 功能在该版本中似乎不起作用、 PCIe_getVendorId 返回不正确的值、并且数据的基本传输根本无法正常工作。

    您是否有任何关于9.01驱动程序为什么传输数据不按我之前的评论中所示的顺序传输的信息?

    PCIe 驱动程序的更新是否预计会包含在下一个 SDK 版本中? 如果是、是否有任何关于何时可用的信息?

    谢谢!

    Ryan

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

    您好、Ryan、

    您正在尝试运行 AM64x-RTOS-RC <=>AM64x-RTOS-AM64x EP?

    则可以将 SDK 8.6用于此用例。  

    [报价 userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on "]mcu_plus_sdk_am64x_09_01_00_41\

    这只能在 SDK 9.1版本上首次加电时工作?

    [报价 userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on/5543466 #5543466"]我曾尝试使用10.00 SDK 运行缓冲区传输示例。 PCIe 功能似乎在该版本中不起作用、[/QUOT]

    使用 SDK 1.0、您只能在...上工作
    C:\ti\mcu_plus_sdk_am64x_10_00_00_20\examples\drivers\PCIe\PCIe_enumere_EP" (使用 AM64x 和 AM243x:基于 MCU+ SDK 的 PCIe 端点)

    PCIe 驱动程序的更新是否预计将包含在下一个 SDK 版本中? 如果是、是否有任何关于何时可用的信息?

    是...PCIe 驱动程序更新正在进行中。 有了 SDK 10.0、您便可以着手处理

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您正在尝试运行 AM64x-RTOS-RC <=>AM64x-RTOS-AM64 EP?

    我使用 pci_buf_transfer 示例在两个 AM64 EVM 板之间运行、一个作为 RC、另一个作为 EP。

    这只在 SDK 9.1版本中首次通电?

    是的、采用 SDK 9.1时、缓冲区传输演示首次有效。 第一次运行演示后、 数据在端点按顺序到达、演示测试失败。 请告诉我您是否能够看到我在之前评论中所附的屏幕截图、其中显示了这一点。

    我可以使用开关关闭 EVM 板再将其打开、这样演示就能再次正常工作。 问题是、如果我们发生软复位、 PCIe 接口将会出现此问题、那么对 SOC 进行下电上电不是长期解决方案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on/5545775 #5545775"]我可以使用开关关闭 EVM 板并将其重新打开、然后演示将重新开始。 问题是、如果我们有软复位、则 PCIe 接口将会有此问题、因此不是对 SOC 进行下电上电的长期解决方案。[/QUOT]

    您是首先在 RC 或 EP 上执行下电上电?

    此致

    Ashwani

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

    你似乎误解了这个问题。

    当我从调试器运行此示例应用时、它只在开启 EVM 后的第一次才有效。  

    步骤顺序、请仔细阅读:

    -接通 RC 电源

    -打开 EP 电源

    -加载应用程序  

    -通过 RC 上的调试探针启动应用程序

    -通过 EP 上的调试探针启动应用程序

    -测试通过,事情按预期运行。

    以上是可行的情况、以下是不可行的情况:

    -接通 RC 电源

    -打开 EP 电源

    -加载应用程序  

    -通过 RC 上的调试探针启动应用程序

    -通过 EP 上的调试探针启动应用程序

    -测试通过

    -停止 RC 和 EP 上的调试会话

    -加载应用程序  

    -通过 RC 上的调试探针启动应用程序

    -通过 EP 上的调试探针启动应用程序

    -测试失败数据被转移出了错误的顺序

    请注意我是如何在第一次调试会话后没有对电路板进行下电上电的。  

    为什么在再次运行示例应用时、数据传输/到达顺序不正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="451133" url="~/support/processors-group/processors/f/processors-forum/1440652/processor-sdk-am64x-pcie_buf_transfer-example-works-only-on-first-run-after-board-power-on/5548630 #5548630"]

    -通过 RC 上的调试探针启动应用程序

    -通过 EP 上的调试探针启动应用程序

    -测试通过

    -停止 RC 和 EP 上的调试会话

    -加载应用程序  

    -通过 RC 上的调试探针启动应用程序

    [报价]

    这不是预期的测试流程。

    停止 RC 和 EP 上的调试会话

    似乎是缓存存储器内容对于以前的运行没有清除的情况。

    您是否可以尝试系统复位选项并重新加载应用程序?

    此致

    Ashwani

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

    我添加了一些代码以重新初始化存储器区域并回写+使缓存失效、但我仍然看到相同的结果、因此我认为这与缓存未从上次运行中清除无关。

    系统重置已解决此问题、因此我认为此问题已解决、下面的新步骤已解决
    -通过 RC 上的调试探针启动应用程序
    -通过 EP 上的调试探针启动应用程序
    -测试通过
    -系统重置
    -加载应用程序
    -通过 RC 上的调试探针启动应用程序
    -通过 EP 上的调试探针启动应用程序

    我们的调试配置仅复位各个内核。 由于单个内核复位将触发我们最终设计中的系统复位、因此我们将能够在热复位后恢复 PCIe 连接、这是我关心的问题。

    感谢您的帮助。
    Ryan