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.
工具与软件:
您好!
我想通过 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
假设您要做的是少 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