Hi,
I'm new to the Kinetis family of chips, code warrior and processor expert. However am reasonably experienced in embedded software.
I'm having trouble getting printf to work on my FRDM-K20D50M board.
Setting up the Serial_LDD component to use UART0 on PTB16 and PTB17. Then using:
AS1_SendBlock(AS1_DeviceData, "hello world\n", 12);
This works fine.
I then add a consoleIO component, and try:
printf("Test\n");
This doesn't work.
Stepping through it I end up in:
C:\Freescale\CW MCU v10.5\MCU\ARM_GCC_Support\ewl\EWL_C\src\stdio\printf.c
Sticking breakpoints in the generated CsIO1.c __write_console and _write functions. They are never hit.
Instead the code goes through fwrite(), with the file pointer: stdout. However I can't see anywhere that sets up stdout to point to my UART.
In addition in the generated CsIO1.c the code uses: UART1_BASE_PTR. Whereas my serial component is configured to UART0.
I noted that at the path that usses ARM_EABI_Support, there is:
C:\Freescale\CW MCU v10.5\MCU\ARM_EABI_Support\ewl\EWL_C\src\printf.c
This printf.c has a lot more code, including: printf_console, which references __write_console.
It compiles and uses this file when I select the freescale tools instead of ARM tools. However this still doesn't work, however it does get into CsIO1.c this time. It may be the UART1_BASE_PTR that breaks it here.
I'm sure I'm missing something obvious, but I just can't see it. Any ideas?