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)

注意

  1. 如果 EEPROM 存在,任何指定的命令列引數將覆蓋 EEPROM 中儲存的相應配置值。

  2. 必須在命令列中指定“io”引數。

  3. 驅動程式的硬體探測例程旨在避免在確定寫入地址處存在 cs89x0 卡之前向 I/O 空間寫入。這可能會導致裝置探測問題。為避免此行為,請在 io= 模組引數後加一。這實際上不會改變 I/O 地址,但它是一個標誌,告訴驅動程式在嘗試識別卡之前部分初始化硬體。如果您不確定提供的地址處是否存在 cs89x0 卡,這可能是危險的。

    例如,要掃描位於 IO 基址 0x300 的介面卡,請指定 IO 地址 0x301。

  4. “duplex=auto”引數僅支援 CS8920。

  5. 如果不存在 EEPROM,所需的最小命令列配置為

    io irq media type (無自動檢測)

  6. 以下附加引數是 CS89XX 預設值(在沒有 EEPROM 或命令列引數的情況下使用的值)。

    • DMA 突發 = 啟用

    • IOCHRDY 啟用 = 啟用

    • 使用 SA = 啟用

    • 如果命令列中未指定,CS8900 預設為半雙工

    • 如果命令列中未指定,CS8920 預設為自動協商

    • 其他配置引數使用重置預設值

    • dma_mode = 0

  7. 您可以使用 ifconfig 設定介面卡的乙太網地址。

  8. 許多 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”引數傳遞給驅動程式。

  9. Cirrus 建議 cs89x0 使用 ISA DMA 通道 5、6 或 7。您可能會發現其他 DMA 通道無法工作。

  10. cs89x0 僅支援接收 DMA。DMA 模式效率顯著更高。用大型 ping 資料包淹沒一臺 400 MHz Celeron 機器,在非 DMA 模式下會消耗 82% 的 CPU 容量。使用 DMA 後,這會降低到 45%。

  11. 如果您的 Linux 核心編譯時內建了即插即用支援,您可以使用以下命令查詢有關 cs89x0 卡的資訊

    cat /proc/isapnp
    
  12. 如果在 DMA 操作期間發現異常行為或網路資料損壞,您應該使用 PC 的 BIOS 降低 EISA 匯流排時鐘速度。

  13. 如果 cs89x0 驅動程式直接編譯到核心中(非模組化),則其 I/O 地址將透過 ISA 匯流排探測自動確定。IRQ 號、媒體選項等從卡的 EEPROM 中確定。

  14. 如果 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 介面卡上執行診斷測試

  1. 在 PC 上啟動 DOS 並啟動 CS8900/20 設定工具。

  2. 介面卡的當前配置會顯示出來。按 ENTER 鍵進入主選單。

  1. 從主選單中選擇“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 上終止測試。

設定診斷網路測試

  1. 選擇一臺帶有 CS8900/20 介面卡且網路連線已知的 PC 作為響應方。執行 CS8900/20 設定工具,並從主選單中選擇“Diagnostics -> Network Test -> Responder”。按 ENTER 鍵啟動響應方。

  2. 返回到要測試的帶有 CS8900/20 介面卡的 PC,並啟動 CS8900/20 設定工具。

  3. 從主選單中,選擇“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 衝突

  1. 系統無法正常啟動(或完全無法啟動)。

  2. 驅動程式無法與介面卡通訊,並報告“未找到介面卡”錯誤訊息。

  3. 無法連線到網路或驅動程式無法載入。

  4. 如果您已將介面卡配置為在記憶體模式下執行,但驅動程式在載入時報告它正在使用 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