Cirrus Logic LAN CS8900/CS8920 以太网适配器¶
注意
此文档由 Cirrus Logic 为内核 2.2.5 贡献。此版本已由 Andrew Morton 更新至 2.3.48。
但是,这太旧了!这里需要进行一次大清理。
Cirrus 在其网站上提供了此驱动程序的副本,如下所述。通常,您应该使用 Linux 发行版自带的驱动程序版本。
Linux 网络接口驱动程序版本 2.00 <内核 2.3.48>
1. Cirrus Logic LAN CS8900/CS8920 以太网适配器¶
1.1. 产品概述¶
Cirrus Logic 的基于 CS8900 的 ISA 以太网适配器遵循 IEEE 802.3 标准,支持 ISA 总线计算机在 10 Mbps 以太网上的半双工或全双工操作。这些适配器设计用于 16 位 ISA 或 EISA 总线扩展槽,有仅支持 10BaseT 的配置或支持三介质的配置(10BaseT、10Base2 和用于 10Base-5 或光纤网络的 AUI)。
基于 CS8920 的适配器与基于 CS8900 的适配器类似,并增加了即插即用 (PnP) 支持和唤醒帧识别功能。因此,两种类型适配器的配置过程有所不同。有关配置这两种适配器的详细信息,请参阅“适配器配置”部分。
1.2. 驱动程序说明¶
适用于 Linux 的 CS8900/CS8920 以太网适配器驱动程序支持 Linux v2.3.48 或更高版本的内核。它可以直接编译到内核中,也可以在运行时作为设备驱动程序模块加载。
1.2.1 驱动程序名称:cs89x0
1.2.2 驱动程序存档中的文件
Cirrus 网站上的驱动程序文件包括
readme.txt
此文件
build
用于编译 cs89x0.c 的批处理文件。
cs89x0.c
驱动程序 C 代码
cs89x0.h
驱动程序头文件
cs89x0.o
预编译模块(适用于 v2.2.5 内核)
config/Config.in
将 cs89x0 驱动程序包含在内核中的示例文件。
config/Makefile
将 cs89x0 驱动程序包含在内核中的示例文件。
config/Space.c
将 cs89x0 驱动程序包含在内核中的示例文件。
1.3. 系统要求¶
需要以下硬件
Cirrus Logic LAN (基于 CS8900/20) 以太网 ISA 适配器
IBM 或 IBM 兼容 PC,带有: * 80386 或更高处理器 * 210h - 370h 之间 16 字节的连续 IO 空间 * 一个可用 IRQ (CS8900 为 5,10,11,或 12,CS8920 为 3-7,9-15)。
适用于您的网络拓扑的适当电缆(AUI、10BASE-2 需要连接器)。
需要以下软件
LINUX 内核版本 2.3.48 或更高
CS8900/20 设置工具(基于 DOS)
适用于您的内核的 LINUX 内核源文件(如果编译到内核中)
GNU 工具包 (gcc 和 make) v2.6 或更高版本(如果编译到内核或模块中)
1.4. 许可信息¶
本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证第 1 版的条款重新分发和/或修改它。
本程序的发布是希望它会有用,但没有任何担保;甚至没有适销性或特定用途适用性的默示担保。详见 GNU 通用公共许可证。
如需完整的 GNU 通用公共许可证副本,请致函 Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA。
2. 适配器安装与配置¶
基于 CS8900 和 CS8920 的适配器都可以使用存储在板载 EEPROM 中的参数进行配置。如果您想更改 EEPROM 中的适配器配置,则必须使用基于 DOS 的 CS8900/20 设置工具。
当作为模块加载驱动程序时,您可以在命令行上指定适配器的许多配置参数,以覆盖 EEPROM 的设置,或在不使用 EEPROM 时进行接口配置。(基于 CS8920 的适配器必须使用 EEPROM。)详见第 3.0 节“将驱动程序作为模块加载”。
由于 CS8900/20 设置工具是基于 DOS 的应用程序,因此在安装到目标 LINUX 系统之前,您必须在基于 DOS 的系统中使用 CS8900/20 设置工具安装和配置适配器。(如果安装基于 CS8900 的适配器且默认配置可接受,则不需要。)
2.1. 基于 CS8900 的适配器配置¶
Cirrus Logic 出厂的基于 CS8900 的适配器已配置以下“默认”设置
Operation Mode: Memory Mode
IRQ: 10
Base I/O Address: 300
Memory Base Address: D0000
Optimization: DOS Client
Transmission Mode: Half-duplex
BootProm: None
Media Type: Autodetect (3-media cards) or
10BASE-T (10BASE-T only adapter)
仅当与其他适配器存在冲突时,您才应更改默认配置设置。要更改适配器的配置,请运行 CS8900/20 设置工具。
2.2. 基于 CS8920 的适配器配置¶
Cirrus Logic 出厂的基于 CS8920 的适配器配置为启用即插即用 (PnP)。然而,由于 cs89x0 驱动程序不支持 PnP,您必须将 CS8920 适配器安装在基于 DOS 的 PC 中,并运行 CS8900/20 设置工具以禁用 PnP 并在安装到目标 Linux 系统之前配置适配器。未能这样做将导致适配器不活动,并且驱动程序将无法与适配器通信。
****************************************************************
* CS8920-BASED ADAPTERS: *
* *
* CS8920-BASED ADAPTERS ARE PLUG and PLAY ENABLED BY DEFAULT. *
* THE CS89X0 DRIVER DOES NOT SUPPORT PnP. THEREFORE, YOU MUST *
* RUN THE CS8900/20 SETUP UTILITY TO DISABLE PnP SUPPORT AND *
* TO ACTIVATE THE ADAPTER. *
****************************************************************
3. 将驱动程序作为模块加载¶
如果驱动程序被编译为可加载模块,您可以使用“modprobe”命令加载驱动程序模块。许多适配器的配置参数可以作为命令行参数指定给加载命令。此功能提供了一种覆盖 EEPROM 设置或在不使用 EEPROM 时进行接口配置的方法。
示例
insmod cs89x0.o io=0x200 irq=0xA media=aui
此示例加载模块并配置适配器使用 IO 端口基地址 200h、中断 10,并使用 AUI 介质连接。以下配置选项可在命令行上使用
io=### - specify IO address (200h-360h)
irq=## - specify interrupt level
use_dma=1 - Enable DMA
dma=# - specify dma channel (Driver is compiled to support
Rx DMA only)
dmasize=# (16 or 64) - DMA size 16K or 64K. Default value is set to 16.
media=rj45 - specify media type
or media=bnc
or media=aui
or media=auto
duplex=full - specify forced half/full/autonegotiate duplex
or duplex=half
or duplex=auto
debug=# - debug level (only available if the driver was compiled
for debugging)
注意
如果 EEPROM 存在,任何指定的命令行参数将覆盖 EEPROM 中存储的相应配置值。
必须在命令行中指定“io”参数。
驱动程序的硬件探测例程旨在避免在确定写入地址处存在 cs89x0 卡之前向 I/O 空间写入。这可能会导致设备探测问题。为避免此行为,请在
io=
模块参数后加一。这实际上不会改变 I/O 地址,但它是一个标志,告诉驱动程序在尝试识别卡之前部分初始化硬件。如果您不确定提供的地址处是否存在 cs89x0 卡,这可能是危险的。例如,要扫描位于 IO 基址 0x300 的适配器,请指定 IO 地址 0x301。
“duplex=auto”参数仅支持 CS8920。
如果不存在 EEPROM,所需的最小命令行配置为
io irq media type (无自动检测)
以下附加参数是 CS89XX 默认值(在没有 EEPROM 或命令行参数的情况下使用的值)。
DMA 突发 = 启用
IOCHRDY 启用 = 启用
使用 SA = 启用
如果命令行中未指定,CS8900 默认为半双工
如果命令行中未指定,CS8920 默认为自动协商
其他配置参数使用重置默认值
dma_mode = 0
您可以使用 ifconfig 设置适配器的以太网地址。
许多 Linux 发行版使用“modprobe”命令加载模块。此程序使用“/etc/conf.modules”文件来确定在加载驱动程序模块时传递给它的配置信息。上面描述的所有配置选项都可以放置在 /etc/conf.modules 中。
例如
> cat /etc/conf.modules ... alias eth0 cs89x0 options cs89x0 io=0x0200 dma=5 use_dma=1 ...
在这个例子中,我们告诉模块系统,这台机器的以太网驱动程序应该使用 cs89x0 驱动程序。我们要求“modprobe”在加载时将“io”、“dma”和“use_dma”参数传递给驱动程序。
Cirrus 建议 cs89x0 使用 ISA DMA 通道 5、6 或 7。您可能会发现其他 DMA 通道无法工作。
cs89x0 仅支持接收 DMA。DMA 模式效率显著更高。用大型 ping 数据包淹没一台 400 MHz Celeron 机器,在非 DMA 模式下会消耗 82% 的 CPU 容量。使用 DMA 后,这会降低到 45%。
如果您的 Linux 内核编译时内置了即插即用支持,您可以使用以下命令查找有关 cs89x0 卡的信息
cat /proc/isapnp
如果在 DMA 操作期间发现异常行为或网络数据损坏,您应该使用 PC 的 BIOS 降低 EISA 总线时钟速度。
如果 cs89x0 驱动程序直接编译到内核中(非模块化),则其 I/O 地址将通过 ISA 总线探测自动确定。IRQ 号、媒体选项等从卡的 EEPROM 中确定。
如果 cs89x0 驱动程序直接编译到内核中,可以通过向内核提供引导选项“cs89x0_dma=N”来选择 DMA 模式,其中“N”是所需的 DMA 通道号(5、6 或 7)。
内核引导选项可以在 LILO 命令行中提供
LILO boot: linux cs89x0_dma=5
或者它们可以放置在 /etc/lilo.conf 中
image=/boot/bzImage-2.3.48 append="cs89x0_dma=5" label=linux root=/dev/hda5 read-only
在此模式下,DMA Rx 缓冲区大小硬编码为 16 KB。(64 KB 模式不可用)。
4. 编译驱动程序¶
cs89x0 驱动程序可以直接编译到内核中,也可以编译成可加载的设备驱动程序模块。
只需使用标准方法配置驱动程序并编译内核。
4.1. 编译驱动程序以支持 Rx DMA¶
在 2.3 内核系列中,DMA 的编译时可选性已被移除。DMA 支持现在是驱动程序中无条件的一部分。它由“use_dma=1”模块选项启用。
5. 测试与故障排除¶
5.1. 已知缺陷和限制¶
有关已知缺陷、驱动程序限制和解决方法列表,请参阅此存档中分发的 RELEASE.TXT 文件。
5.2. 测试适配器¶
适配器安装配置完成后,可以使用CS8900/20设置工具的诊断选项来测试适配器及其网络连接的功能。使用诊断工具的“自检”选项来测试适配器在您分配的硬件配置下的功能。您可以使用诊断工具的“网络测试”来测试适配器与另一台配备CS8900/20适配器卡(也必须运行CS8900/20设置工具)的PC通过以太网通信的能力。
注意
设置工具的诊断设计为在仅限 DOS 的操作系统环境中运行。请勿在 Windows 95、Windows NT、OS/2 或其他操作系统下的 DOS 或命令提示符会话中运行诊断。
在 CS8900/20 适配器上运行诊断测试
在 PC 上启动 DOS 并启动 CS8900/20 设置工具。
适配器的当前配置会显示出来。按 ENTER 键进入主菜单。
从主菜单中选择“Diagnostics”(ALT-G)。 * 选择“Self-Test”来测试适配器的基本功能。 * 选择“Network Test”来测试网络连接和布线。
5.2.1. 诊断自检¶
诊断自检检查适配器的基本功能以及基于硬件配置期间分配的系统资源通过 ISA 总线进行通信的能力。执行以下测试
IO 寄存器读/写测试
IO 寄存器读/写测试确保 CS8900/20 可以在 IO 模式下访问,并且 IO 基地址正确。
共享内存测试
共享内存测试确保 CS8900/20 可以在内存模式下访问,并且分配的内存地址范围不与系统中的其他设备冲突。
中断测试
中断测试确保与分配的 IRQ 信号没有冲突。
EEPROM 测试
EEPROM 测试确保 EEPROM 可以读取。
芯片 RAM 测试
芯片 RAM 测试确保 CS8900/20 内部的 4K 内存正常工作。
内部环回测试
内部环回测试确保适配器的发送器和接收器正常运行。如果此测试失败,请确保适配器的电缆已连接到网络(例如,检查 LED 活动)。
启动 PROM 测试
引导 PROM 测试确保引导 PROM 存在且可读。失败表示由于硬件问题或引导 PROM 地址分配冲突导致引导 PROM 未成功读取。(测试仅适用于适配器配置为使用引导 PROM 选项的情况。)
测试项目失败表示可能与 ISA 总线上的其他设备存在系统资源冲突。在这种情况下,您应该使用手动设置选项通过为失败的系统资源选择不同的值来重新配置适配器。
5.2.2. 诊断网络测试¶
诊断网络测试通过在同一网络上安装在不同 PC 中的两块 CS8900/20 适配器之间传输数据来验证网络连接是否正常工作。(注意:诊断网络测试不应在路由器两端的两个节点之间运行。)
此测试要求两台 PC 各安装一个基于 CS8900/20 的适配器,并运行 CS8900/20 设置工具。第一台 PC 配置为响应方,另一台 PC 配置为发起方。发起方启动后,它会将数据帧发送给响应方,响应方再将帧返回给发起方。
发起方的显示屏上会显示已接收和传输的帧总数,以及已成功接收和传输或出现错误的帧计数。用户可以随时在任一台 PC 上终止测试。
设置诊断网络测试
选择一台带有 CS8900/20 适配器且网络连接已知的 PC 作为响应方。运行 CS8900/20 设置工具,并从主菜单中选择“Diagnostics -> Network Test -> Responder”。按 ENTER 键启动响应方。
返回到要测试的带有 CS8900/20 适配器的 PC,并启动 CS8900/20 设置工具。
从主菜单中,选择“Diagnostic -> Network Test -> Initiator”。按 ENTER 键开始测试。
您可以随时停止发起方上的测试,同时让响应方继续运行。通过这种方式,您可以转到其他 PC,通过在另一台 PC 上启动发起方来测试它们,而无需停止/启动响应方。
5.3. 使用适配器的 LED¶
2 介质和 3 介质适配器在板的背面,靠近 10Base-T 连接器处,有两个可见的 LED。
链路完整性 LED:绿色 LED“稳定”亮起表示有效的 10Base-T 连接。(仅适用于 10Base-T。绿色 LED 对 10Base-2 或 AUI 连接没有意义。)
TX/RX LED:每次适配器发送或接收数据时,黄色 LED 会短暂亮起。(黄色 LED 在典型网络上会“闪烁”)。
5.4. 解决 I/O 冲突¶
当两个或多个适配器使用相同的 ISA 资源(IO 地址、内存地址或 IRQ)时,就会发生 IO 冲突。安装或配置 CS8900/20 适配器后,您通常可以通过以下四种方式之一检测到 IO 冲突
系统无法正常启动(或完全无法启动)。
驱动程序无法与适配器通信,并报告“未找到适配器”错误消息。
无法连接到网络或驱动程序无法加载。
如果您已将适配器配置为在内存模式下运行,但驱动程序在加载时报告它正在使用 IO 模式,则这表明存在内存地址冲突。
如果发生 IO 冲突,请运行 CS8900/20 设置工具并执行诊断自检。通常,冲突的 ISA 资源将导致自检失败。如果是这样,请重新配置适配器,为冲突的资源选择另一个选项。再次运行诊断程序以检查是否存在进一步的 IO 冲突。
在某些情况下,例如当 PC 无法启动时,可能需要移除适配器并将其安装到另一台 PC 上运行 CS8900/20 设置工具以重新配置。重新安装到目标系统后,再次加载驱动程序之前,运行诊断自检以确保新配置没有冲突。
手动配置适配器时,请记住下表中所示的典型 ISA 系统资源使用情况。
I/O Address Device IRQ Device
----------- -------- --- --------
200-20F Game I/O adapter 3 COM2, Bus Mouse
230-23F Bus Mouse 4 COM1
270-27F LPT3: third parallel port 5 LPT2
2F0-2FF COM2: second serial port 6 Floppy Disk controller
320-32F Fixed disk controller 7 LPT1
8 Real-time Clock
9 EGA/VGA display adapter
12 Mouse (PS/2)
Memory Address Device 13 Math Coprocessor
-------------- --------------------- 14 Hard Disk controller
A000-BFFF EGA Graphics Adapter
A000-C7FF VGA Graphics Adapter
B000-BFFF Mono Graphics Adapter
B800-BFFF Color Graphics Adapter
E000-FFFF AT BIOS
6. 技术支持¶
6.1. 联系 Cirrus Logic 的技术支持¶
Cirrus Logic 的 CS89XX 技术应用支持可通过以下方式联系
Telephone :(800) 888-5016 (from inside U.S. and Canada)
:(512) 442-7555 (from outside the U.S. and Canada)
Fax :(512) 912-3871
Email :ethernet@crystal.cirrus.com
WWW :http://www.cirrus.com
6.2. 联系技术支持前所需信息¶
在联系 Cirrus Logic 获取技术支持之前,请准备好尽可能多地提供以下信息。
1.) 适配器类型(CRD8900、CDB8900、CDB8920 等)
2.) 适配器配置
IO 基址、内存基址、IO 或内存模式启用、IRQ、DMA 通道
即插即用启用/禁用(仅限基于 CS8920 的适配器)
配置为介质自动检测或特定介质类型(哪种类型)。
3.) PC 系统配置
即插即用系统(是/否)
BIOS(品牌和版本)
系统品牌和型号
CPU(类型和速度)
系统 RAM
SCSI 适配器
4.) 软件
CS89XX 驱动程序和版本
您的网络操作系统和版本
您的系统操作系统版本
所有协议支持文件的版本
5.) 显示的任何错误消息。
6.3 获取最新驱动程序版本¶
您可以从 Cirrus Logic 网站获取最新的 CS89XX 驱动程序和支持软件。您也可以联系 Cirrus Logic 的技术支持(电子邮件:ethernet@crystal.cirrus.com)并请求注册自动软件更新通知。
Cirrus Logic 在 http://www.cirrus.com 维护一个网页,其中包含最新的驱动程序和技术出版物。
6.4. 当前维护者¶
2000 年 2 月,该驱动程序的维护工作由 Andrew Morton 接管。
6.5 内核模块参数¶
为了在没有 cs89x0 EEPROM 的嵌入式环境中使用,已实现了内核引导参数 cs89x0_media=
。用法如下
cs89x0_media=rj45 or
cs89x0_media=aui or
cs89x0_media=bnc