凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

关于 Linux2.6.34下DM9000网卡驱动移植过程

已有 753 次阅读| 2013-8-22 17:07 |个人分类:linux技术

   作者:徐老师  凌阳教育嵌入式培训高级讲师
    DM9000是10/100M自适应的总线型网卡,Linux中对其支持已经非常完善,不同开发板之间移植、修改主要集中在总线的选择及中断选择上
    1)修改arch/arm/mach-s3c2440/mach-smdk2440.c文件,增加以下信息
    /****add by dengwei*********************************/
    #include <linux/dm9000.h>
    static struct resource s3c_dm9k_resource[] =
    {
    [0] =
    {
    .start = S3C2410_CS3,      //网卡连接在CS3总线上(此处跟据不同开发板进行修改)
    .end = S3C2410_CS3 + 3,
    .flags = IORESOURCE_MEM,
    },
    [1] =
    {
    .start = S3C2410_CS3 + 4,   //同上
    .end = S3C2410_CS3 + 4 + 3,
    .flags = IORESOURCE_MEM,
    },
    [2] = {
    .start = IRQ_EINT7,                //根据硬件外部中断管脚修改此数字
    .end = IRQ_EINT7,
    .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
    }
    };
    static struct dm9000_plat_data s3c_dm9k_platdata =
    {
    .flags =DM9000_PLATF_16BITONLY,
    };
    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,
    }
    };
    EXPORT_SYMBOL(s3c_device_dm9k);
    /*************************add by dengwei***************************/
    2)修改 arch/arm/mach-s3c2440/mach-smdk2440.c文件
    修改struct platform_device *smdk2440_devices[]__initdata结构体增加以下代码:
    static struct platform_device*smdk2440_devices[] __initdata =
    {
    &s3c_device_ohci,
    &s3c_device_lcd,
    &s3c_device_wdt,
    &s3c_device_i2c0,
    &s3c_device_iis,
    &s3c_device_dm9k,            //for dm9000   add by dengwei
    };
    3)修改drivers/net/dm9000.c源码:
    在头文件区增加头文件:
    #include <mach/regs-mem.h>
    大约1365行左右增加以下代码:
    static int __devinit dm9000_probe(structplatform_device *pdev)
    {
    //add   here  函数开始处
    }
    /**********add by dengwei******************************************/
    [cpp] view plaincopy
    #if defined(CONFIG_ARCH_S3C2440)
    int oldval_bwscon = *((volatile unsignedint *)S3C2410_BWSCON);
    *((volatileunsigned int *)S3C2410_BWSCON)=(oldval_bwscon&~(3<<16))|S3C2410_BWSCON_DW3_16|S3C2410_BWSCON_WS3|S3C2410_BWSCON_ST3; //设置BANK3:总线宽度为16,使能nWAIT
    *((volatile unsigned int *)S3C2410_BANKCON3) = 0x1f7c; //设置BANK3的时间参数
    #endif
    /**********add by dengwei****************/
    4)修改make menuconfig配置选项:
    Devices  Drivers --->
    Network device support--->
    Ethernet (10 or 100) --->
    [*]DM9000support
    (4)DM9000maxinum   debug level
    //仅保留这两个选项,其余的全部去掉
    5)重新编译内核,烧入开发板中即可
    6)第一次使用的开发板需使用ifconfig eth0 hw ether 12:34:56:78:32:65 设置mac地址
    (MAC地址可以随便设置)
    使用ifconfigeth0 192.168.220.*设置开发板IP
    使用ping命令ping主机即可
    原文链接:http://emb.sunplusedu.com/answer/2013/0821/2116.html
    第三:Linux2.6.34下 USB驱动(U盘\USB鼠标、键盘)
    由于Linux中对USB的驱动已经非常完善,这里只需要按照以下配置  就可以了,配置完后重新编译内核烧到开发板上
    1、修改make menuconfig
    System Type -->
    <*> S3C2410 USB function support
    <*> support for S3C2410 USB character device emulation
    Input core support -->
    <*>Input core support
    <*>keyboard support
    <*>Mouse support
    SCSI device support --->
    < > RAID Transport Class
    <*> SCSI device support
    < > SCSI target support
    [*] legacy /proc/scsi/ support
    *** SCSI support type (disk, tape,CD-ROM) ***
    <*> SCSI disk support
    < > SCSI tape support
    < > SCSI OnStream SC-x0 tapesupport
    < > SCSI CDROM support
    <*> SCSI generic support
    < > SCSI media changer support
    [*] HID Devices --->
    --- HID Devices
    -*- Generic HID support
    [ ] /dev/hidraw raw HID device support
    *** USB Input Devices ***
    <*> USB Human Interface Device(full HID) support
    [ ] PID device support
    [*] /dev/hiddev raw HID device support
    [*] USB support --->
    {*} Support for Host-side USB
    [ ] USB verbose debug messages
    [ ] USB announce new devices
    *** Miscellaneous USB options ***
    [*] USB device filesystem
    [*] USB device class-devices (DEPRECATED)
    <*> OHCI HCD support
    <*> USB Mass Storage support
    --- USB Human Interface Devices(HID)
    <*> USB Human Interface Devices(full HID) support
    [*] /dev/hiddev raw HID device support(EXPERIMENTAL)
    2、插入U盘。
    当系统启动后插入U盘就会出现一些信息,可以看到sda就是U盘设备了,sda1是U盘的一个分区。
    mount  /dev/sda1 /mnt/ -o utf8
    utf8 参数可以识别中文
    3、插入鼠标键盘
    会有相应提示

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 11:14 , Processed in 0.046551 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部