23 个版本

0.3.1 2024年7月11日
0.3.0 2023年8月4日
0.2.19 2023年7月7日
0.2.18 2022年4月16日
0.1.0 2018年5月21日

硬件支持 中排名第 17

Download history 5098/week @ 2024-05-04 6114/week @ 2024-05-11 5657/week @ 2024-05-18 5084/week @ 2024-05-25 5829/week @ 2024-06-01 4382/week @ 2024-06-08 6108/week @ 2024-06-15 5777/week @ 2024-06-22 4330/week @ 2024-06-29 4178/week @ 2024-07-06 6096/week @ 2024-07-13 6124/week @ 2024-07-20 5806/week @ 2024-07-27 5705/week @ 2024-08-03 6432/week @ 2024-08-10 3842/week @ 2024-08-17

22,708 每月下载量
24 个Crates中使用(直接使用19个)

MIT 许可证

17KB
230

uart_16550

Build Status Docs.rs Badge

通过UART设备(兼容16550 UART)提供对串行通信的最小支持。此crate支持I/O端口映射(仅限x86)和内存映射UART。

用法

根据系统架构,UART可以通过端口映射I/O内存映射I/O访问。

使用端口映射I/O

在如x86_64这样的架构上,UART通过端口映射I/O访问。在这些架构上,可以使用SerialPort类型

use uart_16550::SerialPort;

const SERIAL_IO_PORT: u16 = 0x3F8;

let mut 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();

使用内存映射串口

大多数其他架构,如RISC-V,使用内存映射I/O来访问UART。在这些架构上,可以使用MmioSerialPort类型

use uart_16550::MmioSerialPort;

const SERIAL_PORT_BASE_ADDRESS: usize = 0x1000_0000;

let mut 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();

使用稳定Rust构建

这需要在您的系统上安装cccrate的编译时要求。目前仅在Linux和MacOS上进行了测试。

许可证

根据MIT许可证授权(LICENSEhttp://opensource.org/licenses/MIT)。

依赖关系

~2.5MB
~20K SLoC