UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 39064

12.3 EDK, UART Lite - The same UART Lite code works in 11.5, but not in 12.x

Description

I have a working design from 11.5. It reads in a byte from UART Lite and sends it back, as follows:

Xuint8 c;

while (1)
{
c = XUartLite_RecvByte (XPAR_UARTLITE_0_BASEADDR);
XUartLite_SendByte(XPAR_UARTLITE_0_BASEADDR, c);
}


After I upgrade my design to 12.3, the UART Lite does not work any more. After I enter a data in the terminal, there is nothing send out.

What might be wrong in 12.3?

Solution

Starting from 12.x, Libgen sorts out the peripherals in alphabetical order regarding the same driver. In the case of UART Lite driver, MDM peripheral will always be ahead of XPS_UARTLite peripheral. In previous versions, LibGen handles the peripherals in an unsorted order.

In the above code, the Canonical definition XPAR_UARTLITE_0_BASEADDR is defined as the base address of the UART Lite device 0 in xparameters.h file, which is generated by LibGen. If a MDM is used in the design, it will be device 0 now in 12.x. The device 0 used to be defined as the base address of XPS_UARTLite peripheral in previous versions. To solve the issue, find the proper definitions for the XPS_UARTLite device that you are going to access and use them in your code.
AR# 39064
Date Created 11/12/2010
Last Updated 11/19/2010
Status Active
Type Known Issues
Tools
  • EDK - 12.1
  • EDK - 12.2
  • EDK - 12.3
IP
  • XPS UART Lite