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.

[参考译文] AM2434:使用 PRU (ICSS) RGMII 接口与 FPGA 通信

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1450160/am2434-use-pru-icss-rgmii-interface-to-communicate-with-fpga

器件型号:AM2434
Thread 中讨论的其他器件: SYSBIOS、SysConfig

工具与软件:

您好!
我想通过 PRU (ICSS)使用 RGMII 接口在 am2434和也实现 RGMII 的 FPGA 之间进行通信。 我可以使用 PRU 固件来实现此目的吗? 进行通信所需的时间应小于1us。 虽然以太网可能是一个选项、但我的项目不需要它、但快速的原始数据通信将在内部进行。 此外、与 PRU 内核通信的 R5F 内核应运行裸机。 你能举个例子来说明如何配置项目吗?

提前感谢您。

此致

卢卡斯

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

    大家好、我已将此主题分配给能够讨论选项的专家

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

    大家好、Lucas:

      RGMII 接口可从 PRU 侧对裸机进行编程。 接收和发送有64字节 FIFO PRU 通过宽边接口提供-单周期将32字节放入 PRU 寄存器、单周期将64字节发送到传输 FIFO。 您可以选择接收带或不带前导码的原始帧。  

    为了实现具有时间同步功能的超低延迟千兆位以太网、我们采用 SORTE_G 协议、最多可扩展到255个器件。 它还可用于在1us 周期时间内实现芯片间连接。

    SORTE_G 视频: https://www.ti.com/video/6314523951112

    SORTE_G 项目: https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am243x/SORTE_G

    假设您要做的是少 Phy RGMII 交叉连接。 在这种情况下、需要删除对 phy 链路的检查。

    通常、ICSS_G 具有等效于~50k LE、可以替代不支持千兆位 LVDS 的低端 FPGA。 只是想知道这里的 FPGA 用例是什么以及它是否可以被 ICSS_G 所取代

    -托马斯

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

    您好、Thomas:
    感谢您的快速响应。 是的、我 要做的是减少 RGMII 交叉连接。
    FPGA 将运行一些较低级别的控制环路功能并控制硬件、而 R5f 内核则负责高级控制环路和其他通信任务。
    控制环路应以50kHz 的频率运行、因此 FPGA 应将其数据发送到 r5f 内核、并在20us 内接收到高级别控制环路数据。

    我将签出 SORTE_G 项目。

    谢谢你。

    -卢卡斯

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

    您好、Thomas:

     因为我手头没有 LP、所以我在两块 am243x-EVM 电路板上测试了 SORTE_G am243x 示例。 由于 TH PHY 在两个板上是相同的、因此示例应正常工作、但 LED 和控制器除外、我手动进行了器件选择。  
    PRU 内核如何与 R5F 内核通信?

    可能我遗漏了一些内容、但据我了解、R5F 内核只加载 PRU 固件并启动 PRU 内核、但不与它们交换任何数据?

    再次感谢。

    -卢卡斯

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

    大家好、Lucas:

    我来回答您的问题。

    PRU 器件代码 在收到并存储控制器输出数据帧后触发 ARM 事件。

    在文件 ioex_G.asm 中:

           ;生成中断以通知 APPL

           LDI           R31、IRQ_OUT_DATA_READY              ;生成 int

    在 ARM 模式下、文件 SORTE_g_app.c 中有一个 ISR 用于接收此中断。

    静态空 PRU_IsrFxn ()

    此致、

     Thomas

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

    您好、Thomas:

    再次感谢快速回复。 我找到了此 ISR、但它似乎从不进入它。 可能是 EVM 板的配置问题。
    对于通信部分、为了获取数据、我必须从 PRU_ICSSG1_DRAM0_SLV_RAM 中读取偏移20、如 API 中所述?
    如何将数据从 R5F 发送到 PRU 以将该数据发送出去?

    此致、

    卢卡斯

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

    大家好、Lucas:

    当您将软件从 LP 移植到 EVM 时、是否还在 SYSBIOS 中移植了中断配置? 可能缺少该文件、并且未配置 PRU 到 ARM 中断...

    SORTE_G 器件使用存储器共享接口来发送输入数据或接收输出数据。 我不记得顶端存在 PRU 共享存储器中的地址、但记得存储器位置 可通过 ARM 应用程序代码配置。

    1.查看 IO_EX 代码,输入数据(从设备发送到控制器的数据)如下:

    IOEX_CMP0_LOAD_DATA:
    ; load payload from PRU data memory
        ldi		TEMP_REG_1.w0, DEVICE_INDATA_FRAME_BUFFER_PTR
        lbco	&TEMP_REG_1.w0, ICSS_SHARED_RAM_CONST, TEMP_REG_1.w0, 2
        lbco	&R2.b0, PRU1_DMEM_CONST, TEMP_REG_1.w0, b0

    DEVICE_INDATA_FRAME_BUFFER_ptr 具有由 ARM 应用程序设置的存储器基指针。 传输的数据字节确实驻留在 PRU1数据 RAM (PRU1_DMEM_CONST)中。

    2.输出数据(器件从控制器接收的数据)  

    	; calculate write pointer
    	lbco	&TEMP_REG_1.w0, ICSS_SHARED_RAM_CONST, DEVICE_MASTER_FRAME_BUFFER_PTR, 2
    	add		TEMP_REG_1.w0, TEMP_REG_1.w0, RX_BYTE_CNT
    	SBCO	&R2, PRU1_DMEM_CONST, TEMP_REG_1.w0, 32

    此处的 device_master_frame_buffer_ptr 具有由 ARM 应用程序设置的基址。 正在获取的数据字节
    传输的确实也驻留在 PRU1数据存储器中( PRU1_DMEM_CONST)
    ARM 应用需要与 PRU1_DMEM 中的存储器进行连接、才能发送数据或接收数据。 
    如果您有其他问题、请告诉我。
    此致、
    Thomas
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas:
    示例 现在大多了工作、我可以通过在调试内存查看器中更改数据并重新启动 PRUS 来传输数据。

    是否可以使 PRU 持续运行、并在数据更改或中断触发时自动开始传输?

    在 SysConfig 中到底可以在哪里配置 PRU 到 ARM 中断?  

    谢谢。此致
    卢卡斯

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

    大家好、Lucas:

    很抱歉因为假日季节而延迟。

     无论数据数组中是否有任何变化、SORTE 协议都会定期在循环中通过以太网发送数据。

    在 PRU (ICSS)部分配置 PRU 中断-请参阅屏幕截图。

    此致、

     Thomas

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

    您好、Thomas:

    感谢您的答复。

    我还有一个步骤、尝试使用 pruicss MII_G_RT 模块 将数据直接输出到高速连接接头。 模块能否创建其数据时钟或者是否需要一个外部时钟源? 我无法使用 IO-Link 分线板找到任何输出信号。
    我尝试了 从 syscfg->PRU (ICSS)->Additional ICSS settings->MII_g_RT 选项卡配置 pinmux、并调整了 PRU 汇编器寄存器配置。

    此致

    卢卡斯

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

    大家好、Lucas:

    让我们在通话中继续讨论您的其他要求和问题。

    我现在将关闭该工单。

    此致、

     Thomas