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.

[参考译文] AM5748:将 EMAC 缓冲区描述符从 CPPI RAM 移动到外部存储器(DDR)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1504252/am5748-moving-emac-buffer-descriptors-from-cppi-ram-to-external-memory-ddr

部件号:AM5748

工具/软件:

您好:

在基于 SYSBIOS 的应用中、我们正在配置从 CPPI RAM 到外部 DDR 存储器的 EMAC 缓冲区描述符。 虽然当缓冲区描述符在 CPPI RAM (0x48486000 - 0x48487FFF)中分配时、数据包传输和接收功能正常、但在切换到外部 DDR 存储器(0x90000000)时、它们无法正常工作。 我已经通过在地址0x90000000处成功地对外部 DDR 存储器进行读取和写入来确认存储器访问。

此外、我还尝试使用转换后的地址、如 以下文章中所述:

将 EMAC CPPI RAM 用于缓冲区描述符-处理器论坛-处理器- TI E2E 支持论坛

我还在下面包含了工程配置文件和 EMAC 接收 API 详细信息。

项目配置文件

var attrs0 =新的 MMU.DescriptorAttrs();

Mmu.initDescAttrsMeta(attrs0);
attrs0.type = MMU.DescriptorType_block;//块描述符
attrs0.可共享=2;//可共享
attrs.0attrIndx = 2;

Mmu.setSecondLevelDescMeta(0x90000000、0x90000000、attrs0);

EMAC 接收 API 如下所示

int32_t receive_packet (uint8_t* dataPacket)


//将零写入 RX DMA 状态头描述符指针
*(uint32_t *)(0x48484A20)= 0;

uint32_t bdAddress=0x90000000;//不起作用
//uint32_t bdAddress=0x48487000;//工作

EMAC_DESC *pDESC;
pDESC =(EMAC_DESC *)(bdAddress);
pDESC->pNext =0;
pDESC->pBuffer=&dataPacket[0];
pDESC->BufOffLen=1518;
pDESC->pktFlgLen = EMAC_BUF_DESC_OWNER;

//开始转移
*(uint32_t *)(0x48484A20)= bdAddress;

while ((pDESC->pktFlgLen & EMAC_BUF_DESC_Owner)== EMAC_BUF_DESC_Owner)

//等待完成
    睡眠(1);
}
emac_osalCacheInv (void *)&dataPacket[0]、1518);

返回 pDESC->BufOffLen;

}

建议会有所帮助  

谢谢、

Sandeep

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

    尊敬的  Sandeep:

    Unknown 说:
    我已通过在地址0x90000000处成功读取和写入外部 DDR 存储器来确认存储器访问。

    您能否解释一下如何访问 DDR 存储器(0x90000000)? 至于测试、您是否使用过任何 TI 驱动程序示例?

    此致、

    Karthik

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

    您好 Karthik、

    我没有使用任何 TI 驱动程序示例来测试 DDR 存储器。 这时、我为存储器地址(0x90000000)分配了一个指针、并对其执行不同的读取和写入操作。

     

    谢谢、

    Sandeep

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

    尊敬的  Sandeep:

    [报价 userid="394275" url="~/support/processors-group/processors/f/processors-forum/1504252/am5748-moving-emac-buffer-descriptors-from-cppi-ram-to-external-memory-ddr/5793036 #5793036"]我尚未使用任何 TI 驱动程序示例来测试 DDR 存储器。 相反、我分配了一个指向内存地址(0x90000000)的指针、并对其执行不同的读取和写入操作。

    我会更仔细地研究一下、然后再回来联系您。

    此致、

    Karthik

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

    您好 Karthik、

    您是否有机会更深入地研究过它?

    如果 有任何更新或其他信息、请告知我。

    谢谢、

    Sandeep

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

    尊敬的 Sandeep:

    [报价 userid="394275" url="~/support/processors-group/processors/f/processors-forum/1504252/am5748-moving-emac-buffer-descriptors-from-cppi-ram-to-external-memory-ddr/5793036 #5793036"]我尚未使用任何 TI 驱动程序示例来测试 DDR 存储器。 相反、我为内存地址(0x90000000)分配了一个指针、并使用它执行不同的读取和写入操作

    您的应用代码和数据是从 DDR 存储器运行、还是使用不同的存储器区域(例如内部 RAM、OCMC)? 如果可能、您能否共享您的应用程序 .map 文件以确认内存分配?

    DDR 存储器中的 EMAC 缓冲区描述符是否与32位字边界对齐?


    您能否解释一下将 EMAC 缓冲区描述符从 CPPI RAM 移动到 DDR 存储器的原因是什么?

    此致、

    Karthik

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

    您好 Karthik、

    应用程序代码和数据从 DDR 存储器运行。  

    您能解释一下、将 EMAC 缓冲区描述符从 CPPI RAM 移动到 DDR 存储器的原因是什么?

    我们尝试将 EMAC 缓冲区描述符从 CPPI RAM 移动到 DDR、以将以太网吞吐量提高到大约950Mbps。   

    DDR 存储器中的 EMAC 缓冲区描述符是否与32位字边界对齐?

    是的、它与32位字边界对齐

    e2e.ti.com/.../AM5748_5F00_EMAC_5F00_Ethernet_5F00_standalone_5F00_map.txt

    谢谢、

    Sandeep

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

    尊敬的  Sandeep:

    Unknown 说:
    我已通过成功读取和写入地址0x90000000处的外部 DDR 存储器来确认存储器访问。

    您能否共享此.map 文件? 可以尝试在0x80000000这个存储器范围中使用吗?  

    此致、

    Karthik

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

    您好  Karthik、

    感谢您的支持。 问题已解决。 在验证接收状态之前、必须先取消缓存验证。

    谢谢、

    Sandeep