Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
15 years ago

UART connected to DMA with char HAL API

I am connecting the NIOS II UART to a DMA controller. Is it possible to use the standard HAL character mode API to open, read and write the /dev/uart.

Thanks in advance,

Joe

5 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    If you don't use the HAL API and the DMA at the same time, it should work.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored 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's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    In that case you need to write your own driver. The default HAL driver doesn't know how to do that.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored 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's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored 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