Welcome 微信登录

首页 / 操作系统 / Linux / Linux 2.6.34下DM9000网卡驱动移植

DM9000是10/100M自适应的总线型网卡,Linux中对其支持已经非常完善,不同开发板之间移植、修改主要集中在总线的选择及中断选择上1)修改arch/arm/mach-s3c2440/mach-smdk2440.c文件,增加以下信息
/****add by dengwei*****************/#include <linux/dm9000.h>static struct resource s3c_dm9k_resource[] ={     [0] =     {           .start = S3C2410_CS3,      //网卡连接在CS3总线上(此处跟据不同开发板进行修改)           .end = S3C2410_CS3 + 3,           .flags = IORESOURCE_MEM,    },    [1] =    {            .start = S3C2410_CS3 + 4,   //同上           .end = S3C2410_CS3 + 4 + 3,           .flags = IORESOURCE_MEM,    },    [2] = {    .start = IRQ_EINT7,                //根据硬件外部中断管脚修改此数字    .end = IRQ_EINT7,    .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,    }};static struct dm9000_plat_data s3c_dm9k_platdata ={    .flags =DM9000_PLATF_16BITONLY,};struct platform_device s3c_device_dm9k ={     .name = "dm9000",    .id = 0,    .num_resources = ARRAY_SIZE(s3c_dm9k_resource),    .resource = s3c_dm9k_resource,    .dev =    {          .platform_data= &s3c_dm9k_platdata,    } };EXPORT_SYMBOL(s3c_device_dm9k);/*************************add by dengwei***************************/

2)修改 arch/arm/mach-s3c2440/mach-smdk2440.c文件            修改struct platform_device *smdk2440_devices[]__initdata结构体增加以下代码:            static struct platform_device*smdk2440_devices[] __initdata =
{
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9k,            //for dm9000   add by dengwei
};
3)修改drivers/net/dm9000.c源码:
在头文件区增加头文件:#include <mach/regs-mem.h>大约1365行左右增加以下代码:static int __devinit dm9000_probe(structplatform_device *pdev){        //add   here  函数开始处}
/**********add by dengwei*****************/
  1. #if defined(CONFIG_ARCH_S3C2440)   
  2. int oldval_bwscon = *((volatile unsignedint *)S3C2410_BWSCON);  
  3. *((volatileunsigned int *)S3C2410_BWSCON)=(oldval_bwscon&~(3<<16))|S3C2410_BWSCON_DW3_16|S3C2410_BWSCON_WS3|S3C2410_BWSCON_ST3; //设置BANK3:总线宽度为16,使能nWAIT   
  4. *((volatile unsigned int *)S3C2410_BANKCON3) = 0x1f7c; //设置BANK3的时间参数   
  5. #endif  
/**********add by dengwei****************/ 4)修改make menuconfig配置选项:    Devices  Drivers --->      Network device support--->        Ethernet (10 or 100) --->        [*]DM9000support        (4)DM9000maxinum   debug level           //仅保留这两个选项,其余的全部去掉
5)重新编译内核,烧入开发板中即可
6)第一次使用的开发板需使用ifconfig eth0 hw ether 12:34:56:78:32:65 设置mac地址       (MAC地址可以随便设置)         使用ifconfigeth0 192.168.220.*设置开发板IP         使用ping命令ping主机即可