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 标准,并在 10 Mbps 以太网上的 ISA 总线计算机中支持半双工或全双工操作。这些适配器设计用于 16 位 ISA 或 EISA 总线扩展插槽,并提供仅 10BaseT 或 3 媒体配置(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 的应用程序,因此您必须在基于 DOS 的系统中安装和配置适配器,然后使用 CS8900/20 设置实用程序,然后再将其安装在目标 LINUX 系统中。(如果安装基于 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,因此您必须在基于 DOS 的 PC 中安装 CS8920 适配器,并运行 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
此示例加载模块并将适配器配置为使用 200h 的 IO 端口基地址,中断 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”参数。
驱动程序的硬件探测例程旨在避免写入 I/O 空间,直到它知道在写入的地址处存在 cs89x0 卡。这可能会导致设备探测出现问题。为了避免这种情况,请将
io=
模块参数加 1。这实际上不会更改 I/O 地址,但它是一个标志,告诉驱动程序在尝试识别卡之前部分初始化硬件。如果您不确定提供的地址处是否存在 cs89x0 卡,这可能会很危险。例如,要扫描位于 IO 基址 0x300 的适配器,请指定 IO 地址 0x301。
“duplex=auto”参数仅支持 CS8920。
如果不存在 EEPROM,则所需的最小命令行配置为
io irq media type(无自动检测)
以下附加参数是 CS89XX 默认值(不使用 EEPROM 或命令行参数的值)。
DMA 突发 = 启用
IOCHRDY 启用 = 启用
UseSA = 启用
如果在命令行上未指定,则 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 模式的效率明显更高。在非 DMA 模式下,用大型 ping 数据包淹没 400 MHz 的 Celeron 机器会消耗其 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。(64k 模式不可用)。
4. 编译驱动程序¶
cs89x0 驱动程序可以直接编译到内核中,也可以编译到可加载的设备驱动程序模块中。
只需使用标准方法配置驱动程序并编译内核。
4.1. 编译驱动程序以支持 Rx DMA¶
在 2.3 内核系列中删除了 DMA 的编译时可选性。DMA 支持现在是驱动程序中无条件的一部分。它由“use_dma=1”模块选项启用。
5. 测试和故障排除¶
5.1. 已知缺陷和限制¶
有关已知缺陷、驱动程序限制和解决方法列表,请参阅作为此存档一部分分发的 RELEASE.TXT 文件。
5.2. 测试适配器¶
一旦适配器安装和配置完成,就可以使用 CS8900/20 设置实用程序的诊断选项来测试适配器的功能及其网络连接。使用诊断程序的“自检”选项来测试适配器及其分配的硬件配置的功能。您可以使用诊断程序的“网络测试”来测试适配器通过以太网与另一台配备基于 CS8900/20 的适配器卡的 PC 进行通信的能力(该 PC 也必须运行 CS8900/20 设置实用程序)。
注意
设置实用程序的诊断程序设计为仅在 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 寄存器读/写测试确保可以通过 IO 模式访问 CS8900/20,并且 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 配置为发起者。一旦启动发起者,它将向响应器发送数据帧,然后响应器将帧返回给发起者。
接收和发送的总帧数以及接收和发送的 OK 或错误的帧数显示在发起者的显示屏上。用户可以在任意 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 冲突
系统无法正常启动(或根本无法启动)。
驱动程序无法与适配器通信,报告“未找到适配器 (Adapter not found)”错误消息。
您无法连接到网络或驱动程序无法加载。
如果您已将适配器配置为在内存模式下运行,但驱动程序在加载时报告它正在使用 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 :[email protected]
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