Forum Discussion
5 Replies
- Altera_Forum
Honored Contributor
If you don't use the HAL API and the DMA at the same time, it should work.
- Altera_Forum
Honored Contributor
Just to clarify - what I want to do is have the DMA servicing the UART whiled the driver transmits data throught the DMA with write() and reads from the DMA RXD buffer with read().
- Altera_Forum
Honored Contributor
In that case you need to write your own driver. The default HAL driver doesn't know how to do that.
- Altera_Forum
Honored Contributor
It is also worth remembering that read/write require a data copy, it makes little difference to overall system performance if this is to/from the UART fifo, or from a memory buffer from which the UART will dma data. In both cases writes will eventually hit 'buffer full' and stall.
What you do need is a driver that does read/write directly to/from the fifo - rather than through another adaption layer! and a fifo that is big enough to buffer the required data. I doubt that the Altera HAL driver meets either of these criteria. Also if you are trying to transfer data with low latency of cpu use then you'll need something more slim-line than the generic 'unix style' io functions. - Altera_Forum
Honored Contributor
Thanks for all your feedback. I agree with the issues that you have pointed out. I had a problem with dropped RXD. I came across the FIFO'ed UART which addresses the problem nicely. So, goodbye UART-DMA union ;-)
Joe