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.

[参考译文] TDA4VM:c7x 上的分散/集中操作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1447412/tda4vm-scatter-gather-operations-on-c7x

器件型号:TDA4VM

工具与软件:

各位专家、您好!

想知道 C7x 是否支持分散/集中写/读存储器操作。

我们将  索引加载为 int16、这些索引可以指向输入图像中的任何位置。

是否有指令 可以帮助从存储器执行此类加载。
在 Processor SDK 中有适用于这种特定情况的示例吗?

提前感谢、

Akhil

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

    Akhil、

    让我看一下、然后返回。

    此致

    Shankari G.

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

    Akhil、

    我们来这里…

    有关使用散聚功能的一些信息。

    有关更多信息、请参阅:-  4.6. Enet—平台开发套件(PDK)- Jacinto 用户指南

    在为 J721e 安装 Processor SDK RTOS 时、请 访问 https://www.ti.com/tool/PROCESSOR-SDK-J721E

    您将在以下路径中找到用户指南。

    ---

    \ti-processor-sdk-rtos-j721e-evm-08_06_01_03.tar\ti-processor-sdk-rtos-j721e-evm-08_06_01_03\pdk_jacinto_08_06_01_03\docs\userguide\jacinto\modules\enet.html

    ---

    4.6.2.1.2.散聚

    从 SDK 8.5开始、Enet LLD 仅为数据包传输提供对 UDMA 散聚功能的支持。 散聚目前不支持数据包接收。

    针对散聚引入了 Enet LLD API 更改、这会破坏与以前的 SDK 的兼容性。 主要改变应用用来将以太网帧缓冲区和缓冲区长度传递给驱动程序的参数。

    为了与之前的 API 进行比较、我们考虑使用单个连续缓冲器的情况(即散射段数为1)。

    参数 SDK 8.4或更低版本 SDK 8.5+
    缓冲指针 EnetDma_PktInfo::bufPtr EnetDma_PktInfo::sgList.list[0].bufPtr
    原始缓冲区长度 EnetDma_PktInfo::orgBufLen EnetDma_PktInfo::sgList.list[0].segmentAllocLen
    已填充的缓冲区长度 EnetDma_PktInfo::userBufLen EnetDma_PktInfo::sgList.list[0].segmentFilledLen

    应用程序可以传递最多四个段用于数据包传输 ENET_UDMA_CPSW_MAX_SG_LIST、如所定义。 值得注意的是、Enet LLD 使用相同 EnetDma_PktInfo 类型的数据包接收、但仅强制执行单个段、因为当前未启用数据包接收的散聚。

    散聚列表信息由应用程序通过 EnetUdma_PktInfo::sgList 数据包信息结构的参数提供给驱动程序。 应用程序必须设置段EnetUdma_PktInfo::sgList.numScatterSegments EnetUdma_PktInfo::sgList.list[] 数()以及数组中每个段的缓冲指针和长度。

    相关结构如下所示:

    /*! 散聚列表条目*/
     typedef 结构 EnetUdma_SGListEntry_s
    
    /*! 指向散点片段的指针*/ 
    uint8_t * bufPtr
    /*! 散点片段中有效数据的长度*/ 
    uint32_t segmentFilledLen
    /*! 散点片段分配的缓冲区长度*/ 
    uint32_t segmentAllocLen
    } EnetUdma_SGListEntry
    
    /*! 数据包散点列表信息*/
     typedef 结构 EnetUdma_SGList_s
    
    /*! 数据包中有效散射段的数量*/ 
    uint32_t numScatterSegmentations
    /*! 具有有关每个单独散点分段的信息的 scatterList 数组*/ 
    EnetUdma_SGListEntry 列表[ENET_UDMA_CPSW_MAX_SG_LIST]
    }EnetUdma_SGList;
    
    /*! 数据包数据结构*/
     typedef 结构 En4024_contis Udma_Pkt
     { 
    ... 
    /*! 分散收集列表信息、用于传输要传输的数据包。 */ 
    EnetUdma_SGList sgList;
    } Encontribuation; Udma_Pkt
    
     /*! 表示 DMA 数据包的不透明句柄*/
     typedef struct Enabiroci_s Enabiri; Udma_Pkt Dma_Pkt 
    

    在 Enet LLD 与 lwIP 协议栈的集成中也启用了用于数据包传输的散聚。 请注意、 LWIP_NETIF_TX_SINGLE_PBUF 必须禁用 lwIP 才能将多个段传递到适配层和 Enet 驱动程序。

    在 Enet LLD 环回测试和 lwIP 示例应用中、默认启用散聚功能。

    此致

    Shankari G.

x 出现错误。请重试或与管理员联系。