MPC8250 has different type UART, this UART is a part of CPM communication co-processor. This UART is fully handled by CPM co-processor, it can receive data and transfer it to data buffer in memory by DMA without intervention of main core. When the data is received and moved to buffer memory, CPM can generate interrupt to main core indicating that data buffer reception is finished, and the main core may start processing received data.
The key point here is DMA and interrupt generated only once when full buffer is received.
In contrast with MPC8250' UART, the DUART block works on per-byte basis. That is, it is not managed by any co-processor, each byte received by this DUART must be read by main core and moved to memory by core read/write operations, without using any DMA. There is no DMA support in DUART block, it has only small FIFO for several bytes, this may be helpful to decrease number of interrupts to main core from one per byte to one per FIFO watermark, but this does not help significantly - you still need to read each individual byte from FIFO and transfer it to memory by core read/write operations.
DUART is not very fast. Device datasheet stated the maximum DUART baudrate is (platform frequency)/(2*16), which is 12,5 mbps for 400 Mhz plaftorm, but there is a note that actual baudrate "is limited by the latency of interrupt processing".
That is, you can reach this speed only if you spend all your main core processing time to interrupts.
Obviously, if you have 4 UARTs running simultaneously, you will experience overruns/underruns at high speed, because the core have to process all interrupts from all UARTs simultaneously.
In our recent devices we have "Quicc Engine" (QE), this communication co-processor is a derivative from old CPM, and QE-based UART works in the same way, as old CPM-based UART. So, if you wish to implement similar functionality, I recommend looking QE-based UART.
Have a great day,
Alexander
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------