linux_dm9000网卡驱动程序完全分析

linux_dm9000网卡驱动程序完全分析

ID:9850304

大小:275.50 KB

页数:29页

时间:2018-05-12

linux_dm9000网卡驱动程序完全分析_第1页
linux_dm9000网卡驱动程序完全分析_第2页
linux_dm9000网卡驱动程序完全分析_第3页
linux_dm9000网卡驱动程序完全分析_第4页
linux_dm9000网卡驱动程序完全分析_第5页
资源描述:

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

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

2、40开发板上DM9000的电气连接和Mach-mini2440.c文件的关系 Mini2440开发板上DM9000与S3C2440的连接关系如下:    其中片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x20000000开始。DM9000的TXD[2:0]作为strappin在电路图中是空接的,所以IObase是300H。中断使用了EINT7。这些内容在Mach文件中有如下体现: 1.#define S3C2410_CS4 (0x20000000)  2.#define MACH_MINI2440_DM9K_BASE (S3C

3、2410_CS4 + 0x300)   3.static struct resource mini2440_dm9k_resource[] __initdata = {   4.    [0] = {   5.        .start = MACH_MINI2440_DM9K_BASE,   6.        .end   = MACH_MINI2440_DM9K_BASE + 3,   7.        .flags = IORESOURCE_MEM   8.    },   9.    [1] = {   1.        .start = MA

4、CH_MINI2440_DM9K_BASE + 4,   2.        .end   = MACH_MINI2440_DM9K_BASE + 7,   3.        .flags = IORESOURCE_MEM   4.    },   5.    [2] = {   6.        .start = IRQ_EINT7,   7.        .end   = IRQ_EINT7,   8.        .flags = IORESOURCE_IRQ 

5、 IORESOURCE_IRQ_HIGHEDGE,   9.    }   10.}

6、;  另外在Mach文件中还定义了DM9000平台设备,设备名称为“dm9000”,设备资源就是上面定义的IO和中断资源。代码清单如下: 1.static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = {  2.    .flags      = (DM9000_PLATF_16BITONLY 

7、 DM9000_PLATF_NO_EEPROM),  3.};  4.  5.static struct platform_device mini2440_device_eth __initdata 

8、= {  6.    .name       = "dm9000",  7.    .id     = -1,  8.    .num_resources  = ARRAY_SIZE(mini2440_dm9k_resource),  9.    .resource   = mini2440_dm9k_resource,  10.    .dev        = {  11.        .platform_data  = &mini2440_dm9k_pdata,  12.    },  13.};  这个DM9000平台设备作为众多平台设备中的一个在扳

9、子初始化的时候就被添加到了总线上。代码清单如下:1.MACHINE_START(MINI2440, "MINI2440")  2.    /* Maintainer: Michel Pollet  */  3.    .phys_io    = S3C2410_PA_UART,  4.    .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,  5.    .boot_params    = S3C2410_SDRAM_PA + 0x100,  6.   

10、 .map_io     = mini

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

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

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