When your uart code has finished transmitting the buffer, it needs to call the transmit complete callback. That signals to the various uart/debug layers that they can continue to send new buffers. Not calling that transmit complete callback would result in the behavior you're describing. The one catch is, however, that it is only valid to call the transmit complete callback in response to an interrupt. If you look at other uart implementations, the callback will occur once handle_interrupt() is called. So, in Tock you need to have an asynchronous uart implementation to correctly implement the driver.
-Brad