Linux DM9000驱动程序详解:结合Mini2440开发板

需积分: 10 4 下载量 149 浏览量 更新于2024-07-27 1 收藏 276KB DOC 举报
"分析了基于linux-2.6.31内核版本的DM9000网卡驱动程序,结合Mini2440开发板探讨硬件平台与驱动的分离。涉及总线、设备和驱动模型的理解,以及Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系,介绍了sk_buff和net_device结构体,并详细解析了驱动代码。" 在Linux系统中,驱动程序是操作系统与硬件之间的桥梁,DM9000驱动程序的设计目标是实现与硬件平台的解耦,以增强代码的可移植性。DM9000是一款常见的以太网控制器,广泛应用于嵌入式系统。在Mini2440开发板上,DM9000通过S3C2440微处理器的GPIO和中断引脚进行通信。 Mini2440开发板上DM9000的硬件连接包括:片选信号AEN使用nGCS4映射到BANK4的内存区域,起始地址为0x20000000;TXD引脚未使用,IO基地址设定为0x300H;中断连接至EINT7。这些配置在Mach-mini2440.c文件中通过resource结构体进行定义,如`mini2440_dm9k_resource`,分别定义了内存区域和中断资源。 在Linux内核中,`sk_buff`(socket buffer)是网络协议栈中用于存储数据报文的数据结构,它包含了数据包的头部信息、数据部分以及一些管理字段,用于高效地处理网络数据传输。而`net_device`结构体则是表示网络设备的核心数据结构,包含了设备的名称、状态、队列、硬件地址等信息,是驱动程序与内核网络子系统交互的关键。 驱动程序的具体代码分析通常涉及初始化、注册、发送和接收数据、中断处理等环节。初始化阶段,驱动会注册到总线并分配资源,如内存映射和中断处理。注册`net_device`时,会设置设备的硬件地址、MTU大小、回调函数等。发送数据时,驱动会根据`net_device`的API将数据封装成`sk_buff`,然后调用硬
f532101293
  • 粉丝: 0
  • 资源: 1
上传资源 快速赚钱