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.

[参考译文] AWR2944P:关于 advframe 配置时间的问题

Guru**** 2439710 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1528350/awr2944p-question-about-advframe-config-time

器件型号:AWR2944P


工具/软件:

尊敬的专家:
使用 2x44p 进行波形配置时、当前配置时间会很长。 通过 MSS 执行相同的配置时、调用  rlSetAdvFrameConfig 只需 91us。 但是、在 DSP 端执行波形配置时、调用 rlSetAdvFrameConfig  需要 13ms。 由于空间和时序限制、我们只能在 DSP 上进行波形配置。 通过观察、我发现子帧调用的时间过长主要是由于 rlDriverCmdSendRetry 的持续时间延长所致。 您是否遇到过类似的现象、有哪些解决方案可以解决该问题?
此致、
Patrick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Patrick:

    对于这个 API 的使用、您能否告诉我调用该 API 的函数/任务优先级是多少? 我怀疑可能还有一些更高优先级的任务优先于此。 此外、DSP 内核实际上以比 MSS 内核更高的频率运行、因此时序应该非常相似、并且不应该存在这种差异。  

    另外、您能告诉我代码部分位于哪个内存范围内吗? 是 DSS_L2 还是 L3 存储器范围? 这些内存范围是缓存的还是未缓存的?

    谢谢、

    Pradipta.  

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

    你好  Pladipta

    首先、优先级定为 6 级、被列为高优先级。 相关的代码段位于 DSS L2 范围内。 您能指导我如何确定此内存范围是缓存的还是非缓存的?
    其次、在同一 DSP 任务中、我尝试配置配置文件和其他 WFP 设置。 此过程没有消耗过多的时间、耗时小于 1ms。 但是、函数 rlSetAdvFrameConfig 导致持续时间显著延长、超过 13ms。  
    非常感谢您关注此问题。 我期待着你的宝贵回应。
    此致、
    Patrick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Patrick:

    链接器文件可以帮助我们了解 L2 是否已缓存。 另外,对于 Adv 帧配置,您可以共享您要传递的参数集。 如果我对问题的理解正确、则 MSS 上的相同参数设置用时会更短。  

    谢谢、

    Pradipta.  

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

    你好 Pladipta

     L2 显示为 BLOW、我没有看到任何缓存。   

     00800000 00800000 0002a4e0 0002a4e0 r-x
    00800000 00800000 00000200 00000200 r-x .text:vectors
    00800200 00800200 0002a2e0 0002a2e0 r-x .text
    0082a500 0082a500 0000c120 00004c00 rw-
    0082a500 0082a500 00004c00 00004c00 rw-.task_stack
    0082f100 0082f100 00004520 00000000 rw-.far
    00833620 00833620 00002000 00000000 RW-.stack
    00835620 00835620 00001000 00000000 rw-.sysmem   

    ParamSet:

      /*填充帧配置:*/
      advFrameCfg.frameSeq.numOfSubFrames = 2
      advFrameCfg.frameSeq.forceProfile = 1
      advFrameCfg.frameSeq.numFrames = 1
      advFrameCfg.frameSeq.triggerSelect = 1
      advFrameCfg.frameSeq.frameTrigDelay = 0
      advFrameCfg.frameData.numSubFrames = 2

      /*填充 sub_frame 配置:*/
      SubFrameNum = 0;   

      /*初始化 sub_frame 配置:*/
      memset ((void *) advFrameCfg.frameSeq.subFrameCfg[subFrameNum]0sizeof (rlSubFrameCfg_t);

      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].forceProfileIdx = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdx = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfChirps = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numLoops = 768
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].burstPeriodicity =(uint32_t)(40 * 1000000 / 5);
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdxOffset = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurst = 1
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurstLoops = 1
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].subFramePeriodicity =(uint32_t)(40 * 1000000 / 5);
      SubFrameNum = 1;   

      /*初始化 sub_frame 配置:*/
      // memset ((void *)&advFrameCfg.frameSeq.subFrameCfg[subFrameNum]、0、sizeof (rlSubFrameCfg_t);

      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].forceProfileIdx = 1
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdx = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfChirps = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numLoops = 384
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].burstPeriodicity =(uint32_t)(12 * 1000000 / 5);
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdxOffset = 0
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurst = 1
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurstLoops = 1
      advFrameCfg.frameSeq.subFrameCfg[subFrameNum].subFramePeriodicity =(uint32_t)(12 * 1000000 / 5);
    此致、
    Patrick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Patrick:

    执行一些操作。

    1) 超速缓存 L2 应有助于加快 MSS 的进程、因为 MSS_L2 是高速缓存的。  

    2) 当 DSS 通过邮箱向 RSS 发送消息时、RSS 将回复消息、DSS 必须读取该消息才能完成命令响应协议并结束通信。 请确认响应的读取优先级也高于其他任务。 由于时间差非常高、因此很可能是中间的一些其他任务会执行、从而导致此延迟。  

    在我们的调试中、您是否可以检查在 DSP 上执行哪些任务?

    谢谢、

    Pradipta.  

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

    你好  Pladipta

    我检查 DSP 的所有任务,波形配置任务具有最高优先级 ,将 miscCtl 从 3 更改为 7 后,帧配置时间从 13ms 更改为 1.7ms ,但仍然 需要 比 mss 更多的时间。 配置是否需要添加任何其他配置。

      /*启用高级线性调频脉冲配置*/
      stRFMiscCnf.miscCtl = 3U;  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Patrick:

    我在上一篇文章中提到的第 1 点和第 2 点有任何更新?

    谢谢、

    Pradipta.