嵌入式Linux网络驱动 · 从入门到实战
🎓
30章 完整体系
01
网络驱动基础概念
OSI模型与TCP/IP
MAC/PHY/MII/RMII
Linux网络子系统
02
开发环境搭建
交叉编译工具链
内核源码树
QEMU模拟环境
NFS根文件系统
03
内核网络核心数据结构
struct net_device
struct sk_buff
net_device_ops
ethtool_ops
04
网络设备注册与注销
alloc_netdev
register_netdev
unregister_netdev
free_netdev
05
网络设备打开与关闭
ndo_open / ndo_stop
硬件初始化
去初始化流程
06
数据包发送流程 (上)
ndo_start_xmit
sk_buff操作
DMA映射与描述符
07
数据包发送流程 (下)
发送完成中断
NAPI轮询
ndo_tx_timeout
08
数据包接收流程
中断处理程序
NAPI调度
sk_buff分配填充
09
NAPI机制详解
poll函数实现
轮询权重控制
中断/轮询切换
10
中断处理与下半部
顶半部/底半部
tasklet
workqueue
threaded IRQ
11
DMA引擎集成
DMA控制器驱动
通道申请/释放
传输描述符
硬件DMA交互
12
硬件时间戳 (PTP)
skb_shared_hwtstamps
硬件时钟驱动
ioctl接口
13
网络设备控制路径 (ioctl)
ndo_do_ioctl
SIOCETHTOOL
自定义私有ioctl
14
ethtool接口实现
ethtool_ops填充
get/set链接设置
统计信息/寄存器
15
网络设备统计信息
rtnl_link_stats64
ndo_get_stats64
procfs/sysfs导出
16
多队列支持 (RSS)
多队列硬件原理
多TX/RX队列注册
中断亲和性
17
流分类与分流 (Flow Steering)
aRFS
ntuple filter
ethtool流分类规则
18
电源管理
ndo_set_features
WoL
runtime PM
挂起/恢复
19
虚拟网络设备
虚拟网卡驱动模型
veth驱动分析
macvlan/ipvlan
20
网络设备热插拔
PCIe热插拔
platform热插拔
uevent通知
21
调试与性能分析
ftrace/perf
netconsole
printk技巧
吞吐量优化
22
内核网络协议栈交互
netif_rx / netif_receive_skb
GRO/GSO卸载
LRO实现
23
硬件卸载技术
TSO
GRO
Checksum Offload
24
网络设备树绑定
设备树节点定义
解析DMA/中断/时钟
platform_driver匹配
25
PCIe网络设备驱动
PCI配置空间
BAR空间映射
MSI/MSI-X中断
26
USB网络设备驱动
usbnet框架
urb管理
批量/中断传输
27
网络设备与用户空间通信
netlink套接字
ioctl/sysfs
debugfs接口
28
网络驱动测试方法论
loopback测试
iperf吞吐量
pktgen/Wireshark
29
实战项目一:简易虚拟以太网驱动
基于内存环缓冲区
虚拟网卡实现
30
实战项目二:真实硬件平台移植
RTL8139/STM32+LAN8720
驱动移植与调试