Console
console_print() writes to the USB-Serial-JTAG FIFO directly — two registers,
no driver, no UART, no pin. The ROM has already enumerated the port, so output
appears on the same COM port you flash over, and make monitor shows it.
This is not the UART. console_print() goes out of the USB-C socket to your
PC; uart_print() goes out of a pin to whatever is wired to it. The two have
nothing to do with each other.
src/main.c prints nothing, so a default build is silent by design. The
examples all print — make i2c_scan flash monitor is a quick way to see it
working:
i2c port 0 on sda=8 scl=9 at 100 kHz
scanning 0x08..0x77
found 0x68 reg[0] = 0x19
1 deviceWrites are dropped rather than blocking when no host is reading, so an unattended board keeps running at full speed.
That dropping has one consequence worth knowing: anything printed in the
first moment after reset is lost. _start runs microseconds after reset,
but the USB port takes about a second to enumerate with the host, and a
terminal opened later still misses whatever came before it. If a program's
startup lines never appear, tap RST with make monitor already running.