总线技术|接口技术
直播中

李玲

7年用户 1260经验值
私信 关注

请问RTOS USBSetuPcb回调函数是在中断还是单独线程中处理的?

我正在开发一个项目,该项目使用 SDK 示例中的 EZ-USB FX3 USB 3.0 设备控制器和 RTOS。
不重要,但我目前的问题是:AppThread 主循环(用于以特定时间间隔同步 UART 通信)和异步 USB Setup 请求回调处理程序函数之间的 Uart 访问之间存在竞争条件。 -> 在执行主循环UART功能的同时,正在执行USB消息处理UART功能。

要解决这个问题,我需要知道的是:USBsetuPCB 是如何处理的。
- > 在处理 USB Setup 请求时,我的 RTOS AppThread 是否中断(并停止了?
还是在 RTOS 中生成另一个线程来并行处理 UsbRequest?

传达设置的一般信息:
(这不是我的代码,但传达了结构,USB和UART设置正确)


appThread_Entry () {applNinit (void) for (;;) {
        CyU3PThreadSleep(1000);
        len = CyU3PUartReceiveBytes( inBuf, 1, NULL);
    }
} A
pplNinit (void)
A
pplNinit (void) appusbSetupcb () vendorReq {
    CyU3PUsbRegisterSetupCallback(AppUsbSetupCB)
}
{
    case CY_U3P_USB_VENDOR_RQT:
    isHandled = VendorRequest(bReqType, bRequest, wValue, wIndex, wLength);
    return isHandled;
}
{
    CyU3PUartTransmitBytes( outBuf, 1, NULL);
    CyU3PUartReceiveBytes( inBuf, 1, NULL);
}
                                                                                                                                                                                                                                                                                                                                                                                                

回帖(1)

贾熹

2024-2-23 15:20:23
在EZ-USB FX3 SDK中,USB Setup回调函数是在中断上下文中执行的。换句话说,当设备收到USB Setup请求时,控制器会中断处理器并调用USBSetupCb函数来处理该请求。

由于USBSetupCb函数在中断上下文中执行,它应尽量保持简洁,避免进行复杂的操作或长时间的延迟。如果需要进行复杂的处理或与其他任务进行互动,建议将其放在一个新的线程或任务中进行处理。

至于您在AppThread主循环和USB Setup回调处理程序之间的UART竞争条件问题,建议您采取以下措施来解决:

1. 使用信号量或互斥锁来同步对UART的访问。在主循环和USB Setup回调处理程序之间,通过使用信号量或互斥锁来确保只有一个任务能够访问UART。例如,在主循环中使用信号量来等待UART访问权限,而在USB Setup回调处理程序中释放该信号量。

2. 将UART的读写操作放在一个单独的任务中。通过将UART的读写操作放在一个单独的任务中,您可以确保它们不会与主循环和USB Setup回调处理程序之间的竞争条件产生冲突。可以使用一个队列来将来自USB Setup回调处理程序的数据传递到UART任务,或者使用其他IPC机制进行通信。

3. 调整主循环和USB Setup回调处理程序的处理时间。如果主循环和USB Setup回调处理程序都需要较长的处理时间,可能会导致竞争条件。您可以通过优化代码或者调整处理时间来减少它们之间的冲突。

综上所述,USB Setup回调函数是在中断上下文中处理的,您可以采取上述措施来解决主循环和USB Setup回调处理程序之间的竞争条件问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分