My first encounter with UART was when I was trying to write a simple kernel thing for Qemu ARM64 virt machine. Not understanding UART buffer I ran into a lot of infinite print loops and funny moments. I wish I had a document like this back then, good stuff.