My hardware system uses the UART 16550 peripheral and it also includes the MDM peripheral. When I create a standalone BSP for this hardware system, the default is to use the MDM peripheral as the STDIN and STDOUT. I change that immediately in the BSP settings to use the UART 16550 peripheral, but when I create a new helloworld program using the template (or any other application with the template), the application that is created does not define STDOUT_IS_16550 so it will not output properly. This flow did work in ISE software 12.1.
In SDK, I created a standalone BSP using File -> New -> Xilinx Board Support Package. In the BSP settings, I changed the stdin and stdout to the UART16550 peripheral (default was the debug module). Then, I created a new helloworld software application using File -> New -> Xilinx C Project. The helloworld project that is created is not set to use the UART16550 peripheral, so if you run it, it will not print out properly.
This is a regression from ISE 12.1 software when 12.2 support for MDM UART and AXI was added. The function generate_stdout_config needs to be updated in env/Jobs/MDT/sw/Algorithms/SdkSwGenRev/apps/hello_world/data/hello_world.tcl to handle the 16550 - should check AXI and PLBv46 (a check similar to the uartllite check should work).
As a workaround for 12.2, you will need to tell the user to modify platform_config.h to add the following #define statements:
#define STDOUT_IS_16550
#define STDOUT_BASEADDR XPAR_<uart_instances>_BASEADDR
Where <uart_instance> is the name of the UART 16550 instance name.