This crate provides basic drivers for the UARTS exposed by QEMU. You can see the implementation of these uarts here
The QEMU target actually exposes 4 different UARTS, that can each be redirected to arbitary character devices or files. This crate allows those UARTS to be accessed in order to support more complicated use cases than can be provided by cortex_m_semihosting.
To run the examples, you will need an arm QEMU. An example can be seen below:
In order to run these examples, your cargo runner should be set to something like: qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb -nographic -semihosting -serial mon:stdio -kernel
The classic example
$ cargo run --example hello
Hello, World!
Another example, this time tee-ing the input to a file:
$ cargo run --example tee -- -serial file:test.txt
testing 123
^D
$ cat test.txt
testing 123