LINUX_网卡驱动分析

LINUX_网卡驱动分析

ID:44416556

大小:461.00 KB

页数:36页

时间:2019-10-21

LINUX_网卡驱动分析_第1页
LINUX_网卡驱动分析_第2页
LINUX_网卡驱动分析_第3页
LINUX_网卡驱动分析_第4页
LINUX_网卡驱动分析_第5页
资源描述:

《LINUX_网卡驱动分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、LinuxDM9000网卡驱动程序完全分析说明仁本文分析基于内核源码版本为linux-2.6.31说明2本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和平台分离。本文分成以下几个部分:一、Mini2440开发板上DM9000的电气连接和Mach・mini2440.c文件的关系。二、两个重要的结构体介绍:sk_buff和net_device

2、三、具体代码分析一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系Mini2440开发板上DM9000与S3C2440的连接关系如下:SD0"SD15DATA0xDATA15<>INTEINT7/GPF7DM9000CMDADDR2S3C2440■AEN■nGCS4/GPA15IOR#nOEIOW■ME其中片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x20000000开始。DM9000的TXD[2:0]作为strappin在电路图中是空接的,所

3、以IObase是300Ho屮断使用了EINT7。这些内容在Mach文件屮有如下体现:viewplaincopytoclipboardDrint?1.#defineS3C2410_CS4(0x20000000)2.#defineMACH_MINI2440_DM9K_BASE(S3C2410_CS4+0x300)1.staticstructresourcemini2440_dm9k_resource[]_initdata={2.[0]={3..start=MACHMINI2440DM9KBASE,4..end=MACH_M

4、INI2440_DM9K_BASE+3,5..flags=IORESOURCE_MEM6.},7.[1]={8..start=MACH_MIN12440_DM9K_BASE+4,11..end=MACH_MINI244O_DM9K_BASE+7,12..flags=IORESOURCE_MEM13.},14.[2]={15..start=IRQ_EINT7,16..end=IRQ_EINT7,17..flags=IORESOURCEJRQ

5、IORESOURCE_IRQ_HIGHEDGE,18.}19.};另外在Mach

6、文件中还定义了DM9000平台设备,设备名称为“dm9000”,设备资源就是上而定义的IO和中断资源。代码清单如下:下:viewplaincopytoclipboardprint?1・staticstructdm9000_plat_datamini2440_dm9k_pdata_initdata={2..flags=(DM9000_PLATF_16BITONLY

7、DM9000_PLATF_NO_EEPROM),3.};4.4.staticstructplatform_devicemini2440_device_eth_

8、initdata={5..name=”dm9000”,6..id=-1,7..numresources=ARRAY_SIZE(mini2440_dm9k_resource),8..resource=mini2440_dm9k_resource,9..dev={10..platform_data=&mini2440_dm9k_pdata,11.},12.};这个DM9000平台设备作为众多平台设备中的一个在扳子初始化的时候就被添加到了总线上。代码清单如下:viewplaincopytoclipboardprint?1.M

9、ACHINE_START(MINI2440,”MINI2440”)2./*Maintainer:MichelPollet*/3..phys_io=S3C2410_PA_UART,4.・io_pg_offst=(((u32)S3C24XX_VA_UART)»18)&Oxfffc,5..bootjDarams=S3C2410_SDRAM_PA+0x100,6..map」o=mini2440_map_io,7..init_machine=mini2440_init,广初始化函数*/8.

10、.initjrq=s3c24xx_init_irq,9..timer=&s3c24xx_timer,10.MACHINE_ENDviewplaincopytoclipboardprint?1.staticvoid_initmini2440」nit(void)2.{3....4■…5.platform_add_devices(min

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。