Hi Peter and others,
On Sat, Feb 18, 2012 at 08:18:33PM +0100, Peter Stuge wrote:
I note that all data to be transmitted is copied byte for byte from the rctx data buffer into the USB peripheral memory. I had expected zero copy. During copying, interrupts are disabled.
I'm actually not sure on the latter part:
* the hardware and IRQ handler code supports nested interrupts * the core IRQ handler assembly code re-enables interrupts immediately even before calling the USB driver * the endpoint re-fill code called from the irq handler __udp_refill_ep() doesn't contain any explicit local_irq_disable() * the USART interrupt priority (4) is higher than the USB prio (2)
So based on all this, the USART interrupt should happily be served as a nested IRQ even while the USB driver is re-filling the end-point FIFO.
Regards, Harald