一、Linux-2.6.30 内核DM9000网卡驱动移植
网卡驱动选择Networking支持,及Network device support->Ethernet (10 or 100Mbit)->DM9000,这个对应的是l 00Mbit的以太网。
1 、在arch/arm/plat-s3c24xx/common-smdk.c 增加D的平台设备。Linux入门培训
#vim arch/arm/plat-s3c24xx/common-smdk.c
添加头文件及 DM9000平台设备结构
下面部分内容添加到static struct platform_device __initdata *smdk_devs[]结构体前面
#include <linux/dm9000.h>
#if defined(CONFIG_DM9000)||(defined(CONFIG_DM9000_MODULE))
/*DM9000*/
static struct resource s3c_dm9k_resource[]={
[0] = {
.start = 0x10000000,
.end = 0x10000003 ,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = 0x11000000,
.end = 0x11000003,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT0,
.end = IRQ_EINT0,
.flags = IORESOURCE_IRQ,
}
};
static struct dm9000_plat_data s3c_dm9k_platdata = {
.flags = DM9000_PLATF_16BITONLY,
};
static struct platform_device s3c_device_dm9k = {
.name = "dm9000",
.id = 0,
.num_resources = ARRAY_SIZE(s3c_dm9k_resource),
.resource = s3c_dm9k_resource,
.dev = {
.platform_data = &s3c_dm9k_platdata,
}
};
#endif
(2) 在 static struct platform_device __initdata *smdk_devs[]C语言教程中加入网卡设备
static struct platform_device __initdata *smdk_devs[] = {
&s3c_device_nand,
&smdk_led4,
&smdk_led5,
&smdk_led6,
&smdk_led7,
&s3c_device_dm9k,
};
2 、 修改dm9000.c及dm9000.h文件
将当前dm9000目录下dm9000.c替代内核源码下driver/net/dm9000.c
将当前dm9000目录下dm9000.h替代内核源码下driver/net/dm9000.h
3 、 配置内核将 DM9000 编译入内核
#make menuconfig
做如下修改:
Device Driver --->
Network device support --->
[ * ] Network device support
Ethernet(10 or 100Mbit)--->
< * >DM9000 support
再新编译
#make
至此,DM9000网卡可以驱动起来。可以使用ping指令尝试ping宿主机,但要注意ping的次数,一定要加上次数,应为此时的开发板系统是经过移植裁剪的系统,与宿主机系统有区别。ping时未加上次数限制,则会一直ping下去,令你无法操作C语言入门。
#ping -c4 192.168.2.100 //-c4指完成4次ping。
可能出现问题
现象如图 15‑14所示。
解决方法
第一种方法:将1269行的priv改为ml_priv
第二种方法:
# vi include/linux/netdevice.h
修改net_device结构体如下
623 */
624 // void *priv;
625 char name[IFNAMSIZ];
本文转载于C语言程序设计,http://www.weicedu.com/thread-275845-1-1.html
|
【Linux基础】网络接口驱动移植
最新推荐文章于 2023-09-07 15:58:01 发布