rockstone

上善若水,水利万物而不争

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

uClinux版本:uClinux-dist-2009R1-RC6.tar.bz2

1. 修改uClinux-dist/linux-2.6.x/arch/blackfin/mach-bf561/boards/ezkit.c文件

1)添加头文件

#include <linux/dm9000.h>

2)添加DM9000E的配置信息,网卡起始基地址,结束地址,中断号为46,低电平触发

 

代码
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
static struct resource dm9000_bfin_resources[] = {
    [
0]={
        .start 
= 0x2C020000,    // 网卡起始基地址
        .end = 0x2C020000 + 16,
        .flags 
= IORESOURCE_MEM,
    }, 
    [
1]={
        .start 
= IRQ_PF46,    // 中断号
        .end = IRQ_PF46,
        .flags 
= IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, // 低电平触发
    },
};

static struct dm9000_plat_data bf561_dm9000_platdata = {
    .flags 
= DM9000_PLATF_16BITONLY,
};
static struct platform_device dm9000_bfin_device = {
    .name 
= "dm9000",
    .id 
= -1,
    .num_resources 
= ARRAY_SIZE(dm9000_bfin_resources),
    .resource 
= dm9000_bfin_resources,
    .dev 
= {
                .platform_data 
= &bf561_dm9000_platdata,
            }
};
#endif

 

 3)在static struct platform_device *ezkit_devices[] __initdata结构体中添加DM9000

 

#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
    
&dm9000_bfin_device,
#endif

 

2. 修改uClinux-dist/linux-2.6.x/drivers/net/dm9000.c,通u-boot的网卡驱动一样,需要在读写函数后添加延时语句asm("ssync;");

3. 配置编译内核,去掉SMC9111,选中DM9000 support,编译进内核。将编译好的内核tftp到开发板的RAM并启动后,执行ifconfig eth0 up,配置好IP地址后,可以顺利地ping通局域网内主机。

修改好的uClinux下DM9000驱动:/Files/rockstone/uClinux_DM9000.rar

posted on 2010-02-09 17:57  rockstone  阅读(609)  评论(0编辑  收藏  举报