【发布时间】:2019-11-18 13:24:00
【问题描述】:
我正在为微控制器开发 USB 设备驱动程序(Atmel/Microchip SAMD21,但我认为这个问题很普遍)。我需要多个端点来控制和数据,USB 硬件使用每个端点描述符来(除其他外)定位输入和输出数据的缓冲区。
由于主机决定轮询 IN 数据,因此每个端点都有自己的 IN 缓冲区是有意义的,因此任何端点的数据(如果有要发送的话)在轮询时立即可用。
但就来自 SETUP & OUT 事务的传入数据而言,我想到可以通过将所有端点配置为使用共享缓冲区来节省内存。考虑到 USB 事务的性质,一次只能发生一个这样的事务时,每个端点都有自己的缓冲区似乎很浪费。
显然,这种方法需要足够快地处理事务中断,以便释放共享缓冲区并及时为新事务做好准备,以应对下一个事务可能是 - 但这已经是控制端点的要求,其中一些 SETUP事务紧跟在 OUT 之后。
那么,假设时机可行,是否还有其他原因导致这种方法行不通?
【问题讨论】:
标签: usb microcontroller