红联Linux门户
Linux帮助

linux内核-dm9000网卡驱动添加

发布时间:2017-05-29 11:29:50来源:linux网站作者:zouleideboke
主机操作系统:CentOS 6.7
交叉编译环境:arm-Linux-gcc
开发板平台:fl440
linux内核版本:linux-3.0
 
之前我的根文件系统挂载起来之后,在开发板上输入ifconfig -a 发现我的以太网卡什么都没有,后来我一个朋友告诉我需要添加网卡驱动,于是通过上网查资料,后来成功的添加了DM9000网卡驱动,过程比较简单但还是要总结一下!
 
1.修改内核源代码:
[zoulei@CentOS linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c
#include <linux/dm9000.h>              //添加DM9000网卡的头文件    
/*并添加如下代码  */  
#define DM9000_BASE    (S3C2410_CS4 + 0x300)    
static struct resource s3c_dm9000_resource[] = {    
[0] = {    
.start = DM9000_BASE,    
.end   = DM9000_BASE + 3,    
.flags = IORESOURCE_MEM    
},    
[1] = {    
.start = DM9000_BASE + 4,    
.end   = DM9000_BASE + 7,    
.flags = IORESOURCE_MEM    
},    
[2] = {    
.start = IRQ_EINT7,    
.end   = IRQ_EINT7,    
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,    
}    
};    
/*            
* The DM9000 has no eeprom, and it's MAC address is set by    
* the bootloader before starting the kernel.    
*/    
static struct dm9000_plat_data s3c_dm9000_pdata = {    
.flags      = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),    
};    
static struct platform_device s3c_device_dm9000 = {    
.name       = "dm9000",    
.id     = -1,    
.num_resources  = ARRAY_SIZE(s3c_dm9000_resource),    
.resource   = s3c_dm9000_resource,    
.dev        = {    
.platform_data  = &s3c_dm9000_pdata,    
},    
};
 
2.修改platform_device *smdk2440_devices[] __initdata结构体为如下,在其中添加启动DM9000
linux内核-dm9000网卡驱动添加
 
3.vim include/linux/dm9000.h  添加如下头文件
[zoulei@CentOS linux-3.0]$vim include/linux/dm9000.h
linux内核-dm9000网卡驱动添加
 
4.make编译
[zoulei@CentOS linux-3.0]$ make
linux内核-dm9000网卡驱动添加
重新make之后,重新生成了linuxrom-s3c2440.bin的可执行文件,我们的内核文件就支持dm9000网卡了,将内核文件重新烧录到开发板中运行你会发现这时候有网卡eth0了,这时候ping 192.168.1.115(虚拟机ip)也可以ping通。
linux内核-dm9000网卡驱动添加
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31147.html