xil_printf()
is a light-weight implementation of printf. It is much smaller in
size (only 1 Kb). It does not have support for floating point numbers. xil_printf() also
does not support printing of long (such as 64-bit) numbers.
About format string support:
The format string is composed of zero or more directives: ordinary characters (not %), which are
copied unchanged to the output stream; and conversion specifications, each of which
results in fetching zero or more subsequent arguments. Each conversion specification is
introduced by the character %, and ends with a conversion specifier. In between, there
can be (in order) zero or more flags, an optional minimum field width and a optional
precision. Supported flag characters are: The character % is followed by zero or more of
the following flags:
- 0: The value should be zero padded. For d, x conversions, the converted value is padded on the left with zeros rather than blanks. If the 0 and - flags both appear, the 0 flag is ignored.
- The converted value is to be left adjusted on the field boundary. (The default is right justification.) Except for n conversions, the converted value is padded on the right with blanks, rather than on the left with blanks or zeros. A - overrides a 0 if both are given.
About supported field widths
Field widths are represented with an optional decimal digit string (with a nonzero in the first digit) specifying a minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces on the left (or right, if the left-adjustment flag has been given). The supported conversion specifiers are:
- d: The int argument is converted into a signed decimal notation.
- l: The int argument is converted into a signed long notation.
- x: The unsigned int argument is converted to unsigned hexadecimal notation. The letters abcdef are used for x conversions.
- c: The int argument is converted to an unsigned char, and the resulting character is written.
- s: The const char* argument is expected to be a pointer to an array of character type (pointer to a string). Characters from the array are written up to (but not including) a terminating NULL character. If a precision is specified, no more than the number specified are written. If a precision s given, no null character needs be present; if the precision is not specified, or is greater than the size of the array, the array must contain a terminating NULL character.
- p: Used for pointer arguments to display the argument as an address in the hexadecimal digits. Applicable only for 64-bit Arm.
Prototype
void xil_printf(const *char ctrl1,...);