some_serial/lib.rs
1#![no_std]
2
3//! # Some Serial - 嵌入式串口驱动集合
4//!
5//! 本库提供统一的串口驱动接口,支持多种硬件平台:
6//! - ARM PL011 UART
7//! - NS16550/16450 UART(IO Port 和 MMIO 版本)
8//!
9//! ## 特性
10//!
11//! - 🏗️ 统一抽象接口 - 基于 `rdif-serial` 的统一串口抽象
12//! - 🛡️ 无标准库设计 (`no_std`) - 适用于裸机和嵌入式系统
13//! - 📦 模块化架构 - 每个驱动独立模块,按需选择
14//! - 🔒 类型安全 - 使用 Rust 类型系统确保内存安全
15//! - ⚡ 高性能 - 零拷贝数据传输,直接硬件访问
16//!
17//! ## 支持的驱动
18//!
19//! ### ARM PL011 UART
20//! - 广泛用于 ARM Cortex-A、Cortex-M、Cortex-R 系列
21//! - 支持 FIFO、中断、回环等完整功能
22//!
23//! ### NS16550/16450 UART
24//! - 经典 PC 串口控制器,广泛兼容
25//! - 支持 IO Port(x86_64)和 MMIO(通用)两种访问方式
26//! - 支持 16 字节 FIFO 缓冲
27//!
28//! ## 快速开始
29//!
30//! ```rust
31//! use some_serial::{Serial, Config};
32//! use some_serial::pl011::Pl011; // ARM PL011
33//! use some_serial::ns16550::Ns16550Mmio; // NS16550 MMIO
34//!
35//! // 选择合适的驱动
36//! #[cfg(target_arch = "aarch64")]
37//! let mut uart = Pl011::new(
38//! NonNull::new(0x9000000 as *mut u8).unwrap(),
39//! 24_000_000
40//! );
41//!
42//! #[cfg(not(target_arch = "aarch64"))]
43//! let mut uart = Ns16550Mmio::new(
44//! NonNull::new(0x9000000 as *mut u8).unwrap(),
45//! 1_843_200
46//! );
47//!
48//! // 配置串口
49//! let config = Config::new()
50//! .baudrate(115200)
51//! .data_bits(some_serial::DataBits::Eight)
52//! .stop_bits(some_serial::StopBits::One)
53//! .parity(some_serial::Parity::None);
54//!
55//! uart.set_config(&config).unwrap();
56//! uart.open().unwrap();
57//! ```
58
59// 导入核心模块
60pub mod ns16550;
61pub mod pl011;
62
63// 重新导出 rdif-serial 的所有类型
64pub use rdif_serial::*;