基于4412的dm9000驅動移植
時間:2018-09-29 來源:未知
1 概述
以太網高速穩定的特性比Wifi無線傳輸有一定的優勢,當無線傳輸無法滿足一些智能設備,需要開發設計以太網模塊。Linux支持以太網系統,結合4412開發板,重點學習dm9000驅動的設計與實現。
2 硬件資源分析
2.1 4412開發板以太網方案
UT4412BV02 評估板板載100M/10M 自適應網口,網口芯片采用DM9000芯片。接口采用具有Link / Active 指示燈和隔離變壓器的RJ45 插座。如下圖所示:

圖 2 1 以太網接口圖
開發板以太網的硬件連接圖如下所示:

圖 2 2 硬件連接圖
SD[0-15]為數據接口(與PCU的DATA[15:0]對應連接);
INT為中斷信號(與CPU的EINT5接口相連);
地址線ADDR2,由于DM9000的地址信號和數據信號復用,使用CMD引腳來區分它們(CMD為低時數據總線上傳輸的是地址信號,CMD為高時數據總線上傳輸的是數據信號)。訪問DM9000內部寄存器時,需要先將CMD置為低電平,發出地址信號,然后將CMD置為高電平,讀寫數據;
其它外圍電路控制接口暫不需要驅動配置管理。
2.2 DM9000網卡
DM9000是一款高度集成的、低成本的單片快遞以太網MAC控制器,含有通用處理器接口、10M/100M物理層和16kB的SRAM。DM9000的特點:
支持的處理接口類型:以字節/字/雙字的I/O指令訪問DM9000內部數據。
集成的10M/100M收發器。
支持MII/RMII接口。
支持半雙工背壓流量控制模式。
IEEE802.3x全雙工流量控制模式。
支持遠端喚醒和連接狀態變化。
集成4KB的雙字SRAM。
支持4個GPIO管腳。
低功耗模式。
I/O管腳3.3V和5V兼容。
100-pinCMOS工藝LQFP封裝。
3 驅動代碼設計
3.1 驅動代碼設計
1) 初始化數據結構
define S5P_PA_DM9000 EXYNOS4_PA_SROM_BANK(3)
static struct resource smdkv210_dm9000_resources[] = {
[0] = {
.start = S5P_PA_DM9000,
.end = S5P_PA_DM9000 + 0x3,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = S5P_PA_DM9000 + 0x4,
.end = S5P_PA_DM9000 + 0x7,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT(5),
.end = IRQ_EINT(5),
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
},
};
static struct dm9000_plat_data smdkv210_dm9000_platdata = {
.flags=DM9000_PLATF_16BITONLY|DM9000_PLATF_NO_EEPROM,
.dev_addr = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 },
};
struct platform_device smdkv210_dm9000 = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(smdkv210_dm9000_resources),
.resource = smdkv210_dm9000_resources,
.dev = {.platform_data = &smdkv210_dm9000_platdata,
},
};
3.2 測試驅動
查看以太網口(ifconfig),如下圖所示,出現“eth0”設備,則網卡正常加載成功。

將編譯好的內核鏡像燒寫到開發板上,利用PC機進行測試,用網線連接PC和開發板接口,分別設置PC和開發板的IP地址,利用ping命令測試網絡可通性,則證明開發板的以太網驅動可行。
具體步驟如下:
1設置開發板的IP地址。
ifconfig eth0 192.168.1.10 netmask 255.255.255.0(設置開發板的IP地址)
2設置PC機的IP地址。
設置PC機的IP地址為192.168.1.11,子網掩碼255.255.255.0。
3用網線將開發板與PC機相連。
4測試連通性,在主機上運行ping命令,觀察是否丟包及網速。
ping 192.168.1.10

