Linux下网卡驱动程序.pdfVIP

  • 15
  • 0
  • 约5.18万字
  • 约 34页
  • 2017-08-22 发布于江苏
  • 举报
Linux 下8019 网卡驱动程序 福建鑫诺通信有限公司 陈光平(chenggp_fj@ 163.com ) 本文以 S3C44B0 的CPU 为例,详细解析了 linux 下 RTL8019 网卡驱动程序工作原理,其 间知识大多来源互联网络,特别是浙大潘纲的论文,在此不一一列出,此文目的只是让嵌入 式 linux 爱好者得到更多网卡驱动的资料,并获得交流机会,不足之处请指正 (一)、硬件相关部份 1、CPU 与网卡的连接方式 A8 A0 A9 A1 A 10 A2 A 11 A3 A 12 A4 (s3c44B0 CPU) (RTL 80 19 网卡) CPU 与网卡接线图 上图为 S3c44b0CPU 和网卡的接线图,此接法并非固定,如接法不同,则牵涉到很多相应的 改动,下面会详细分析不同之处 从硬件部门得到:网卡在 CPU 的存储空间上接BANK4 ,即 0 (看44B0 手册) 外部中断号为 :EXTINT3 (irqs.h 文件获得值为 22 ) 上面两个值可以查 CPU 手册,或询问硬件设计人员 由上图可以知道以下数据: (1)、网卡与 CPU 地址线连接错开 8 位(A0 接 A8) (2 )、总共连线,其实 4 根就足够用了,因为每根线可以译码4 个地址空间,总共是 16 个 地址空间,每个地址空间对应一个寄存器地址,而 8019 总共就是 16 个寄存器 (3 )、一般是跳线模式,不使用 9346 芯片 1-1 基地址算法 首先 8019 的基地址是 300H(见 RTL8019 芯片资料:选择 IO 总线地址) ,但是有些硬件已在 芯片中做过了偏移,比如我们的网卡已做了处理,基址已偏移到 0 那么因为网卡 A0 接 CPU 的A8 ,表示基地址左移 8 位,下一个寄存器 reg0 的地址就是: 0(0000,0000,000 10001,0000,0000 ) 还不理解的话我们看另一种接法: A 1 A0 A2 A1 A3 A2 A4 A3 A5 A4 (S3C44B0 CPU ) (RTL8019 芯片) 这种接法地址线只错开一位,我们来看(假如仍使用 BANK4 ): A1A0 ,为何A0 不能接 A0 ,因为 8019 是共用数据线和地址线的,如果 A0 接 A0 的话, 无法配置 8 位和 16 位方式 现在可以看到,基地址为 300H 的话,左移一位(A0-A1),就是 600H,于是算出基地址为: 0下一个寄存器的地址就是 0因为都左移一位,相当于 x2 了 2 、8019 网卡的工作原理 本节主要讨论一下 8019 是怎么工作的,如下图: TPSR TBCR0,1 PSTART RSAR0,1 PSTOP RBCR0,1 16K CURR 双口 RAM BNRY CRDA0,1 CLDA0,1 (本地 DMA

文档评论(0)

1亿VIP精品文档

相关文档