ZHDZ012G December 2020 – June 2026 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
USB:由于端点数据包没有关联的 TRB,端点 OUT 数据队列被锁定
USB 器件控制器将 USB 总线上收到的端点 OUT 数据存储到队列数据结构中。如果拥有该数据的端点存在可用的传输请求块 (TRB),该控制器会将数据从队列传输到系统存储器。但是,如果 TRB 对此端点不可用,则数据将保留在队列中,并阻止队列中的后续数据传输到系统存储器。即使拥有后续数据的端点有可用的 TRB,也会发生这种情况。
一个可能受此问题影响的已知应用场景是:ACM 类与 MSC 等其他类组合使用的复合器件。众所周知,ACM 类驱动器可在没有 TRB 的情况下长时间运行。如果其他类在 ACM 类之后接收数据,则其可能会滞留在队列中,直到 ACM 类驱动器提供其 TRB。对于不提前提供 TRB 或在接收数据后可能长时间不提供 TRB 的类,通常都可以观察到这一问题。
当数据接收到没有 TRB 的端点的队列中时,控制器会生成 IRQ[6] 中断。该寄存器的相应中断状态位在 EP_STS 寄存器中称为 TRBERR。软件可能会使用该中断为阻塞的端点提供 TRB。如果并非立即需要该数据,则软件必须配置 TRB,以便将数据从该队列传输到系统存储器的临时缓冲区。系统存储器中的数据可以稍后使用。