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.

[参考译文] CCS/CC3100MOD:来自中断上下文的 Simplelink API

Guru**** 2540720 points
Other Parts Discussed in Thread: CC3100, CC3135, CC3120

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/846680/ccs-cc3100mod-simplelink-api-from-interrupt-context

器件型号:CC3100MOD
主题中讨论的其他器件:CC3100CC3135CC3120

工具/软件:Code Composer Studio

您好!

我目前正在使用 tm4c1294和 CC3100处理非操作系统应用程序。 设备硬件和固件工作正常。 但是、我对从中断例程调用 simplelink API 有疑问。 在 simplelink.h 文件中、我找到了以下注意事项:  

重要说明:
1.事件处理程序无法从事件的上下文中激活另一个 SimpleLink API
2.事件的数据在事件的上下文中有效。 任何应用数据
应复制或标记用户应用程序所需的内容
用户变量中
3.不建议延迟事件回调处理程序的执行

我在查看驱动程序实现以了解第一点、但我不确定原因。 我在论坛上也没有找到明确的答案。 我想简短地解释一下第(1)点背后的原因。

提前感谢。  

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

    我注意到,每当我从中断上下文调用任何驱动程序 API 时,它都会在 _SlNonOsSemGet ()函数内持续等待。  

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

    尊敬的 Lukasz:

    CC3100中的 SimpleLink 主机驱动程序不具有可重入性、因此主机驱动程序在完成现有命令的执行(完成回调函数)时无法启动新命令。

    最新的 CC3x20/CC3x35主机驱动程序没有此限制、但它与 CC3x00器件不兼容。

    此致、

    Sarah

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

    您好!

    感谢您的回答。 我之所以感到困惑、是因为 g_slNonOsCB 结构允许 Nonos_MAX_spawn_entries 条目、这些条目稍后由 _SlNonOsMainLoopTask (sl_Task)执行。 但我想、这允许有几个来自 CC3x IRQ 中断的已生成条目、而这些条目并未涉及可重入性。

    驱动程序实现中是否有任何限制可重入性的特定部分?

    谢谢。

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

    尊敬的 Lukasz:

    我认为没有一个地方限制了这一点。 如果您将 CC3100主机驱动程序与 CC3120/CC3135进行比较、您将看到许多差异。 我们还不支持自定义主机驱动程序。

    如果从回调上下文调用 SimpleLink API 对您很重要、则应移至 CC3120并使用最新的主机驱动程序。 尽管驱动程序架构有所不同、但 API 命令非常相似且易于迁移。 有关更多信息、请查看迁移指南的"主机驱动程序"部分: http://dev.ti.com/tirex/explore/node?node=APrGD0gEddqArGz5rQ7PkA__fc2e6sr__LATEST

    此致、

    Sarah