- Notifications
You must be signed in to change notification settings - Fork25
Minimal support for uart_16550 serial output.
License
rust-osdev/uart_16550
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Minimal support forserial communication throughUART devices, which are compatible to the16550 UART. This crate supports I/O port-mapped (x86 only) and memory-mapped UARTS.
Depending on the system architecture, the UART can be either accessed throughport-mapped I/O ormemory-mapped I/O.
The UART is accessed through port-mapped I/O on architectures such asx86_64
. On these architectures, theSerialPort
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();
Most other architectures, such asRISC-V, use memory-mapped I/O for accessing the UARTs. On these architectures, theMmioSerialPort
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();
This needs to have thecompile-time requirements of thecc
crate installed on your system.It was currently only tested on Linux and MacOS.
Licensed under the MIT license (LICENSE orhttp://opensource.org/licenses/MIT).
About
Minimal support for uart_16550 serial output.
Resources
License
Uh oh!
There was an error while loading.Please reload this page.