06-20-2017 02:34 AM
06-20-2017 05:41 PM
Using the PS DMA (ARM's PL-330) for UART transfers, you will face these 2:
1 - the DMA does not have a event (trigger) from the PS UART.
... that's kind of a show stopper :-)
2 - If there was a trigger, then the problem is to constantly re-program the DMA (it's not registers to set-up... it's a real sequence of instructions to generate) to transfer the data.
In the TX direction, it's kind of feasible as the number of char to send can be used to do it in one DMA re-programming.
On the RX direction, you'll see it ends up being the DMA doing 1 char transfer and then interrupting the CPU to report the transfer.
In both TX & RX cases, using interrupts and relying on the 64 char deep FIFO of the UART is easier to deal with and also more efficient.
Regards
06-20-2017 05:41 PM
Using the PS DMA (ARM's PL-330) for UART transfers, you will face these 2:
1 - the DMA does not have a event (trigger) from the PS UART.
... that's kind of a show stopper :-)
2 - If there was a trigger, then the problem is to constantly re-program the DMA (it's not registers to set-up... it's a real sequence of instructions to generate) to transfer the data.
In the TX direction, it's kind of feasible as the number of char to send can be used to do it in one DMA re-programming.
On the RX direction, you'll see it ends up being the DMA doing 1 char transfer and then interrupting the CPU to report the transfer.
In both TX & RX cases, using interrupts and relying on the 64 char deep FIFO of the UART is easier to deal with and also more efficient.
Regards
06-21-2017 03:59 AM
Thank you for the reply.
That's actually what I noticed.
The solution with interrupts works well and corresponds to the project.
Regards
06-21-2017 11:42 PM
How did you implement uartps interrupt ?
Could you share your code and part of design?
06-27-2017 06:21 PM
if you would like to get an interrupt based driver UART, our drivers are available for free under a BSD-2 license.
Just send a request in the BSP section area at:
For a bare-metal application, the driver supports circular buffers between the interrupts and the background.
With a RTOS, it also support queues between ISR & BG plus exclusive access protection (mutex / spinlock / ISR on-off).
The package includes demos using it for the Zedboard.
... No DMA support though.
Regards