This could be caused by any number of problems, but you seem to be
blaming the least likely cause. Most issues would be down to your code
running on your target. Since you have a JTAG device, you should use
that to inspect the UART registers on the target to determine whether it
is correctly set up, and to see whether the UART is receiving any data
(send a single byte and inspect the Rx data register). You should also
use the JTAG with GDB to debug the bootloader code.
A common error is an incorrect baud rate generator configuration. You
might use an oscilloscope to test the bit/character width. If you have
an incorrect PLL configuration, the UART may not be running at the rate
you intended either.
A useful tool you can use at the PC end is Portmon; this sits between
the serial port driver and the terminal emulator, and provides
information of exactly what data is being transmitted and received as
well as what ports are opened and othe OS calls to the driver. It is
essential for serial comms debugging. Portmon may not work with some
USB serial port adapters; if this is the case you cab use "HDD Free
Serial Port Monitor", this is less flexible that Portmon, but works in
more cases. Once HDD is monitoring a port, it is sometimes possible to
then attach Portmon where it does not work when connected directly to
the device driver.
http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx
http://www.serial-port-monitor.com/