USB CDCACM can send and recevie in interrupt routine #13713
+413
−418
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Impact
Two APIs, named uart_recvbuf and uart_sendbuf, are added to the struct uart_ops_s.
One API, named poll, is added to the struct usbdev_epops_s .
CDCACM uses the dma interface in struct uart_ops_s for sending and receiving.
In interrupt, CDCACM sends data by using cdcuart_txready, cdcuart_sendbuf, cdcuart_txempty.
In interrupt, CDCACM receives data by using cdcuart_rxavailable, cdcuart_recvbuf.
Testing
Test normal serial and cdcacm sending and receiving
After the crash, in interrupt routine, use gdbstub to test the sending and receiving of cdcacm and serial.