You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Minimal support for serial communication through UART devices, which are compatible to the 16550 UART. This crate supports I/O port-mapped (x86 only) and memory-mapped UARTS.
The UART is accessed through port-mapped I/O on architectures such as x86_64. On these architectures, the SerialPort type can be used:
use uart_16550::SerialPort;constSERIAL_IO_PORT:u16 = 0x3F8;letmut serial_port = unsafe{SerialPort::new(SERIAL_IO_PORT)};
serial_port.init();// Now the serial port is ready to be used. To send a byte:
serial_port.send(42);// To receive a byte:let data = serial_port.receive();
With memory mapped serial port
Most other architectures, such as RISC-V, use memory-mapped I/O for accessing the UARTs. On these architectures, the MmioSerialPort type can be used:
use uart_16550::MmioSerialPort;constSERIAL_PORT_BASE_ADDRESS:usize = 0x1000_0000;letmut serial_port = unsafe{MmioSerialPort::new(SERIAL_PORT_BASE_ADDRESS)};
serial_port.init();// Now the serial port is ready to be used. To send a byte:
serial_port.send(42);// To receive a byte:let data = serial_port.receive();
Building with stable rust
This needs to have the compile-time requirements of the cc crate installed on your system.
It was currently only tested on Linux and MacOS.