cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Newbie
Newbie
3,956 Views
Registered: ‎09-28-2016

PS UARTs and DMAC

Hi,

 

I'm trying to use the PS UART1 to do a bidirectional RS-422 transfer between the Zynq and another system. I would like to achieve at least a couple of Mbaud transfer speed, but generally the faster the better.

 

Using the Linux xuartps driver, I start seeing dropped bytes when I go above 1 Mbaud, most likely because the RXFIFO runs full before the CPU can service the IRQs. Adjusting the rx_trigger_level module parameter does not seem to change things. I have looked at the PL330 DMAC to try to speed things up, but according to section 9.2.1 in the TRM:

 

"The DMAC can conceivable access IOPs in the PS, but this is normally not useful because these paths offer no flow control signals"

 

So this means that the UART transfers (and other IOPs without dedicated DMA controllers) can not be accelerated using the DMAC?

 

I still have the possibility to switch to an AXI 16550 UART instead of the PS UART. Will I then be able to utilize the DMAC or an AXI DMA controller to do accelerated transfers?

 

Thanks,

 

-Jeppe

Tags (3)
0 Kudos
1 Reply
Highlighted
Participant
Participant
3,940 Views
Registered: ‎04-08-2015

Re: PS UARTs and DMAC

I have partially rewritten the relevant BSP because the provided BSP is too verbose for my taste.

However I did achieve only 2Mbit/sec

If I remember right the sclk to the UART is 50MHz (ZedBoard) and I set the BRD as well as the BRG register to 4

//sclk is 50MHz

//baud = sclk / ((BRD+1)*BRG);

//Baud BRG BRD

//2.0MB 4 4 //highest baud rate

//1.5MB 3 11

//921600 9 5

//115200 62 6

//38400 186 6

//9600 651 7

 

I think if you want to increase this any further you may change the prescaler for the SCLK to the UART.

I have no idea however if this works.

Maybe 2Mbaud is the charm because of hardware reasons?

 

KB

 

0 Kudos