https://ncrmnt.org/2013/05/27/cs102-ii-teardown-adding-a-uart/
CS102 II: teardown, adding a UART