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:使用 UDMA 将 GPMC 突发传输至 FPGA (TR 类型设置)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1160716/am2434-gpmc-burst-transfer-to-fpga-using-udma-tr-type-settings

器件型号:AM2434

大家好、  

我收到了客户的以下询问:

他们正在尝试设置 GPMC、以便使用 UDMA 将其突发传输到 FPGA。 它们指的是 SDK 中的示例代码、DMA 传输本身有效、但数据不正确。

他们的 FPGA 规格假设有8次突发、因此如果示例代码中的 TR 类型为类型15、则数据将在16次突发中传输。 他们希望将 DMA 传输的类型更改为8次突发、但即使他们将 TR 设置中的 flag_type 更改为3、传输也不会执行。

下面是他们使用的代码:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static void App_udmaTrpdInit(Udma_ChHandle chHandle,
uint8_t *trpdMem,
const void *destBuf,
const void *srcBuf,
uint32_t length)
{
CSL_UdmapTR15 *pTr;
uint32_t cqRingNum = Udma_chGetCqRingNum(chHandle);
·
/* Make TRPD with TR15 TR type */
UdmaUtils_makeTrpdTr15(trpdMem, 1U, cqRingNum);
·
/* Setup TR */
pTr = UdmaUtils_getTrpdTr15Pointer(trpdMem, 0U);
pTr->flags = CSL_FMK(UDMAP_TR_FLAGS_TYPE, CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_STATIC, 0U);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EOL, CSL_UDMAP_TR_FLAGS_EOL_MATCH_SOL_EOL);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EVENT_SIZE, CSL_UDMAP_TR_FLAGS_EVENT_SIZE_COMPLETION);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0, CSL_UDMAP_TR_FLAGS_TRIGGER_NONE);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0_TYPE, CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ALL);
pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER1, CSL_UDMAP_TR_FLAGS_TRIGGER_NONE);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

设置是否正确? 他们如何解决此问题、以便接收正确的数据?

此致、

Mari Tsunoda

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

    您好、Mari、

    很抱歉、未及时回复。   请在今天结束前回复。 如果没有、请随意 ping。

    此致、

    Prasad

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

    您好、Mari、

    这些设置看起来像是从下面的 uDMA 示例中复制的、这是正确的吗?

    您是说他们这样更改了代码吗?

    原始:  PTR->flags   = CSL_FMK (UDMAP_TR_FLAGS_TYPE、CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPLAKINDIRECTION);
    更新:    PTR->FLAGS   = CSL_FMK (UDMAP_TR_FLAGS_TYPE、CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE_MOVE_MOVE_TOL);

    此致、
    弗兰克

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

    您好、Frank、

    很抱歉、我看到它没有反映在我粘贴的代码中(可能是他们粘贴了错误的代码)、但他们按照您的指示调整了 TR 标志类型。

    此致、

    Mari

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

    您好、Mari、

    我就此咨询了内部专家、并获得了以下反馈:

    不清楚它们是什么意思的突发。 为什么他们认为 TR3会帮助将其减少为8?

    有关尺寸等的更多信息也会有所帮助。

    此致、
    弗兰克

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

    您好、Frank、

    改写-他们是否可以遵循一些示例代码、以便将其配置 为实现对 FPGA 进行读/写访问的8字突发访问?

    是否无需更改 TR 类型?  

    此致、

    Mari Tsunoda

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

    您好、Mari、

    感谢您的回答。 我们将对此进行研究、并将很快与您联系。

    此致、
    弗兰克

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

    Mari、

    咨询内部专家、我获得了以下其他反馈:

    所需的数据长度和突发大小是多少。

    此致、
    弗兰克

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

    您好、Frank、

    根据数据长度、您是指 FPGA 器件尺寸吗? 它们连接一个16位 FPGA。

    我将使用它们确认突发大小。

    此致、

    Mari

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

    您好、Mari、

    我正在寻求其他人来帮助解决这个问题、并寻求内部专家的更直接的支持。

    此致、
    弗兰克

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

    您好、Frank、

    谢谢你。 请随时更新。

    此致、

    Mari

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

    您好、Mari、

    您现在应该从内部专家那里获得更多直接支持。

    感谢您对此问题的耐心等待。

    此致、
    弗兰克

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

    您好、Frank、Ashwin、

    您能告诉我数据长度是什么意思吗?

    此致、

    Mari Tsunoda

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

    您好、Mari、

    对延迟答复表示歉意。

    我认为块复制通道用于 GPMC 传输。

    我们在 SOC 上只有正常容量信道、且其突发大小固定为64字节。 客户正在寻找的突发大小是多少?

    此致、

    Ashwin

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

    您好、Ashwin、

    它们正在寻找16字节的突发大小。

    此致、

    Mari

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

    您好、Mari、

    我正在咨询硬件专家、以了解 BCDMA 是否可以实现16字节突发。 很快就会回来。

    此外、我对传输参数还有一些疑问。 由于所需的突发次数为8、突发大小为16字节、我是否可以假设通过单个 DMA 触发器传输到 FPGA 的数据为128字节? 即,传递给 App_udmaTrpdInit()的参数"length"为128,对吧?

    此致、

    Ashwin

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

    您好、Ashwin、

    它们可以看到8个脉冲、每个脉冲16位、每个 DMA 的总数据传输为16字节。

    此致、

    Mari

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

    您好、Mari、

    FPGA 使用哪种地址? 它是存储器映射 GPMC 地址作为 DMA 目标吗?

    此致、

    Ashwin

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

    您好、Ashwin、

    [引用 userid="504368" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1160716/am2434-gpmc-burst-transfer-to-fpga-using-udma-tr-type-settings/4405421 #4405421"]是否是作为 DMA 目标的存储器映射 GPMC 地址?

    是的。

    最棒的

    Mari

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

    您好、Mari、

    您能否让客户尝试使用 TR15本身进行以下更改?

    以前:

      ptr ->icnt0  =长度
      PTR->icnt1  = 1U
      ptr -> dnt0 =长度
      ptr -> dnt1 = 1U
    之后:
       PTR->icnt0  =  2U
       ptr -> icnt1   = length/2
       ptr -> dnt0  = 2U
       ptr -> dnt1  = length/2
     
    如果长度为16字节,则将 icnt0设置为2,将 icnt1设置为8。 由于 icnt0设置为2、因此应以16位的突发发送数据。
    请尝试一下、并告知我们它是否起作用。
    此致、
    Ashwin