a0a80f6299
Rely on semaphore to serialize access to DMA instead of busy looping after triggering DMA. With this change Ozone Code Profile generated with J-Trace Pro on nrf52840dk_nrf52840 board running headphones microphone sample shows following Load changes (trace data was reset once playback and recording started and percentages were taken when memcpy reached 200 000 Run Count): * usbd_dmareq_process() from 17.16% to 2.24% * memcpy() from 9.37% to 8.36% * nrf_usbd_common_irq_handler() from 8.89% to 10.88% Mark nrf_usbd_common_stop() as static because the caller must acquire DMA semaphore before calling this function and the only place where it is used is already acquiring the semaphore. Disable EP0 SETUP interrupt when there is active DMA on EP0 to eliminate the need for aborting DMA on EP0. This code path should not really happen in real life though because hosts must not issue new SETUP before a relatively long timeout (at least 50 ms). Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no> |
||
---|---|---|
.. | ||
nrf_usbd_common | ||
CMakeLists.txt | ||
Kconfig |