目的:通过学习,掌握如何移植、编写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源代码
参见: