s3c2440平台下移植DM9000AEP到linux2.6.33的问题?
时间:2011-08-31
来源:互联网
移植之后,可以检测到dm9000设备,但ping不通局域网内的任何电脑,我是这样移植的,请大家帮我看看哪里有错误?
我的步骤如下:
------------------------------------------------------------------------
1,在百问网上看到一个前辈说“内核已经支持DM9000AEP,如果DM9000AEP不使用nWAIT信号,那么在UBOOT里设置相应的BANK即可 ”,所以我没有对linux/drivers/net/dm9000.c文件做任何修改,保持原封不动。
2,修改linux/arch/arm/mach-s3c2440/mach-smdk2440.c文件:
(2.1)static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9000,//添加了这一行
&s3c_device_rtc,
};
(2.2) #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
(2.3)
static struct resource mini2440_dm9000_resource[] = {
[0] = {
.start = MACH_MINI2440_DM9K_BASE,
.end = MACH_MINI2440_DM9K_BASE + 3,
.flags = IORESOURCE_MEM
},
[1] = {
.start = MACH_MINI2440_DM9K_BASE + 4,
.end = MACH_MINI2440_DM9K_BASE + 7,
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
}
};
(2.4)
static struct dm9000_plat_data mini2440_dm9000_pdata = {
.flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};
(2.5)
static struct platform_device mini2440_device_dm9000 = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(mini2440_dm9000_resource),
.resource = mini2440_dm9000_resource,
.dev = {
.platform_data = &mini2440_dm9000_pdata,
},
};
(2.6) #include <linux/dm9000.h>
-----------------------------------------------------------------
我的问题有3个:
1,上面就是我移植的完整步骤,有什么遗漏和错误吗?
2,dm9000.c文件不用修改吗?原封不动就行吗?
3,dm9000使用了外部中断IRQ_EINT7,这在上面mini2440_dm9000_resource中已经声明了,并且设置了“.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,”。那么我是否还需要“人工”的把IRQ_EINT7引脚配置为外部中断模式呢?还需要“人工”设置那些相关的中断寄存器吗?
请大侠帮忙,非常感谢!!!
我的步骤如下:
------------------------------------------------------------------------
1,在百问网上看到一个前辈说“内核已经支持DM9000AEP,如果DM9000AEP不使用nWAIT信号,那么在UBOOT里设置相应的BANK即可 ”,所以我没有对linux/drivers/net/dm9000.c文件做任何修改,保持原封不动。
2,修改linux/arch/arm/mach-s3c2440/mach-smdk2440.c文件:
(2.1)static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_dm9000,//添加了这一行
&s3c_device_rtc,
};
(2.2) #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
(2.3)
static struct resource mini2440_dm9000_resource[] = {
[0] = {
.start = MACH_MINI2440_DM9K_BASE,
.end = MACH_MINI2440_DM9K_BASE + 3,
.flags = IORESOURCE_MEM
},
[1] = {
.start = MACH_MINI2440_DM9K_BASE + 4,
.end = MACH_MINI2440_DM9K_BASE + 7,
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
}
};
(2.4)
static struct dm9000_plat_data mini2440_dm9000_pdata = {
.flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};
(2.5)
static struct platform_device mini2440_device_dm9000 = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(mini2440_dm9000_resource),
.resource = mini2440_dm9000_resource,
.dev = {
.platform_data = &mini2440_dm9000_pdata,
},
};
(2.6) #include <linux/dm9000.h>
-----------------------------------------------------------------
我的问题有3个:
1,上面就是我移植的完整步骤,有什么遗漏和错误吗?
2,dm9000.c文件不用修改吗?原封不动就行吗?
3,dm9000使用了外部中断IRQ_EINT7,这在上面mini2440_dm9000_resource中已经声明了,并且设置了“.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,”。那么我是否还需要“人工”的把IRQ_EINT7引脚配置为外部中断模式呢?还需要“人工”设置那些相关的中断寄存器吗?
请大侠帮忙,非常感谢!!!
作者: jurenshiyuzhu2014 发布时间: 2011-08-31
帮顶了
作者: shelfloader 发布时间: 2011-08-31
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28