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.

[参考译文] RTOS/TMS320C6678:SRIO DIO 操作

Guru**** 2546490 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/603958/rtos-tms320c6678-srio-dio-operation

器件型号:TMS320C6678

工具/软件:TI-RTOS

你(们)好
我有一个包含 FPGA 和 DSP 的定制板。 我想通过 SRIO 将数据从 FPGA 发送到 DSP。
我希望 FPGA 在 DSP 存储器中写入数据。 在我学习了" sprugw1b.pdf "之后、我决定使用 DIO 并运行
" C:\ti\pdk_C6678_1_1_2_6\packages \ti\drv\exampleProjects\SRIO_LoopbackDioIsrexampleProject "示例。

根据第63页的" sprugw1b.pdf "、如果数据包类型为 nread、NWRITE ...、则 DSP 处于 DIO 运行模式
换句话说、当 FPGA 发送包括 SWRITE、Nread、NWRITE、DSP 接收到 DIO 数据包在内的数据包时。

问题1:
FPGA 中的哪个标头字段负责 DSP 存储器映射地址?

我在第168页学习了" pg007.pdf "、描述了数据包格式、如下所示。

问题2:
哪个帧字段决定了" sprugw1b.pdf "中图2-11中的 DSP 存储器地址、如下所示?

问题3:
为什么" WrPtr "是一个字节?

此致

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

    我已将此内容转发给 SRIO 专家。 他们的反馈应发布在此处。

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

    Q1/2:

    地址+ ext_addr + xamsbs 构成63位地址。 由于 SRIO 需要双字对齐、SRIO 寻址宽度为66位(或34或50、具体取决于 ext_addr 字段的大小)、因此 SRIO 数据包中的地址是双字地址。 缺少的3 lsb 和未对齐的字节在 wrsize+wrprt 中进行编码。

    由于 DSP 地址为32位宽:
    地址= DSP_ADDRESS >> 3.
    EXT_addr=0
    xamsbs=0

    Q3:WrPtr 为1位宽(不是1字节)、与 rdsize/wrsizeee 一起根据对齐方式对大小和"字节通道"进行编码
    (wrsize、wrptr)=编码(bytes_count、DSP_address 和0x7)
    对于 encode()算法,请查看 SRIO 规范。

    如果您的播放加载目标地址不是双字对齐的且超过7个字节、则必须在更多数据包中中断传输:
    前导未对齐的字节、len=dsp_address 和0x7、以对齐下一个传输
    2.一个或多个256字节的片段,双字对齐
    3.后续未对齐字节(最多7个字节)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    非常感谢您、Alberto。

    请指导我、我理解 您的正确。

    FTYPE 5 (NWRITE):  

    我应该完成以下在 DSP 中编写的步骤:

    1) 1)我应该将 DSP 地址3位向右移位、并在 标头的地址字段中写入地址。

    2) 2)我应该将"ext_addr"和"xamsbs"设置为零。

    3) 3)我应该根据3个剩余 lsb 位和编码算法来设置 WrPtr 和 WrSize。

    问题1:

    我学习了"sprugw1b.pdf "、编码算法没有任何问题!!!

    请给 我介绍一个参考、该参考解释了编码算法、或者如何设置"WrPTer"和"WrSize"字段?

    ftype 6 (SWRITE):

    标题字段中没有"WrPtr"和"WrSize"。  

    问题2:

    写入步骤是否与 Ftype5相同?

    如果答案是肯定的 、我应该对"WrPtr"和"WrSize"字段执行什么操作?

    如果答案是否定的、请指导我。

    此致

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

    你(们)好

    请回答我的问题。 我在等你。

    此致

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

    为什么没有人回答我?

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

    我在内部对此进行了升级。

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

    Keystone 串行 RapidIO 用户指南 sprugw1b 中未描述形成 RapidIO 数据包标头的详细信息、因为 Keystone 中的 SRIO 加载/存储单元(LSU)提供了提取和自动填充 RapidIO 数据包所有标头字段的机制。 总共有8个 LSU、每个 LSU 有自己的7个寄存器集。 LSU_Reg0-4用于存储“控制”信息,LSU_reg5-6用于存储“命令”信息和状态信息。 您可以咨询 FPGA 供应商、了解是否存在类似的结构 RapidIO 数据包头的机制/模块。

    Keystone 中的 RapidIO 符合 RapidIO 互连规范 REV2.2。 您还可以查看文档- RapidIOTm互连规范,第1部分:输入/输出逻辑,第4章数据包格式说明 ,www.rapidio.org/.../,以获取 directio 数据包标头字段说明。

    wdptr:字指针、与数据大小(读数大小和 wrsize)字段结合使用—请参阅表4-3、表4-4和第3.5节。
    读数大小:读事务的数据大小、与字指针(wdptr)位结合使用—请参阅表4-3和第3.5节。
    wrsize:与字指针(wdptr)位结合使用的子双字事务的写入数据大小-请参阅表4-4和第3.5节。

    通常、您为 Ftype 5列出的步骤是正确的。 有关"WrPtr"和"WrSize"字段设置、请参阅上述说明。
    对于 Ftype 6、没有 size 或 transaction ID 字段、因此基本上只需要步骤1和2、请参阅 RapidIO 规范中的4.1.8 Type 6数据包格式(流-写入类)。

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

    你(们)好

    非常感谢、我得到了我的答案。

    我有一些新的答案、如果您希望我开始新的线程。

    我将" C:\ti\pdk_C6678_1_1_2_6\packages/ti\drv\examplpleProjects\SRIO_TputBenchmarkingTestProject "设置为我的通过 SRIO 与 FPGA 进行通信的基本工程。

    我完成了以下步骤:

    1) 1)将端口设置为正常模式

    2) 2)将板设置为"board macro true"。

    3) 3)在 Core0上加载程序、但发生了一些问题。

    端口未初始化、我检查了 SPN_ERR_STAT、它的值为" 0x00000001 "。

    问题1:

    我应该如何解决这个问题? 我检查了更多状态寄存器、但无法解决问题。 请提供指导。

    我希望 FPGA 成为 DSP 和 FPGA 之间通信的主器件、我发现 SP_GEN_CTL (0xB13C)的值为" 0x00000000 "。

    问题2:

    是否需要更改 SP_GEN_CTL 值?

    问题3:

    当 DSP 和 FPGA 之间的链路产生错误(未初始化)时、如何对其进行调试并解决问题?

    此致

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

    请回答我!!!  

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

    你(们)好  

    为什么没有人回答!!!!

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

    Dariush

    您是否能够成功运行 SRIO_TputBenchmarkingTestProject 交叉板? 如 Readme.txt 中所述、


    要在上面显示的相同端口宽度和波特率下测试板对板、请执行以下操作
    需要对全局变量进行更改:(需要连接电路板
    直通分接卡使用具有 sRIO 开关的机箱。
     在消费类 EVM (RX 端、在内核0上加载.out 文件):
      1) testControl.SRIO_isLoopbackMode = false;
      2) 2)在启动生产者应用程序之前启动使用者应用程序。
     在 Producer EVM (TX 端、在内核1上加载.out 文件):
      1) testControl.SRIO_isLoopbackMode = false;
      2) testControl.SRIO_initCorenum = 1;
      3) 3)在使用者之后启动生产者


    您的 DSP 如何连接到 FPGA? 这些器件是否位于您的定制板上? 您是否已验证两个器件中的端口物理连接、通道宽度和波特率设置? 如果您能够运行 DSP 板对板基准测试、您是否已联系 FPGA 供应商解决端口初始化问题?

    此 e2e 线程可能会有所帮助: e2e.ti.com/.../224579

    应已在 SP_GEN_CTL (0xB13C)中设置 MASTER_ENABLE 位。 C6678的最新 PDK 2.0.6可从 以下位置获取:software-dl.ti.com/.../index_FDS.html

       /*设置端口常规 CSR:仅作为主设备启用执行*/
       CSL_SRIO_SetPortGeneralCSR (hSrio、0、1、0);

    此致、
    Garrett

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    非常感谢、请帮我。
    起初、我解释了我以前的作品:
    1) 1)我学习了" sprugw1b.pdf "。
    2) 2)我在环回模式下成功运行" C:\ti\pdk_C6678_1_1_2_6\packages/ti\drv\exampleProjects "中的所有 TI SRIO 示例。
    3) 3)我正在使用定制板、FPGA 通过 SRIO 连接到 DSP。 我在 FPGA 和 DSP 之间进行了测试
    按如下方式成功通过 SRIO:
    3_1)我的基础项目是" SRIO_TputBenchmarkingTestProject "。
    3_1) testControl.SRIO_isLoopbackMode = false;
    3_2) testControl。 SRIO_laneSpeedGbps = SRIO_lane 比率_3p125Gbps;
    3_3) FPGA 处于环回中。
    通过 FPGA 进行 Core0和 Core1通信、示例成功运行。

    现在、我希望 FPGA 充当主器件并将数据写入 DSP 存储器。
    我在" SRIO_TputBenchmarkingTestProject "项目中进行了一些更改。
    第一:
    1)我在 consumerTests()和 producterTests()函数中注释了 nread 和 type11测试函数。
    2) 2)对于 NWRITE、我简化了代码、core0可以成功地在 core1的 L2SRAM 中写入数据。
    我在环回模式下进行了测试。

    第二:
    在与 FPGA 通信的第一步中、我修改的项目。
    1) testControl.SRIO_isLoopbackMode = false;
    2) testControl。 SRIO_laneSpeedGbps = SRIO_lane 比率_3p125Gbps;
    3) testControl.SRIO_isBoardToBoard = true;
    4) 4)我在 Core0上加载了项目。
    当我运行 DSP 项目时、端口未初始化、我检查了 SPN_ERR_STAT、它的值为" 0x00000001 "。
    问题1:
    是否需要在" SRIO_TputBenchmarkingTestProject "项目中进行更多更改?
    请指导我。

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

    对于'FPGA 环回'、您的意思是您只是通过 FPGA 将 DSP 的 SRIO Tx 路由到 Rx 对吗?

    虽然'FPGA 环回'正常工作、但在与 FPGA 通信时'Port Not Initialized'、这似乎表明 FPGA 未针对端口物理连接、通道宽度或波特率进行正确初始化、并且您不需要在" SRIO_TputBenchmarkingTestProject "项目中进行更多更改即可仅获取 PORT_OK。 我建议您与 FPGA 供应商联系、以继续。

    此致、
    Garrett