Strange error debugging serial output on custom board
So, talking to myself here, but just in case anyone else is as clueless about SW4STM32 as I am...
It turns out that the generated 'syscalls.c' file, although it appears in the file list, is not automatically compiled until you manually move it from Utilities to a Src/ folder. Once you've done that, _write() will be compiled, and will call your __io_putchar() code. Until you do that, _write() is implemented as a nop in libc.
So I now have printf() working fine...