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.

[参考译文] AWR1642:如何了解毫米波链路中的 mmWave_sawn

Guru**** 2585275 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/617399/awr1642-how-to-understand-mmwave_spawn-in-mmwave-link

器件型号:AWR1642

你好、冠军、
  我的客户正在查看 MMWAVE_SDK_01_00_00_05中的毫米波演示。 我对代码中的 mmWave_sprawn 函数有疑问。 此函数在以下代码中注册到 rlDevicePowerOn。

/*初始化 OSI 队列接口*/
RlApp_ClientCtx.osib.queue.rlOsiSpawn = mmwave_spawn (&M); 
  1. 在该函数内部、它将输入函数点和参数保存在 gMMWave_MCB.ptrSpawnFxnFreeList 中、然后向其他任务发布一个信号量。 我的油炸玉米饼是什么时候
调用 mmwave_spawn、函数点及其使用的参数是什么。 

静态 rlInt32_t mmwave_spawn
(
RL_P_OSI_spawn_entry fxn、
常量 void* pValue、
uint32_t flags
)
{
MMWAVE_SpawnFxnNodes* ptrSpawnFxnNode;
uintptr_t 密钥;
内部32_t RetVal = 0;

/*关键部分:无锯条列表是可访问的关键资源
*来自多个上下文*/
KEY = Hwip_disable();
ptrSpawnFxnNode =(MMWAVE_SpawnFxnNodes*) MMWAVE_LISRemove ((MMWAVE_ListNodes**)&gMMWave_MCB.ptrSpawnFxnFreeList);
Hwip_restore (key);

/*我们是否收到了条目? *
if (ptrSpawnFxnNode!=空)
{
/*是:填充条目*/
ptrSpawnFxnNode->fawnEntry = fxn;
ptrSpawnFxnNode->arg = pValue;

/*关键部分:已生成的活动列表是可访问的关键资源
*来自多个上下文*/
KEY = Hwip_disable();
MMWAVE_LISADD ((MMWAVE_ListNodes**)&gMMWave_MCB.ptrSpawnFxnActiveList、(MMWAVE_ListNodes*) ptrSpawnFxnNode);
Hwip_restore (key);

/*跟踪收到的已生成消息的数量*/
gMMWave_MCB.sedaveCounter++;

/*唤醒毫米波执行线程*/
SemaphoreP_POST (gMMWAVE_MCB.linkSemHandle);
}
其他
{
/*错误:不存在无跨度节点。 如果所有的锯动函数都发生这种情况
*尚未调用执行毫米波控制 API。 增量
*报告此情况的统计数据*/
gMMWave_MCB.sedaveoverflow++;

/*设置返回值以指示错误。 *
RetVal =-1;
}
返回 RetVal;
} 



2.我们为什么将 spwan 列表大小定义为4 (MMWAVE_MAX_NUM_spawn_list)? 在这种情况下、我们需要使用此列表来保存多个函数调用。


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

    尊敬的 Adam:

    您能否检查以下涉及此函数的 html 文件。

    在 SDK 目录下、通常位于:

    文件://C:/ti/mmwave_sdk_01_00_00_05/packages/ti/control/mmwave/docs/doxygen/html/group___m_m_w_a_v_e___i_n_t_e_r_n_a_l___f_u_n_c_t_i_o_n.html #ga35cb2c4165072f9dd72960c67b919e23

    静态 rlInt32_t mmwave_spawn ( RL_P_OSI_spawn_entry   FXn
    const void *   pValue、
    uint32_t   标志  
    )
    静态

    说明
    这是毫米波链路注册的回调函数、调用该函数是为了确保在不同的执行上下文中调用 sawn 函数

    参数
    [在] fxn 指向要在不同上下文中执行的函数的指针
    [在] pValue 要传递给函数的数据指针
    [在] 标志 用于指示首选项的标志
    返回值

    成功 -0
    误差 -<0

    谢谢、

    Vaibhav

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

    您好:Vaibhav、
      我已经找到了这些解释。 我想这是从代码的注释中得到的。 您能提供更多信息吗?

    谢谢、
    Adam

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

    您好、Adam、

    mmWaveLink 用于通过邮箱向 radarSS 发送命令和接收响应/异步事件。 在相同的 CMD 发送调用流程中接收到对任何命令的响应、但为了接收任何异步事件消息、mmWaveLink 会生成一个函数以在不同上下文中读取此消息。 通常、当 mmWaveLink 只负责从一个内核(此处为 radarSS)发送/接收消息时、MSS 应用不需要多个启动列表。

    在 MSS 解除屏蔽之前、RadarSS 邮箱不会重新填充新数据。 mmWaveLink 仅在从已生成上下文中读取完整的异步事件消息时解除对雷达邮箱的屏蔽。  

    请浏览这些函数以了解流程-

    /*在异步事件消息到达时*/

    rlDriverHostIrqHandler -> mmWave_spawn

    /* sprawn 函数、读取数据和解除邮箱掩码(刷新)*/

    mmWave_executeLink -> rlDriverMsgReadSpawnCtx -> rlDriverMsgRead -> rlDeviceUnMaskHostIrq -> Mailbox_readFlush

    此致、

    Jitendra Gupta

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

    您好、Gupta、
       非常感谢您的解释。 我现在很清楚。
        我对 C:\TI\mmWave_SDK_01_00_00_05\packages/ti\control 下的 mmwavelink 和 mmWave 文件夹之间的区别有一个更详细的问题。  为什么 我们有两个控制层、  客户需要直接调用哪一层?

    谢谢、
    Adam