Expand description

Support for basic serial port access, including initialization, transmit, and receive.

This is a near-standalone crate with very minimal dependencies and a basic feature set intended for use during early Theseus boot up and initialization. For a more featureful serial port driver, use the serial_port crate.


Some serial port drivers use special cases for transmitting some byte values, specifically 0x08 and 0x7F, which are ASCII “backspace” and “delete”, respectively. They do so by writing them as three distinct values (with proper busy waiting in between):

  1. 0x08
  2. 0x20 (an ascii space character)
  3. 0x08 again.

This isn’t necessarily a bad idea, as it “clears out” whatever character was there before, presumably to prevent rendering/display issues for a deleted character. But, this isn’t required, and I personally believe it should be handled by a higher layer, such as a shell or TTY program. We don’t do anything like that here, in case a user of this crate wants to send binary data across the serial port, rather than “smartly-interpreted” ASCII characters.



A serial port and its various data and control registers.


The base port I/O addresses for COM serial ports.

The types of events that can trigger an interrupt on a serial port.


Takes ownership of the SerialPort specified by the given SerialPortAddress.