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.

[参考译文] AWR6843:EDMA 从 ADCBuf 传输至 L1 - DSTBIDX 问题

Guru**** 2553450 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1345672/awr6843-edma-transfer-from-adcbuf-to-l1---dstbidx-question

器件型号:AWR6843

尊敬的 TI 专家:

我有点困惑、因为在 SDK DPU 文件 rangeprocdsp.c 中、dstBIdx 被设置为零。

在 rangeprocdsp.c 源代码文件中、该文件位于 \mmwave_sdk_03_06_00_00-LTS src

下面是从第172行开始的代码:

syncACfg.aCount = dpParams->numAdcSamples * BYTES_PER_SAMP_1D;
syncACfg.bCount =MAX(dpParams->numRxAntennas / 2U, 1U) * dpParams->numChirpsPerChirpEvent;
syncACfg.srcBIdx = rangeProcObj->rxChanOffset * 2U ;
syncACfg.dstBIdx = 0U;

For 4 RX antennas, this works out to 

syncACfg.bCount = 2;

这是否意味着第二个 B 数组会覆盖目标缓冲区中的第一个 B 数组?

sprugs5b Keystone Architecture EDMA3 Controller gives an example of SRCBIDX being set to 0, and says on page 33, section 2.3.2.8, "SRCBIDX = 0000h (0): no address offset from the beginning of an array to the beginning of the next array. All arrays are fixed to the same beginning address." It goes on to say that the we should refer to the SRCBIDX examples for DSTBIDX.

Can you help me understand what it means that dstBIdx is set to zero?

Thank you for your help.

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

    大家好:

    请注意、对于 EDMA 的 syncA 类型、每个帐户都需要一个新的事件。   第二、此输入 EDMA 使用乒乓缓冲器、并且可以在每次触发时更改源地址和目标地址。 因此、可能并不意味着 dstBIdx 设置为零的任何内容。

    如需了解更多相关信息、请参见 Doxygen 文档、其网址为 :///C/C:/ti/mmwave_sdk_03_06_00_00-LTS/packages/ti/datapath/dpu/rangeproc/docs/doxygen/html/dpu_rangedsp.html

    请告诉我您正在使用 TI 雷达器件进行什么应用。  

    此致!

    自贡

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

    这帮了我,谢谢。

     dstBIdx 设置为0似乎能实现预期的功能:目标地址在连续 syncA 传输之间不会递增。
     函数 DPU_RangeProcDSP_Process 中 rangeprocdsp.c 中的代码显示 以下事件顺序:

    1. Ping 和 PONG 传输已启动
    2. Ping 在 L1的 ping adcDataIn 缓冲区中处理
    3. Ping 传输开始(相对于第一个 Ping、该器件的源地址会按 srcBIdx = 2* numAdcSamples*sizeof (complex)递增 、但其目标地址相同- L1中的 ping adcDataIn 缓冲区)
    4. Pong 在 L1的 pong adcDataIn 缓冲器中处理
    5. PONG 传输已启动 (再次相对于第一个 PONG、此器件的源地址会按 srcBIdx = 2*numAdcSamples*sizeof (complex)递增 、但其目标地址相同- L1中的 Pong ADcDataIn 缓冲器)
    6. 第二个 ping 在  L1的 ping adcDataIn 缓冲区中处理
    7. 在  L1的 pong adcDataIn 缓冲器中处理第二个 pong

    在 rangeProcDSP_ConfigDataInEDMA 函数中 、在 rangeprocdsp.c 中、 Ping 设置为传输零和二个天线、而 pong 设置为传输天线1和3。 这意味着  DPU_RangeProcDSP_Process 中的交替执行顺序 将处理天线零、然后是天线一、然后是天线二、最后是天线三。

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

    大家好:

    这样、EDMA 数据目标上的数据进程将在下一个 EDMA 开始之前完成。  这就是目标地址可以相同的原因。  

    很高兴您明白了。  请告诉我我们是否可以关闭该主题。  

    此致!
    自贡