LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1330|回复: 0

s3c2440平台下移植DM9000AEP到linux2.6.33的问题?

[复制链接]
发表于 2011-8-31 01:10:26 | 显示全部楼层 |阅读模式
移植之后,可以检测到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引脚配置为外部中断模式呢?还需要“人工”设置那些相关的中断寄存器吗?

请大侠帮忙,非常感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表