A post continuing implementation of an NS16550A UART driver in RISC-V assembly. Function prologues are explained in depth and implemented for uart_get_char and uart_put_char, diagramming changes to the stack and registers instruction-by-instruction. Topics such as ABIs, calling conventions, stack frames, and more are also discussed.| twilco’s blog
A post that discusses what RISC-V is and why it’s important, teaches readers how to install the GNU RISC-V toolchain, and walks through building and running a simple C program on emulated RISC-V hardware.| twilco’s blog
A post beginning implementation of a NS16550A UART driver for the QEMU virt machine, discussing the basics of UART functionality and doing additional linker script and devicetree layout exploration along the way.| twilco’s blog