DM9000C网卡驱动 27.Linux-DM9000C网卡移植(详解)

目的:通过学习,掌握如何移植、编写DM9000C网卡驱动

一、概述:

DM9000是一款高度集成低功耗快速以太网处理器,该芯片集成了MAC和PHY。DM9000可以和CPU直接连接,支持8位、16位和32位数据总线宽度。该芯片支持10M和100M自适应以太网接口,内部有16K的FIFO以及4K双字节SRAM,支持全双工工作。内部集成了接收缓冲区,可以在接收到数据的时候把数据存放到缓冲区中,链路层可以直接把数据从缓冲区取走

1.1 DM9000C原理图

信号线(#表示低电平有效):

  • SD0~15: 16位数据线,有CMD引脚决定访问类型
  • CMD:      命令线,当CMD为高,表示SD 传输的是数据,CMD为低表示传输的是地址
  • INT:         中断引脚,接在2440的GPF7脚上
  • IOR#:      读引脚,接在2440的nOE脚上
  • IOW#:     写引脚,接在2440的nWE脚上
  • CS#:       片选,放在2440的bank4的片选上面
  • VDD:       芯片内部工作电压

1.2 DM9000的基地址

DM9000C网卡芯片与处理器的接口只有一根地址线、即CMD引脚接在bank4的LADDR2上面,说明网卡芯片开放给处理器的只有两个地址,查看芯片手册可知:

CMD为高电平时,访问DM9000的数据端口,数据端口地址为0x20000004

CMD为低电平时,访问DM9000的地址端口,地址端口地址为0x20000000

片选信号CS#与nGCS4相接,即选中bank4,其区间位于: 0X20000000~0X28000000,

当我们访问这个区间的地址,内存控制器便会使能网卡DM9000C的使能脚,所以我们的DM9000C的io基地址=0X20000000

DM9000收发数据过程

当DM9000C收到外部的数据后,会暂存到内部地址中,然后产生一个上升沿中断,等待2440读取数据

当DM9000C将2440的数据转发出去后,也会产生一个上升沿中断给2440

如下图所示,DM9000C的中断引脚位于pin34脚,接在2440的GPF7引脚上,使用的中断为EINT7

二、DM9000网卡驱动框架及源码分析

参见:

嵌入式Linux——网卡驱动(3):结合硬件分析厂家提供驱动代码dm9dev9000c.c

三、修改厂家提供的DM9000C源代码

参见:

27.Linux-DM9000C网卡移植(详解)

猜你喜欢

转载自www.cnblogs.com/y4247464/p/10430278.html