努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/06/18/6552910.aspx
网络设备的初始化:
通过模块的加载函数看出DM9000A的驱动是以平台驱动的形式注册进内核的,下边是模块的加载函数:
下边是平台驱动结构体:
下面来分析probe函数,用来执行分配的内核函数是alloc_netdev,函数原型是:
这里的sizeof_priv是驱动程序私有数据区的大小;这个区成员和net_device结构一同分配给网络设备。实际上,他们都处于一大块内存中,但是驱动程序不需要知道这些。name是接口的名字,其在用户空间可见;这个名字可以使用类似printf中%d的格式,内核将用下一个可用的接口号替代%d,最后,setup是一个初始化函数,用来设置net_device结构剩余的部分。网络子系统对alloc_netdev,为不同种类的接口封装了许多函数。最常用的是alloc_etherdev,它定义在linux/etherdevice.h中:
该函数使用eth%d的形式指定分配给网络设备的名字。它提供了自己的初始化函数(ether_setup),用正确的值为以太网设备设置net_device中的许多成员。那么在DM9000A中这个私有数据成员是什么呢,看下边的结构:
这个struct board_info就是那个私有数据,用来保存芯片相关的一些私有信息。
下面是probe函数的实现:
下边看看挂起和唤醒函数:
挂起函数完成了设置挂起标志,并没有真正把设备移除而只是设置了移除标志,复位PHY,停止PHY,禁止所有中断,禁止接受引脚。
唤醒函数完成了复位dm9000,初始化dm9000,标记设备为attached,清除挂起标志。
网络设备的打开与释放:
首先来看这个open函数:
然后是stop函数:
复位PHY,停止PHY,禁止所有中断,禁止接收引脚。
分享到:
相关推荐
Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(中).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(下).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(上).pdf Linux驱动修炼之道-clock框架....
成功移植U-BOOT之----DM9000网卡驱动.pdf
dm9000网卡驱动分析 dm9000网卡驱动分析 dm9000网卡驱动分析 dm9000网卡驱动分析 dm9000网卡驱动分析
网卡开发必须要熟悉的驱动流程 dm9000网卡驱动分析
Web_uIP--DM9000
网卡dm9000a的数据手册,适用于进行dm9000a网卡驱动开发的软件工程师使用
包括linux wince 单片机的DM9000A的官方驱动 包括linux wince 单片机的DM9000A的官方驱动
嵌入式linux上的dm9000网卡驱动源代码和Makefile编译驱动文件源代码
ok6410 u-boot dm9000 驱动补丁 patch
smdk2440-T35B-DM9000-20090309,
从英文DM9000A网卡芯片资料翻译而成,中文手册,很完全
linux内核的DM9000网卡驱动,注意:对于linux源码中已经存在的驱动文件,网络驱动内容只需要修改一下几点:网卡基地址,中断号,网卡工作模式,中断触发方式.
arm9开发板上 dm9000网卡驱动程序分析
本u-boot由本人调通,cpu为s3c2440,开发板pw2440,支持nand启动、读、写,支持yaffs2文件系统下载,支持DM9000A网卡,TFTP下载,引导linux内核,最大特色是支持USB下载内核和文件系统,使你的调试变得快捷方便,复杂...
dm9000 for 2410--dm9000 for 2410--dm9000 for 2410
linux设备驱动中的网卡驱动(DM9000),源代码分析,通俗易懂
使用FPGA驱动DM9000A网络芯片,实现网络包的首发
单片机驱动DM9000网卡芯片(详细调试过程).pdf
基于西安百特BSP,添加了DM9000A的网络驱动,驱动能跑,但未完善。
dm9000芯片资料,datasheet