网络驱动移植之简述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这个寄存器。
网络驱动移植之简述CS8900A网络芯片的基本原理的更多相关文章
- 网络驱动移植之解析Linux网络驱动的基本框架
内核源码:linux-2.6.38.8.tar.bz2 概括而言,编写Linux网络驱动其实只要完成两件事即可,一是分配并初始化网络设备,二是注册网络设备. 1.分配并初始化网络设备 动态分配网络设备 ...
- 网络驱动移植之net_device结构体及其相关的操作函数
内核源码:Linux-2.6.38.8.tar.bz2 在Linux系统中,网络设备都被抽象为struct net_device结构体.它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程 ...
- 网络驱动移植之例解netdev_priv函数
版权声明:本文为博主原创文章,未经博主允许不得转载. 开发平台:Ubuntu 11.04 编译器:gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 内核 ...
- 基于335X平台的UBOOT中交换芯片驱动移植
基于335X平台的UBOOT中交换芯片驱动移植 一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3 ...
- Linux网络驱动--snull
snull是<Linux Device Drivers>中的一个网络驱动的例子.这里引用这个例子学习Linux网络驱动. 因为snull的源码,网上已经更新到适合最新内核,而我自己用的还是 ...
- Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)
catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...
- 达人眼中的WINCE网络驱动
实际上在WinCE上开发网络驱动,比如设计一个NIC驱动, 大多数情况,是从XP移植NDIS Miniport驱动(小端口驱动)到WinCE.什么是ndis?Ndis做什么用的? 什么是minipor ...
- 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
第10章 RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...
- 【RL-TCPnet网络教程】第9章 RL-TCPnet网络协议栈移植(uCOS-III)
第9章 RL-TCPnet网络协议栈移植(uCOS-III) 本章教程为大家讲解RL-TCPnet网络协议栈的uCOS-III操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移 ...
随机推荐
- 404 Not Found 由来
404 NOT FOUND! 抱歉,沒有找到您需要的文章!! 什么是 404 Not Found 404页面是网站必备的一个页面,它承载着用户体验与SEO优化的重任.404页面通常为用户访问了网站上不 ...
- win7 如何将python加入环境变量
我的电脑->右键属性->高级->系统变量 path里加上安装路径,比如 ";C:\Python26;" 请加分号附在其他path后面而不是直接覆盖.
- 大数据学习——yum练习安装jdk
yum list | grep jdk 安装jdk-1.8.0版本 -openjdk* 安装后,执行java -version 配置环境变量 使用vim /etc/profile 编辑profile文 ...
- 什么是Kubernetes?
刚刚进学校实验室,第一次开会导师和小组同学说了n次Kubernetes,从来没听过,一脸懵逼. Kubernetes也有很多人把它叫K8S, 原文链接:http://omerio.com/2015/1 ...
- BZOJ 2763: [JLOI2011]飞行路线 【SPFA】
Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格.Al ...
- hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
#define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully reading the entire ...
- BZOJ1700: [Usaco2007 Jan]Problem Solving 解题
每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做. 神奇的DP..竟没想出来.. ...
- 《effective C++》:条款36——绝不重新定义继承而来的非虚函数
(1)当派生类中重写了基类的非虚函数时,这个时候这个函数发生的是静态绑定 下面中的代码中: 定义一个基类B,基类定义了函数fcm,fcm是非虚的函数. 定义一个派生类D,派生类重新定义了fcm. 当用 ...
- Codeforces Round #292 (Div. 2) D. Drazil and Tiles [拓扑排序 dfs]
传送门 D. Drazil and Tiles time limit per test 2 seconds memory limit per test 256 megabytes Drazil cre ...
- 简述WEB项目前端脚本的一次重构历程,labJs,requireJs实践[转载]
重构前的状态: 大量的js代码混在繁多的Jsp文件中,对第三方的js库依赖也很杂乱.虽然在部分交互性较强的页面中,将js代码分离到了独立的js文件中,但是代码结构及依赖管理依然很乱.不说新人来了 ...