欢迎来到天天文库
浏览记录
ID:31197320
大小:58.34 KB
页数:23页
时间:2019-01-07
《【精品】rtl8019操作规范》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、本系列文章的第三部分主要介绍了SkyEye硬件模拟平台的实现细节。主要内容包括SkyEye的总体设计、SkyEye的可扩展框架、SkyEye的关键数据结构、SkyEye对各种CPU的模拟实现、SkyEye对各种外设的模拟实现、如何安装使用SkyEye以及如何扩展SkyEye的仿真模块等。对SkyEye的深入了解,有助于对嵌入式硬件系统有更深入的认识,特别是对操作系统、驱动程序如何与嵌入式硕件系统进行交互有更深刻的了解。1.1.6SkyEye的网络模拟实现1.RTL8019AS网络芯片模拟的构思和设计概述目前网络在嵌入式系统中应用越来越广泛,通过为SkyEye增加虚拟以太网
2、芯片设备,使SkyEye支持ethernet网络接口模拟。这样在SkyEye硬件模拟平台上运行的操作系统能够与本地Linux主机进行网络通信,当然通过ipchains/iptables等包转发机制可以进一步支持直接跟Internet通信。鉴于目前嵌入式设备中广泛使用了NE2K10Base-T兼容网络芯片,其屮RTL8019AS又是比较有代表性的一种,购买也比较方便,我们就决定模拟它。设计方案完全基于真实的RTL8019AS(NE2000兼容,简称8019AS),但做了部份简化。简化掉的部分主耍包括:•一部分状态寄存器。主要是收发数据包的状态信息,一般在嵌入式系统中用的比较
3、少,因此暂时没有加入模拟。•16位模式DMAo对NE2K的芯片,8位DMA和16位DMA模式仅在收发数据效率上不同,但这对SkyEye来说效率并不是很重要,所以仅模拟了8位DMA模式。•CPU从网络芯片收数据包的RemoteDMARead模式。由于8019AS提供了另一种更高效的SendCommand方式來收数据包,所以为简化起见,没有模拟RemoteDMARead。目前设计虚拟以太网芯片设备对简化的原则是:把虚拟网络芯片的驱动放到真实8019AS网络芯片上去,直接能用就可以了,IT前述不能保证其它系统上的NE2K驱动能直接在SkyEye上用。1.虚拟8019AS网络芯片
4、原理SkyEye本身是一个硬件开发板的模拟器。虚拟8019AS网络芯片是虚拟开发板上一个相对独立的外部设备,这个设备有自己的内部数据结构和操作函数,完成相应的功能。但虚拟8019AS网络芯片对外的接口只是几个提供给SkyEye的API函数和它所占用的系统资源,如MemorymapIo和IRQ等。网络芯片驱动程序看到的只是8019AS的寄存器和它占用的系统中断号,这些寄存器地址位于SkyEye模拟的开发板中某一段10地址空间内,而SkyEye看到的是寄存器地址和虚拟8019AS网络芯片提供给SkyEye的API函数。如果运行在虚拟开发板上的网络芯片驱动程序读写这些寄存器地址
5、,那么SkyEye会截获这些读写操作,并把它们转换成对虚拟8019AS网络芯片API接口nic_read和nic_write函数的调用,从而操作虚拟8019AS网络芯片,并收发数据。这个过程跟真实的硬件系统的逻辑操作是一致的。那么SkyEye跟虚拟8019AS网络芯片交换数据包的同时,8019AS是如何跟主机进行通讯的呢?这是通过Host主机的Linux上安装的tun/tap或vnet虚拟网络接口来实现的。tun/tap和vnet是Linux内核中的一个内核模块,它们模拟了一个简单的点对点网络环境,后文会有进一步的说明。虚拟8019AS网络芯片的整体结构如图0・1所示:图
6、0-18019AS模拟结构图tuc_rud(port)nic^write(portchiQig^SOl?地址空
7、可OxOO-iMF位于阴刖第10地址空TH内模扯控制送辑12孚书的PF.OM:數组、8192孚薛的RAM(数组)不冋娈上的府有寄存爵(结构体)与TWTAP设备的魏据交换?虚拟PHLSQ19加TAP或Vnet设备1.虚拟8019AS网络芯片的内存结构SkyEye模拟的虚拟8019AS网络芯片工作在8位模式下,网络芯片含有8K字节的RAM,地址为0x4000-0x5fff(指的是网络芯片上的存储地址,而不是ISA总线的地址,是网络芯片工作用的存储器),每256个字节
8、称为一页,共有64页。页的地址就是地址的高8位,页地址为OxOO-Oxffo首先看一下0x40-0x5f页,这8k的ram的一部分用来存放接收的数据包,一部分用来存储待发送的数据包,具体由驱动编写者自己决定。(一般发包只要能容纳一个最大的以太网包就可以了,所以定义为0x40-0x45页,即0x4000-0x45ff,约l・5k。剩下的都用来收包)。按照8019AS硬件规范手册上的规定,8位工作模式下只能使用4000—5fff,16位模式才能用到6000-7fff的RAM,所以我们还是以手册为准。D15D0图0・2NE2K兼容网
此文档下载收益归作者所有