網絡卡(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自適應...