zoukankan      html  css  js  c++  java
  • 网络驱动移植之简述CS8900A网络芯片的基本原理

       CS8900A数据手册:http://www.cirrus.com/cn/products/cs8900a.html

        1、概述

        CS8900A是CIRRUS LOGIC公司生产的低功耗、性能优越的16位以太网控制器,集成了以下五大功能模块:

        (1)、带24毫安驱动的直接ISA总线接口,可选择配置4个中断号和3个DMA通道。

        (2)、片内4K字节RAM,是CS8900A网络芯片的控制寄存器和数据收发缓冲器,可工作在内存映射模式、I/O端口模式或者扩展的DMA模式下。

        (3)、MAC Engine,完全兼容IEEE 802.3以太网标准(ISO/IEC8802-3,1993),主要负责处理以太网数据帧的发送和接收,包括冲突检测、数据帧头的产生和检测,CRC校验码的生成和验证,以及冲突自动重传等功能。

        (4)、串行EEPROM控制器,可直接外接EEPROM芯片,用于存储相关配置信息,并且这些配置信息在启动时能被自动载入CS8900A。

        (5)10BASE-T滤波收发器以及适用于10BASE-2、10BASE-5和10BASE-FL等三种以太网类型的AUI收发器。

        CS8900A的内部结构图如下:

     

        2、片上4K字节RAM的映射模式

        (1)、片上4KB内存(被称作PacketPage)其实质是控制CS8900A运行的各种寄存器(注意它们的位数并不一样,不像S3C2410里的寄存器都是32位的),这些寄存器被分为五类,详情请参考以下各表(第1列是寄存器在RAM中的偏移地址,第2列是寄存器的大小,第3列是寄存器的操作权限,第4列是寄存器的功能说明)。

        总线接口寄存器:

     

        状态/控制寄存器:

     

        其中包含16个配置/控制寄存器(每个寄存器16位)和16个状态/事件寄存器(每个寄存器16位)。

        发送参数寄存器:

     

        地址过滤寄存器:

     

        数据帧收发寄存器:

     

        CS8900A接收的数据帧就临时存放在以0x0404开始的位置,将要发送的数据帧就被临时存放在以0x0A00开始的地方。

        关于这些寄存器的作用及其每位的详细说明请参考CS8900A的数据手册。

        (2)、内存映射模式

        当CS8900A被配置为内存映射模式时,片上4KB内存被直接映射到主机内存一个连续的4KB区域中,这样主机就可以像使用自己的内存一样直接使用这个片上4KB内存。举例,如下图(Memory Base Address寄存器设为0):

     

        (3)、I/O映射模式(默认模式)

        当CS8900A被配置为I/O模式时,主机只能通过8个被映射到主机I/O空间的16位的I/O端口来间接地访问片上4KB内存。S3C2410没有所谓的I/O空间,所以这8个16位I/O端口也被映射到其CPU可直接访问的内存空间中。举例,如下图:

     

        说明:上图中的偏移量指的是0x0000到0x000E;I/O模式基地址的默认值为0x300,存放在I/O Base Address寄存器中,是可以修改的。

        在I/O模式下,CPU可以直接访问这8个16位的I/O端口,但访问片上4KB内存时只能通过PacketPage Pointer和PacketPage Data(Port 0用于16位数据,和Port 1一起可用于32位数据)等端口间接地访问。例如,先把片上4KB内存上的偏移地址0x0120写入PacketPage Pointer端口,然后就可以通过PacketPage Data端口读写0x0120这个寄存器。

  • 相关阅读:
    轻重搭配
    EF的优缺点
    使用bootstrap-select有时显示“Nothing selected”
    IIS发布 HTTP 错误 500.21
    js添加的元素无法触发click事件
    sql server查看表是否死锁
    sql server把一个库表的某个字段更新到另一张表的相同字段
    SQLSERVER排查CPU占用高的情况
    SQL server中如何按照某一字段中的分割符将记录拆成多条
    LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.
  • 原文地址:https://www.cnblogs.com/Ph-one/p/6422406.html
Copyright © 2011-2022 走看看