Linux開發十八
網卡驅動
象棋小子 1048272975
Internet作爲全球最大的互聯網絡,幾乎總彙了全球的信息資源,越來越多的設備需要連接Internet,共享信息資源。Linux內核已經支持dm9000網卡驅動。
1. dm9000設備
dm9000設備包含了名字、獨有的資源等等一些驅動程序的硬件或自定義信息。通過platform_add_devices(platform_device_register)函數將定義的平臺設備註冊到內核中,用於匹配設備驅動。
內核在drivers\net\ethernet\davicom\dm9000.c中實現了dm9000的網卡驅動, dm9000設備平臺代碼如下。
#include <linux/dm9000.h>
#define MACH_HOME2416_DM9K_BASE (S3C2410_CS1 + 0x0)
/* DM9000AEP 10/100 ethernet controller*/
static struct resourcehome2416_dm9k_resource[] = {
[0]= DEFINE_RES_MEM(MACH_HOME2416_DM9K_BASE, 4),
[1]= DEFINE_RES_MEM(MACH_HOME2416_DM9K_BASE + 4, 4),
[2]= DEFINE_RES_NAMED(IRQ_EINT4, 1, NULL, IORESOURCE_IRQ \
|IORESOURCE_IRQ_HIGHEDGE),
};
static struct dm9000_plat_datahome2416_dm9k_pdata = {
.flags = (DM9000_PLATF_16BITONLY |DM9000_PLATF_NO_EEPROM),
.dev_addr= {0x00, 0x22, 0x12, 0x34, 0x56, 0x90}
};
static struct platform_devicehome2416_device_eth = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(home2416_dm9k_resource),
.resource = home2416_dm9k_resource,
.dev = {
.platform_data = &home2416_dm9k_pdata,
},
};
在static struct platform_device*home2416_devices[]板級平臺設備列表中加入&home2416_device_eth,使dm9000設備能夠註冊到內核中。
2. 內核配置
Linux配置支持dm9000設備驅動,選中Device Drivers->Network devicesupport->Ethernet driver support->DM9000 support。
Linux配置支持tcpip協議,選中Networkingsupport->Networking options->TCP/IP Networking。
3. 網卡測試
網線連接板端以及主機,主機端採用靜態ip,192.168.0.10。板啓動後,設置板端ip,192.168.0.20。
ifconfig eth0 192.168.0.20 up
主機端ping板端,ping 192.168.0.20。
板端ping主機端,ping 192.168.0.10。
4. 附錄
https://pan.baidu.com/s/1slczwhJ
bootloader源碼以及使用說明
https://pan.baidu.com/s/1eRDJtNs
Qt5.8官網源碼
https://pan.baidu.com/s/1nuGmSqt
本系列例程的根文件系統
https://pan.baidu.com/s/1i5btLGT
opev3.2.0官網源碼
https://pan.baidu.com/s/1pLpuHw3
yaffs官網源碼
https://pan.baidu.com/s/1bpkZynt
busybox-1.26.2官網源碼
https://pan.baidu.com/s/1i4EtjfR
tslib官網源碼
https://pan.baidu.com/s/1i5MGRhb
mplayer-1.3.0官網源碼
https://pan.baidu.com/s/1sl0fXlr
基於S3C2416修改的linux-4.10.10源碼