DM9000网卡驱动分析(转)】的更多相关文章

1. Linux网络体系结构由以下5部分组成 ① 系统调用接口: 位于Linux网络子系统的顶部,为应用程序提供访问内核网络子系统的方法,主要指socket系统调用. ② 协议无关接口: 实现一组基于socket的通用函数来访问不同的协议.(Linux中的socket使用sock结构来描述(定义于include/net/sock.h),该结构包含特定socket所需要的所有状态信息,还包含socket所使用的特定协议和在socket上可以执行的一些操作.) ③ 网络协议: 用于实现具体的网络协议…
Preface    内核源码版本:linux-2.6.18    网卡驱动·linux内核网络分层结构:http://infohacker.blog.51cto.com/6751239/1221140   DM9000芯片 DM9000是一款高度集成低功耗快速以太网处理器,该芯片集成了MAC和PHY.DM9000可以和CPU直接连接,支持8位.16位和32位数据总线宽度.该芯片支持10M和100M自适应以太网接口,内部有16K的FIFO以及4K双字节SRAM,支持全双工工作. DM9000内部…
s3c6410自带的DM9000网卡驱动也是基于platform设备模型. 其定义的设备资源在arch/arm/mach-s3c64xx/mach-smdk6410中.有网卡的resource resource dm9000_resources[],还有一些板级信息,dm9000_plat_data dm9000_setup.   1.宏及参数  //板级.系统定义 1 #define DM9000_PHY 0x40 /* PHY address 0x01 */ 2 3 #define CARD…
1.MAC控制器.网卡.PHY.MDIO.mii.gmii.rgmii概念扫盲 网卡在功能上包含OSI模型的两个层,数据链路层和物理层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准.数据编码和电路等,并向数据链路层设备提供标准接口.数据链路层则提供寻址机构.数据帧的构建.数据差错检查.传送控制.向网络层提供标准的数据接口等功能.网卡中负责数据链路的芯片叫做MAC控制器,负责物理层的芯片叫做PHY.所以,一个网卡由MAC控制器和PHY组成. MAC控制器与PHY连接使用MII(…
一.dm9000_porbe函数分析 不同于u-boot代码,tq2440中的DM9000更加复杂,需要分析的点也很多: /* * Search DM9000 board, allocate space and register it */ static int __devinit dm9000_probe(struct platform_device *pdev) { struct dm9000_plat_data *pdata = pdev->dev.platform_data; struc…
网卡初始化 1.分配描述结构,alloc_etherdev 2.获取平台资源,platform_get_resource 2.1.在s3c_dm9k_resource中有相关的资源 2.2.add地址由CS4和ADD2决定,是20000000 2.3.dat地址由CS4和ADD2决定,是20000004 2.4.中断资源是EINT7 3.虚拟地址映射,ioremap 4.读取芯片类型 5.设置操作函数集 6.读取MAC地址 7.注册网卡驱动,register_netdev 8.启动发送队列,ne…
还是利用 mini2440移植uboot-2008.10 (一)  修改好的代码 通过观察可以发现,mini2400使用的网卡芯片是DM9000,在uboot-2008.10源码中已经支持该芯片的驱动(drivers/net/dm9000.c),但是并不完善 具体原理还不是很清楚,现在只是做一下移植步骤的记录 1.修改uboot配置文件(include/configs/mini2440.h) /* 54 * Hardware drivers 55 */ #if 0 #define CONFIG_…
以太网(Ethernet)是一种计算机局域网组网技术,基于IEEE 802.3标准,它规定了包括物理层的连线.电信号和介质访问层协议. Ethernet接口的实质是MAC通过MII总线控制PHY的过程. 硬件原理分析 Ethernet网口通常由CPU.MAC和PHY三部分组成,通常用DMA控制器参与网口数据传输,以减轻CPU的负担.有的CPU内部集成MAC控制器,有的则采用外置的MAC芯片. MII(Media Independent Interface 媒体独立接口)是IEEE 802.3标准…
平台是最最经典的s3c2440了,说了要做这件事情很久了,就是改几行代码,一直没有做.前几天逼了自己一下,终于给做了,拖延症患者伤不起. 以下是需要读者对napi机制有所熟悉: step1:在board_info结构体里面增加struct napi_struct napi:(这个还用说……) step2:在dm9000_probe函数中增加netif_napi_add(ndev, &db->napi, dm9000_napi_poll, 64); dm9000_napi_poll函数实现如下…
DM9000数据发送 DM9000数据发送函数是在/drivers/net/dm9000.c中的dm9000_start_xmit函数 static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev){ //发送数据长度 board_info_t *db = netdev_priv(dev); iow(db, DM9000_TXPLL, (skb->len)>>); iow(db, DM9000_TXPLH…