1 个不稳定版本
0.1.0 | 2023年2月24日 |
---|
#1416 在 硬件支持
45KB
818 行
E1000 驱动程序
Rust 编写的Intel 82540EP/EM 千兆以太网E1000 驱动程序。
支持特性
- 支持在Qemu上的RISCV E1000 驱动程序
- 初始化e1000设备的简单PCI-Express
- 将e1000驱动程序作为Linux驱动模块实现
- 待办事项:网络协议支持:IP、ARP、UDP
裸机操作系统上的快速入门
初始化PCI和E1000驱动程序
pub struct Kernfn;
impl e1000_driver::e1000::KernelFunc for Kernfn { ... }
e1000_driver::pci::pci_init();
let mut e1000_device = e1000_driver::e1000::E1000Device::<Kernfn>::new(e1000_driver::pci::E1000_REGS as usize).unwrap();
发送网络数据包
e1000_device.e1000_transmit(&frame);
接收网络数据包
let rx_buf = e1000_device.e1000_recv();
Linux上的内核模块
cd src/linux
make ARCH=arch KDIR=/path/to/linux
# e.g. make ARCH=riscv KDIR=/home/rust/linux
参考
- Linux 源代码
- xv6:net的实现
- Rust for Linux
依赖项
~145KB