The HAL provides support for low level diagnostic IO. This is
particularly useful during early development as an aid to bringing up
a new platform. Usually this diagnostic channel is a UART or some
other serial IO device, but it may equally be a a memory
buffer, a simulator supported output channel, a ROM emulator virtual
UART, and LCD panel, a memory mapped video buffer or any other output
device.
HAL_DIAG_INIT() performs any initialization
required on the device being used to generate diagnostic output. This
may include, for a UART, setting baud rate, and stop, parity and
character bits. For other devices it may include initializing a
controller or establishing contact with a remote device.
HAL_DIAG_WRITE_CHAR(c) writes
the character supplied to the diagnostic output device.
HAL_DIAG_READ_CHAR(c) reads a character from the
diagnostic device into the supplied variable. This is not supported
for all diagnostic devices.
These macros are defined in the header file
cyg/hal/hal_diag.h. This file is usually supplied
by the variant or platform HAL, depending on where the IO device being
used is located. For example for on-chip UARTs it would be in the
variant HAL, but for a board-level LCD panel it would be in the
platform HAL.