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.

[参考译文] TM4C1294KCPDT:TI-RTOS 2.16 -我的可重入 ISR ...任何环路?

Guru**** 2555630 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/844663/tm4c1294kcpdt-ti-rtos-2-16---my-re-entrant-isr-any-loophole

器件型号:TM4C1294KCPDT
Thread 中讨论的其他器件:SYSBIOS

尊敬的支持团队:

我们有一个连接到多个数字输入中断的 ISR;下面是代码片段。 消息队列(sMsgQId)在多个中断之间共享。 我看到 Mailbox_post ()内的队列更新受到 Hwi_disable 和 Hwi_restore 的保护。 IsrCallback 中使用的所有其他变量都是局部变量。 您是否在 IsrCallback 内部看到任何其他可破坏可重入性的环孔?

无效
DigitalIO::IsrCallback (uint32 gpioHwId)


uint32 hwState = 0;
HalErr halError = HalGpioRead (static_cast (gpioHwId)、
hwState (hwState);

if (HAL_eok =halError)

IOControlMsgData msgTxBuffer;
msgTxBuffer.HWID = static_cast (gpioHwId);
msgTxBuffer.hwState = hwState;

if (nulptr!= DigitalIO::sMsgQId)

OsaMsgQSend (DigitalIO::sMsgQId、
static_cast (msgTxBuffer)、
sizeof (IOControlMsgData)、
OSA_NO_WAIT);


谢谢

Abhijit

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

    尊敬的 Abhijit:

    我不知道 OsaMsgQSend 的实现、但假设它只是 Mailbox_post 的包装程序、上面的代码看起来不错。

    您是否遇到问题? 你是否使用 Hwi 来创建 ISR?  

    Todd

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

    您好 Todd、

    感谢您的回答。

    是的、 OsaMsgQSend 是 Mailbox_post 的包装程序。

    我们刚刚开发了该模块、但尚未对其进行全面测试。

    关于您的问题-您是否使用 Hwi 来创建 ISR? 我不理解这个问题。 我们使用的是 Tiva GPIO 驱动程序。

    谢谢、此致

    Abhijit

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

    Abhijit、

    您是指 TivaWare GPIO 驱动程序还是 TI-RTOS GPIO 驱动程序(例如 ti/drivers/GPIC.h)。 如果您使用的是 TivaWare、请确保不要使用 IntRegister API。 TI-RTOS 管理矢量表、因此应使用 ti/sysbios/hal/hwi 模块(正如 TI-RTOS GPIO 驱动程序所做的那样)。

    Todd