RTL8019操作规范.docVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RTL8019操作规范

本系列文章的第三部分主要介绍了SkyEye硬件模拟平台的实现细节。主要内容包括SkyEye的总体设计、SkyEye的可扩 展框架、SkyEye的关键数据结构、SkyEye对各种CPU的模拟实现、SkyEye对各种外设的模拟实现、如何安装使用SkyEye以及如何扩展 SkyEye的仿真模块等。对SkyEye的深入了解,有助于对嵌入式硬件系统有更深入的认识,特别是对操作系统、驱动程序如何与嵌入式硬件系统进行交互 有更深刻的了解。 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 1.1.6? ? ? ? SkyEye的网络模拟实现 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 1.? ? ? ? RTL8019AS网络芯片模拟的构思和设计概述 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 目 前网络在嵌入式系统中应用越来越广泛,通过为SkyEye增加虚拟以太网芯片设备,使SkyEye支持ethernet网络接口模拟。这样在SkyEye 硬件模拟平台上运行的操作系统能够与本地Linux主机进行网络通信,当然通过ipchains/iptables等包转发机制可以进一步支持直接跟 Internet通信。 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 鉴于目前嵌入式设备中广泛使用了NE2K 10Base-T兼容网络芯片,其中RTL8019AS又是比较有代表性的一种,购买也比较方便,我们就决定模拟它。设计方案完全基于真实的 RTL8019AS(NE2000兼容,简称8019AS),但做了部份简化。简化掉的部分主要包括: ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 一部分状态寄存器。主要是收发数据包的状态信息,一般在嵌入式系统中用的比较少,因此暂时没有加入模拟。 16位模式DMA。对NE2K的芯片,8位DMA和16位DMA模式仅在收发数据效率上不同,但这对SkyEye来说效率并不是很重要,所以仅模拟了8位DMA模式。 CPU从网络芯片收数据包的Remote DMA Read模式。由于8019AS提供了另一种更高效的Send Command方式来收数据包,所以为简化起见,没有模拟Remote DMA Read。 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 目前设计虚拟以太网芯片设备对简化的原则是:把虚拟网络芯片的驱动放到真实8019AS网络芯片上去,直接能用就可以了,目前还不能保证其它系统上的NE2K驱动能直接在SkyEye上用。 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 2.? ? ? ? 虚拟8019AS网络芯片原理 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? SkyEye 本身是一个硬件开发板的模拟器。虚拟8019AS网络芯片是虚拟开发板上一个相对独立的外部设备,这个设备有自己的内部数据结构和操作函数,完成相应的功 能。但虚拟8019AS网络芯片对外的接口只是几个提供给SkyEye的API函数和它所占用的系统资源,如Memory map Io和IRQ等。网络芯片驱动程序看到的只是8019AS的寄存器和它占用的系统中断号,这些寄存器地址位于SkyEye模拟的开发板中某一段IO地址空 间内,而SkyEye看到的是寄存器地址和虚拟8019AS网络芯片提供给SkyEye的API函数。如果运行在虚拟开发板上的网络芯片驱动程序读写这些 寄存器地址,那么SkyEye会截获这些读写操作,并把它们转换成对虚拟8019AS网络芯片API接口nic_read和nic_write函数的调 用,从而操作虚拟8019AS网络芯片,并收发数据。这个过程跟真实的硬件系统的逻辑操作是一致的。 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 那么 SkyEye跟虚拟8019AS网络芯片交换数据包的同时,8019AS是如何跟主机进行通讯的呢?这是通过Host主机的Linux上安装的 tun/tap或vnet虚拟网络接口来实现的。tun/tap和vnet是Linux内核中的一个内核模块,它们模拟了一个简单的点对点网络环境,后文 会有进一步的说明。虚拟8019AS网络芯片的整体结构如图 0-1所示: ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? 图 0-1 8019AS模拟结构图 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 3.? ? ? ?

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档