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.

[参考译文] CC3120:移植层中的互斥量实现

Guru**** 2543240 points
Other Parts Discussed in Thread: CC3120

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/655741/cc3120-mutex-implementation-in-porting-layer

器件型号:CC3120

CC3120的移植层中的实现方式令人困惑。 根据 SDK 的演示(使用 MSP432)、在 user.h 中显示

#define SL_LockObjLock (pLockObj、Timeout)         Mutex_lock (*(pLockObj))

它将忽略超时参数。 此外、在 cc_PAL.c 中、Mutex_lock 指向 MutexP_FreeRTOS.c、即:

uintptr_t MutexP_LOCK (MutexP_Handle handle)

   SemaphoreHandle_t xMutex =(SemaphoreHandle_t) handle;

   /*每10个节拍重试一次*/
   while (xSemaphoreTake递 归(xMutex、(TickType_t) 10)=pdFALSE){
       ;
   }

   返回(0);

总体而言、该实现方案有效地强制调用方永远等待并忽略超时参数、即使调用方希望其立即返回。 这样做是否有任何具体原因?

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

    正确、SimpleLink 主机驱动程序不会在上面引用的代码中使用超时参数。 也就是说、在您的应用中、您还必须忽略超时参数。 如果您希望在应用程序代码中包含超时、则可以使用 POSIX 层/RTOS 函数进行对象锁定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的奥斯汀:
    感谢你的答复,但这没有回答我的问题。 我的问题是、如果在 MSP432实现中忽略超时参数有任何具体原因?
    我认为这里的重点不是我是否想在代码中包含超时、更像是您在 MSP432参考设计中忽略超时的原因。 如果超时参数不重要、那么为什么会有超时参数? 如果超时参数很重要、为什么您的(TI)官方 MSP432参考实施毫无理由地不遵守该参数? 但是、SLStudio (Windows)端口确实会适当地实现超时。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bear、

    我不知道在主机驱动程序中不使用 TIMEOUT 参数的确切原因。 如果您看一下主机驱动程序中对 sl_LockObjLock 的引用、您会看到超时参数设置为 sl_OS_WAIT_FOREVER。 因此、我猜这个参数对驱动器功能从未如此重要。

    如果有任何重要原因不使用它、我会向您回复并进行跟进。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有更新?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我收到了更新、被告知这只是来自旧代码的超时。 有一项任务要删除它。 请忽略该参数。