歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux 2.6.34下DM9000網卡驅動移植

Linux 2.6.34下DM9000網卡驅動移植

日期:2017/3/1 11:15:40   编辑:Linux編程
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主機即可

Copyright © Linux教程網 All Rights Reserved