第四季-专题15-网卡驱动程序设计

Posted free-1122

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四季-专题15-网卡驱动程序设计相关的知识,希望对你有一定的参考价值。

专题15-网卡驱动程序设计

第1课-网卡驱动架构分析

 

 

 

l  Linux网络子系统

 

l  系统调用接口层:为应用程序提供访问网络子系统的统一方法。

l  协议无关层:提供通用的方法来使用传输层协议。

l  协议栈的实现:实现具体的网络协议

l  设备无关层:协议与设备驱动之前通信的通用接口

l  设备驱动程序

  1. 重要数据结构

在Linux内核中,每个网卡都由一个net_device结构来描述,其中的一些重要成员有:

l  char name[IFNAMSIZ],设备名,如:eth%d

l  unsigned long base_addr,I/O 基地址

l  const struct net_device_ops *netdev_ops;

  1. 网卡描述结构

类似于字符设备驱动中的file_operations结构,net_device_ops结构记录了网卡所支持的操作。

static const struct net_device_ops dm9000_netdev_ops =

.ndo_open = dm9000_open,

.ndo_open = dm9000_open,

.ndo_stop = dm9000_stop,

.ndo_start_xmit = dm9000_start_xmit,

.ndo_do_ioctl = dm9000_ioctl,

.ndo_validate_addr = eth_validate_addr,

.ndo_set_mac_address = eth_mac_addr,

;

  1. 网卡操作集合

类似于字符设备驱动中的file_operations结构,net_device_ops结构记录了网卡所支持的操作。

static const struct net_device_ops dm9000_netdev_ops =

.ndo_open = dm9000_open,

.ndo_open = dm9000_open,

.ndo_stop = dm9000_stop,

.ndo_start_xmit = dm9000_start_xmit,

.ndo_do_ioctl = dm9000_ioctl,

.ndo_validate_addr = eth_validate_addr,

.ndo_set_mac_address = eth_mac_addr,

;

  1. 网络数据包

Linux内核中的每个网络数据包都由一个套接字缓冲区结构struct sk_buff 描述,即一个sk_buff结构就是一个网络包,指向sk_buff的指针通常被称做skb。

 

第2课-回环网卡驱动设计

 

第3课-网络子系统深度剖析

第4课-DM9000网卡驱动深度分析

第5课-DM9000网卡驱动实现

以上是关于第四季-专题15-网卡驱动程序设计的主要内容,如果未能解决你的问题,请参考以下文章

第四季-专题11-LED驱动程序设计

第四季-专题11-LED驱动程序设计

第四季-专题12-按键驱动程序设计

第四季-专题16-触摸屏驱动程序设计

第四季-专题20-SPI驱动程序设计

第四季-专题14-串口驱动程序设计