hy7892060 发表于 2011-5-13 15:01:36

请教uclinux-nios2移植中dm9000遇到的问题!谢谢

最近学习SOPC,移植uclinux操作系统,下载的是nios2-linux-20100621,然后在ubutu中进行编译,到板子中启动时,出现dm9000: read wrong id 0x0000000,
.....dm9000 not found (-19),dm9000用的是DE2板子的IP核,在SOPC系统中的名字叫做dm9000,驱动是操作系统里的,没有改动,出现错误后上网查询发现都是针对2410板子的,很是迷茫,板子的网络硬件电路没有问题(买的时候能够ping通),请各位接触过dm9000的给点意见!诚心谢谢了!

hy7892060 发表于 2011-5-17 09:10:21

怎么没人回复啊?请教各位啊!网上有个关于2410移植修改的:
以下是要在linux-2.6.24/drivers/net/dm9000.c 文件中添加的内容:

   4.1 为dm9000 添加硬件复位, 在dm9000_reset 函数开头添加以下代码:
/*reset hardware --add by Eric Fu */
   p { margin-bottom: 0.21cm; }

s3c2410_gpio_cfgpin(S3C2410_GPG2,S3C2410_GPG2_OUTP);


   s3c2410_gpio_setpin(S3C2410_GPG2,0);

udelay(500);   

s3c2410_gpio_setpin(S3C2410_GPG2,1);      

   udelay(500);

s3c2410_gpio_setpin(S3C2410_GPG2,0);

udelay(500);
/*end of add*/

注意: 网上很多移植都没有这一步, 但在我的板子上如果没有这一步, 但板子硬件复位后会出现系统找不到网卡设备, 并出现以下错误信息:
dm9000 Ethernet Driver
dm9000: read wrong id 0x00000000
dm9000: read wrong id 0x00000000
dm9000: wrong id: 0x00000000               

dm9000: not found (0).

hy7892060 发表于 2011-5-17 09:28:09

#if defined(na_DM9000A) && !defined(na_dm9000)   /* defs for DE2 */
#define na_dm9000 na_DM9000A
#define na_dm9000_irq na_DM9000A_irq
#endif

#if defined(CONFIG_DM9000) && defined(na_dm9000)
#include <linux/dm9000.h>
static struct resource dm9k_resource[] = {
        = {
                .start = na_dm9000,
                .end   = na_dm9000 + 3,
                .flags = IORESOURCE_MEM,
        },
        = {
                .start = na_dm9000 + 4,
                .end   = na_dm9000 + 4 + 3,
                .flags = IORESOURCE_MEM,
        },
        = {
                .start = na_dm9000_irq,
                .end   = na_dm9000_irq,
                .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
        }

};
static struct dm9000_plat_data dm9k_platdata = {
        .flags                = DM9000_PLATF_16BITONLY,
};
static struct platform_device dm9k_device = {
        .name                = "dm9000",
        .id                = 0,
        .num_resources        = ARRAY_SIZE(dm9k_resource),
        .resource        = dm9k_resource,
        .dev                = {
                .platform_data = &dm9k_platdata,
        }
};
#endif

这是/nios2-linux/linux2.6/arch/nios2/kernel中的config.c,里面有dm9000的信息,我的板子并不是DE2,但芯片也是ep2c35,是清华大学设计的TE2!

arokh 发表于 2011-5-22 14:39:57

硬件问题吧?管脚分配搞对了没有哇?dm9000的时钟是不是从fpga出来的啊?

hy7892060 发表于 2011-5-27 10:31:34

回复【3楼】arokh 圆圆的饭团
-----------------------------------------------------------------------
硬件我检测了下,发现DM9000的供电电压达到了5.8V,不知道是否有影响,时钟是板子上的50M经过分频变成的25M,管脚分配应该没有问题,我再检测下!但是前段时间这个板子FLASH里面的程序直接跑,网口就是能用的!唉!真是郁闷!谢谢回复啊!
页: [1]
查看完整版本: 请教uclinux-nios2移植中dm9000遇到的问题!谢谢