6 ms·
No BIOS necessary when we're talking about bare metal systems. printf() will just resolve to a low-level UART-based routine that writes to a FIFO to be played o
by OnACoffeeBreak 1y ago
No BIOS necessary when we're talking about bare metal systems. printf() will just resolve to a low-level UART-based routine that writes to a FIFO to be played out to the UART when it's not busy. Hell, I've seen systems that forego the FIFO and just write to the UART blocking while writing.
- nonrandomstring 1y agoYup, I recall Atari ST (68000) and BBC Micro (6502) having unbuffered and interrupt access to 6402 UART - which I used to C/ASM to fire MIDI bytes to and from.
- ChuckMcM 1y agoI hope nobody was confused into thinking I thought a BIOS was required, I was pointing out the evolution from this to a monitor. I've written some code[1] that runs on the STM32 series that uses the newlib printf(). I created the UART code [2] that is interrupt driven[3] which gives you the fun feature that you can hit ^C and have it reset the program. (useful when your code goes into an expected place :-)). [1] https://github.com/ChuckM/ https://github.com/ChuckM/ [2] https://github.com/ChuckM/nucleo/blob/master/f446re/uart/uart_example.c https://github.com/ChuckM/nucleo/blob/master/f446re/uart/uar... [3] https://github.com/ChuckM/nucleo/blob/master/f446re/common/uart.c https://github.com/ChuckM/nucleo/blob/master/f446re/common/u...