Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39965
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 32
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-30 10:34
文章分类
文章存档

2014年(42)

我的朋友

分类: LINUX

2014-11-19 19:07:09

XC2440开发板上使用的以太网卡芯片是DM9000A,内核中的驱动文件为:drivers/net/dm9000.c,我们需要在mach-xc2440.c文件中加入对dm9000网卡的驱动支持,并创建平台数据:

加入dm9000头文件:
#include

在xc2440_devices[ ]平台设备结构体数组中加入ethernet设备:
&xc2440_ethernet_device,

创建platform_device和platform_data:
  1. /* DM9000A Net */
  2. static struct resource xc2440_dm9k_resource[] = {
  3.     [0] = {
  4.         .start = S3C2410_CS4,
  5.         .end = S3C2410_CS4 + 3,
  6.         .flags = IORESOURCE_MEM
  7.     },
  8.     [1] = {
  9.         .start = S3C2410_CS4 + 4,
  10.         .end = S3C2410_CS4 + 7,
  11.         .flags = IORESOURCE_MEM
  12.     },
  13.     [2] = {
  14.         .start = IRQ_EINT(18),
  15.         .end = IRQ_EINT(18),
  16.         .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
  17.     }
  18. };

说明:DM9000A使用nGCS4片选,也就是使用了存储控制器的BANK4,起始地址是0x20000000, 中断管脚接在了EINT18上,使用上升沿触发中断。在dm9000.c驱动中获得这个resource

  1. /*platform_data*/
  2. static struct dm9000_plat_data xc2440_dm9k_pdata = {
  3.     .flags    =(DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
  4.     .dev_addr    = { 0x08, 0x09, 0x0a, 0xa0, 0x90, 0x80 };
  5. };

  6. static struct platform_device xc2440_ethernet_device = {
  7.     .name        = "dm9000",
  8.     .id        = -1,
  9.     .num_resources    = ARRAY_SIZE(xc2440_dm9k_resource),
  10.     .resource    = xc2440_dm9k_resource,
  11.     .dev        = {
  12.         .platform_data    = &xc2440_dm9k_pdata,
  13.     },
  14. };

说明:向驱动传入flags参数(使用16位数据线,没有EEPROM)和dev_addr(MAC地址)

配置内核,支持网卡:
  1. Device Drivers --->
  2.     [*] Network device support --->
  3.         [*] Ethernet(10 or 100 Mbit) --->
  4.             <*> DM9000 support
  5.     (4) DM9000 maximum debug level

启动时输出:
dm9000 Ethernet Driver, V1.31
eth0: dm9000e at c480c000,c4810004 IRQ 62 MAC: 08:09:0a:a0:90:80 (platform data)

测试网络连接可以用ping命令,测试网速可以用iperf工具

阅读(182) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~