網絡卡(dm9000)驅動移植

2021-06-05 14:33:47 字數 2522 閱讀 9998

網絡卡(dm9000)驅動移植

看到網上有很多的部落格分享,比如:

在此,描述一下自己的製作過程:

1.修改arch/arm/plat-s3c24xx/common-smdk.c檔案

在包含標頭檔案的區域增加以下**:

在smdk_devs結構體之前新增以下**:

#if defined(config_dm9000) || defined(config_dm9000_module)

//dm9000網絡卡使用的資源列表。使用0x20000000、0x20000004這兩個位址就可以操作dm9000網絡卡。

static struct resource s3c_dm9k_resource = ,

[1] = ,

[2] =

//dm9000與開發板相關的資料,指定訪問dm9000時,資料位寬為16

static struct dm9000_plat_data s3c_dm9k_platdata = ;

static struct platform_device s3c_device_dm9k =

};#endif

在smdk_devs結構體中新增以下**:

#if defined(config_dm9000) || defined(config_dm9000_module)

&s3c_device_dm9k,

#endif

2.修改drivers/net/dm9000.c檔案

在包含標頭檔案區域新增以下**

#if defined(config_arch_s3c2410)

#include

#endif

dm9000_probe函式中的變數宣告之後新增以下**:

#if defined(config_arch_s3c2410)

unsigned int oldval_bwscon;

unsigned int oldval_bankcon4;

#endif

在dev_dbg(&pdev->dev, "dm9000_probe()\n");語句之後新增以下**:

#if defined(config_arch_s3c2410)

oldval_bwscon=*((volatile unsigned int *)s3c2410_bwscon);

*((volatile unsigned int *)s3c2410_bwscon)=(oldval_bwscon & ~(3<<16))| s3c2410_bwscon_dw4_16 | s3c2410_bwscon_ws4 | s3c2410_bwscon_st4;

oldval_bankcon4=*((volatile unsigned int *)s3c2410_bankcon4);

*((volatile unsigned int *)s3c2410_bankcon4)=0x1f7c;

#endif

將platform_set_drvdata(pdev, ndev);之前的if判斷語句改為:

if (!is_valid_ether_addr(ndev->dev_addr))

在dev_err(db->dev, "not found (%d).\n", ret);之後新增以下**:

#if defined(config_arch_s3c2410)

*((volatile unsigned int *)s3c2410_bwscon)=oldval_bwscon;

*((volatile unsigned int *)s3c2410_bwscon)=oldval_bankcon4;

#endif

3.配置核心

device drivers --->

network device support --->

[*] network device support --->

ethernet (10 or 100mbit) --->

dm9000 support

這樣網絡卡的驅動移植算是完成了,

但必須在根檔案系統中新增相應的初始化語句,才算完成了整個網絡卡的移植

在根檔案系統的 /etc/init.d/rcs 中新增如下語句

修改根檔案系統/etc/init.d/rcs配置網絡卡,增加下面的**

ifconfig lo 127.0.0.1

ifconfig eth0 hw ether 08:00:3e:26:0a:5b

ifconfig eth0 192.168.1.70

route add default gw 192.168.1.1

這樣網絡卡就算是全部移植完成了。

DM9000網絡卡驅動移植

網絡卡驅動移植 步驟1 確定相異性 步驟2 修改 一般就是修改 iobase 和中斷 按照原理圖,其片選訊號可能是往固定段落記憶體寫資料,即是片選到這個裝置。這個也是統一編址的一種方式。根據原理圖,修改其中段引腳,把其irq修改為原理圖上面的iro.網絡卡中本來就有記憶體,當網絡卡接受到資料時候,就...

linux裝置驅動 DM9000移植

一 開發環境 1 核心 linux 2.6.22.6 2 jz2440 3 ubuntu9.10 二 移植過程 1 新增標頭檔案在核心目錄下的 arch arm plat s3c24xx commom smdk.c檔案中新增 if defined config dm9000 defined conf...

驅動 DM9000網絡卡驅動分析

preface 核心原始碼版本 linux 2.6.18 網絡卡驅動 linux核心網路分層結構 dm9000晶元 dm9000是一款高度整合低功耗快速乙太網處理器,該晶元整合了mac和phy。dm9000可以和cpu直接連線,支援8位 16位和32位資料匯流排寬度。該晶元支援10m和100m自適應...