AX88796BLF/BLI 設計手引き

AX88796BLF/BLI 設計手引き
ソフトウェア編 Rev1.0
目次
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
◆AX88796B
設計資料一覧 ……………………………………………………… 2
対応ドライバ………………………………………………………… 2
NE2000互換 ……………………………………………………… 3
ドライバ作成時のポイント(1) ……………………………………… 3
ドライバ作成時のポイント(2) ……………………………………… 4
NE2000との違い …………………………………………………… 4
内蔵SRAM・マップ ………………………………………………… 5
ソフトウェア・リセット ………………………………………………… 5
Ready状態を確認 ………………………………………………… 6
MII PHYレジスタ …………………………………………………… 6
local/Remote DMA………………………………………………… 7
受信パケット・ヘッダ ……………………………………………… 7
受信バッファ・リング………………………………………………… 8
受信バッファ・フル(満杯)とエンプティ(空) ……………………… 8
電源制御(1) (2) …………………………………………………… 9
送信バッファ・リング………………………………………………… 10
Back-to-Back送信 ………………………………………………… 10
アドバンス機能 …………………………………………………… 11
フロー・コントロール ………………………………………………… 11
VLAN機能 ………………………………………………………… 12
Wake-On-LAN……………………………………………………… 12
Back-To-Back送信 ………………………………………………… 13
Txバッファ・リング機能 …………………………………………… 13
Tx バッファ・リング処理 (1) ……………………………………… 14
ドライバ・プログラミング処理 (1) ………………………………… 14
ドライバ・プログラミング処理 (2) 初期化 ………………………… 15
ドライバ・プログラミング処理 (2) 割り込み処理 ………………… 16
ドライバ・プログラミング処理 (2) パケット送信処理 …………… 16
ドライバ・プログラミング処理 (2) パケット受信処理 …………… 17
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B 設計資料一覧
●データシート(ASIX社のHPからダウンロード可)
●AX88796B Software Programming Guide(同上)
●各種ドライバ/ソース・ファイル(同上)
●AX88796B Migration from AX88796 Application Note(AX88796からAX88796Bへの移行手順書)
●デモボード(MCMより購入可)
1. ISA-BUS対応デモボード
2. SMDK2440デモボード
3. 8051搭載デモボード
●ASIX社 Webサイト http://www.asix.com.tw/
AX88796B 対応ドライバ
●チップメーカASIX社より
1. Winodws2000/XP対応ドライバ(ISAバス・デモ・ボード対応);バイナリのみ
2. SMDK2440 platform向けLinux2.4.x、Linux2.6.x対応ドライバ;サンプル・ソース・コード
3. SMDK2440 platform向けWindows CE5.0;バイナリ・コード(但し、ソース・コードは提供可)
●OS提供メーカ・ミスポ社より
1. uITRON4.0準拠のサンプル・ドライバを提供
株式会社ミスポ・ホーム・ページ http://www.mispo.co.jp/
●NE2000互換ドライバ・ソースの移植
1. VxWorks;BSP(Board Support Package)のソース利用
2. その他NE2000各種ドライバの移植実績多数あり
2
AX88796B NE2000互換
●Ethernetの10BASE-Tインターフェースを持ったネットワークカードのうち、Novell社純正のネットワークカード「NE2000」と互換性のあるカード。また、それらのカードが持つ、カード固有の機能を切り離したNE2000互換動作モー
ド。現在ほとんどのネットワークカードはNE2000互換モードを持っているため、その製品固有のデバイスドライバ(制
御ソフトウェア)が用意できない場合でも、ほとんどのOSが標準で用意しているNE2000用ドライバを使うことで、
最低限の機能は利用することができる。NE2000はNovell社が同社のネットワークOS「NetWare」の動作検証用
に開発したカードで、ネットワークカードの業界標準として広く普及した。同社は1994年にネットワークカード部門を
売却した。現在ではNE2000自体は販売されていない。出典:http://e-words.jp/
●ハードウェア・チップ的には、National Semiconducor社 イーサネット・コントローラDP8390のレジスタ互換品を指
すことが多い
●NE2000互換のメリットとは?
1. ソフトウェア開発工数の低減(移植性がよい)
2. ソフトウェア資産が豊富
AX88796B ドライバ作成時のポイント(1)
●Linuxにおけるネットワーク・プロトコル・スタック構成
ユーザ・レベル・アプリケーション
ソケット(socket,read,write,….)
UDP/TCP
IP
ICMP
DHCP
ARP
ネットワーク・インターフェース(netif)
ネットワーク・デバイス・ドライバ
PCIバス等
ネットワーク・デバイス(ハードウェア)
3
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B ドライバ作成時のポイント(2)
●OSは?
1. μITRON⇒ミスポ社のNORTiを推奨(TCP/IPプロトコル・スタックが標準添付);組み込み機器で多数実績
あり、確実に動作する
2. Linux⇒ASIX社提供のソース・コードを移植またはLinuxソース・コードからNE2000互換ソースを移植、Linuxカーネルに追随する必要あり
3. Winodws CE⇒ASIX社よりソース・コード提供可(要相談)
4. その他(VxWorks等のRealTime-OS)⇒弊社営業に相談
●TCP/IPプロトコルは?
1. ドライバとは一般的に、ハードウェア機能を隠蔽して、OSが提供する標準的なインターフェース(API)に合致
するように作られた最下位層のソフトウェア:TCP/IPのような上位機能とは別物
2. 標準的なTCP/IPプロトコル・スタックは現在あるものを有効に利用する(Windows CEやLinuxは既にOSや
カーネルに付属しています)⇒枯れた技術(IPv4は安定している、バグは少ないはず)
●新たに作らないのがベスト・ソリューション
1. 利用できるものは徹底的に利用したい(安定しているものを使いたい、1から作成するにはリソースの無駄)
2. ソース・コードの入手はケース・バイ・ケースで検討⇒あればベストだが、、、
AX88796B NE2000との違い
●AX88796Bは完全にNE2000レジスタ・レベルで互換性がある
●標準的なNE2000ドライバは一切の変更なしにAX88796Bで動作する
●NE2000との違いは下記を参照
1. AX88796B特有の機能を利用したい ⇒ NE2000機能に追加
2. 特に必要なし ⇒ NE2000ドライバを100%活用可能
AX88796B is full NE2000 register-level compatible Fast Ethernet controller with embedded 10/100Mbps
PHY/Transceiver.The standard NE2000 driver can work with AX88796B without any modification.
Advanced Features
Media modes
Flow Control
Wake-On-LAN
VLAN
Single Data Access
Burst Data Access
Back-To-Back Transmission
4
AX88796B
10/100Mbps full/half duplex
YES
YES
YES
YES
YES
YES
NE2000
10Mbps half-duplex
NO
NO
NO
YES
NO
NO
AX88796B 内蔵SRAM・マップ
●AX88796BはTX/RXバッファとして8K*16bits SRAMを内蔵、64ページ構成(Page 40h∼Page 7Fh)
●TX buffer境界ポインタはプログラマブルで、PSTARTレジスタ(Page0,offset 01h)にセットされる
AX88796B integrates an embedded 8K*16 bits (i.e.16K bytes) SRAM for TX/RX buffers. The 16K bytes
SRAM is comprised of 64 pages (128 words each page) buffers from page 40h to page 7Fh. The TX buffer
boundary pointer is programmable for AX88796B. Both TX and RX buffers are implemented via a Buffer
Ring structure. The driver can configure the TX buffer boundary pointer by setting the PSTART register
(Page 0, offset 01h). For example if the PSTART=5Ch, then the TX buffer is allocated from Page 40h to
Page 5Bh.
0000h
Reserved
(16K bytes)
4000h (Page 40h)
TX buffer
Page 40h ∼ Page 5Bh
RX buffer
Page 5Ch ∼ Page 7Fh
5C00h (PSTART=5Ch)
(The TX buffer boundary is programmable
for AX88796B.)
7FFFh
AX88796B ソフトウェア・リセット
●S/WによるMACのリセット方法
1. Resetレジスタ(offset 1Fh)をリードする
2. ドライバは、DSRレジスタ(offset 17h)のbit-4(Device ready)で準備完了を確認するか、単純に1.6ミリ秒
待つ
なぜレジスタの内容を確認したり、待ったりする必要があるの?
⇒EEPROMを読み込む時間と内部初期化の時間が必要です。
Software Reset
Offset 1FH (Read)
Field
7:0
Name
-
Description
Don't care this read value.
5
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B Ready状態を確認
●AX88796Bは、device(デバイス)/data port(データ・ポート)/remote DMAのステータスを示すDSRレジスタ
(offset 17h)を提供
●ドライバは、動作準備が出来ているかどうか、これらのステータスをチェック可能
Device Status Register (DSR)
Offset 17H (Read)
Field
Name
Description
When set indicates big-endian mode.
(The Big-endian Register's value not all zero)
7
B_ENDIAN
6
RDMA_RDY Remote DMA completed. It is same as ISR bit 6.
When set, it indicates the remote DMA process was completed.
5
RD_RDY
4
D_RDY
Read Data Port Ready, When set, indicates data was ready from
SRAM to data port for host reading.
Device Ready. When set, this bit indicates that AX88796B is
ready to be accessed. This register can be read when AX88796B
in any power management mode.
When cleared, indicate AX88796B in reset, power saving or
load EEPROM state.
AX88796B MII PHYレジスタ
●AX88796Bは、MII PHYレジスタをアクセスするためのMII/EEPROM制御レジスタ(offset 14h)を提供
●MII PHYレジスタはAuto-Negotiationモードしかサポートしなくてもドライバで制御する必要がありますか?
⇒「ハイ」必要です
1. 例えば、通信モードをドライバ初期化時に、Auto/100M-Full/100M-Half/10M-Full/10M-Halfから選択した
い
2. IEEE802.3 コンプライアンス試験で、10Mbpsモードにおいて、常時Link-On状態にして、擬似ランダム・パ
ターンを発生させる
3. データシートに記載されたMII Managementのデータ・フォーマットを見ても複雑で理解できない
⇒大丈夫です。Linuxサンプル・ドライバ・ソース(ax88796b.c)にMIIを制御する関数が準備してあります
From Register
Offset 14h
MDC
MDC
MDO
MDI
6
(Internal PHY)
MDIO-OUT
MDIO-IN
AX88796B local/Remote DMA
●Local(ローカル)とRemote(リモート)はどこの転送部分を指しているのか? ⇒下記を参照
●AX88796Bは4つのSRAMメモリ・バッファ・アクセスをサポート
1. パケット受信(MACからSRAMへパケット・データを取得)⇒ Local DMA Read
2. パケット送信(SRAMからMACへパケット・データを送る)⇒ Local DMA Write
3. SRAM受信リング・バッファからパケット・データを読み込む(Host-CPUのデータ読み出し)⇒ Remote DMA Read
4. SRAM送信リング・バッファにパケット・データを埋め込む(Host-CPUのデータ書き込み)⇒ Remote DMA Write
8K*16 bit SRAM
Local DMA
Remote DMA
Remote DMA FIFO
Host
MAC Core
& PHY
AX88796B Block Diagram
AX88796B 受信パケット・ヘッダ
●受信バッファ・リング上の受信パケットにはどんな情報が付加されているのか?
1. AX88796Bは自動的に各受信パケットの先頭に4バイトのパケット・ヘッダを付加
2. ヘッダはRXステータス(RSRレジスタと同一)、Next Page番号(pointer)及び受信パケット長(16 ビット)か
ら構成
AX889796B will automatically add a four-byte RX Packet Header field at the beginning of each RX
packet to indeicate the RX status (equal to the value of RSR register), Next Page number and RX
packet length. The driver can get the necessary RX packet information from here.
RX Packet Header
(4 bytes)
1st byte
2nd byte
3rd byte
4th byte
RX Status
Next Page
Length (L)
Length (H)
RX Packet
7
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B 受信バッファ・リング
●AX88796Bは受信バッファ・リングを処理する為に4種類のRXポインタ・レジスタを提供
1. RX Start Pointer(PSTART:受信開始ポインタ);初期化時のみ
2. RX Stop Pointer(PSTOP:受信停止ポインタ);初期化時のみ
3. RX Boundary Pointer(BNRY:受信境界ポインタ);ドライバによりメンテナンスされる
4. RX Current Pointer(CPR:受信現在ポインタ);AX88796Bによりメンテナンスされる
RX Current Pointer
(Maintain by AX88796B)
AX88796B provides four RX
pointer registers to handle
RX Buffer Ring, i.e.RX Start
Pointer (PSTART, Page0
offset 01h), RX Stop Pointer
(PSTOP, Page0 offset 02h),
RX Boundary Pointer (BNRY,
Page0 offset 03h), RX
Current Pointer (CPR, Page1
offset 07h).
RX Packet Header
(Reported by AX88796B)
(Get Next Page from here)
If (Next Page = = RX Start Page)
BNRY = (RX Stop page -1);
else
BNRY = (Next Page -1);
RX Stop Pointer
(Set to 80h)
RX Boundary Pointer
(Maintain by driver)
RX Start Pointer
(Set to 46h)
AX88796B 受信バッファ・フル(満杯)とエンプティ(空)
●受信バッファ・リングが満杯か空かどうかは、CPR(現在ポインタ)とBNRY(境界ポインタ)を比較することにより識
別可能
1. 空;(CRP)と(BNRY+1)を比較し、同じならば、空と判断
2. 満杯;(CPR)と(BNRY)を比較し、同じならば、満杯と判断
The
designer
can
identify if the RX Buffer
Ring is empty or full by
checking CPR and BNRY
registers.
RX Boundary Pointer (BNRY)
(Maintain by driver)
If (CPR = = BNRY + 1)
An empty RX Buffer Ring;
RX Current Pointer (CPR)
(Maintain by AX88796B)
If (CPR = = BNRY)
A full RX Buffer Ring;
RX Boundary Pointer (BNRY)
(Maintain by driver)
8
RX Current Pointer (CPR)
(Maintain by AX88796B)
AX88796B 電源制御(1)
●AX88796Bは3種類の電源制御モードをサポート;D0(通常動作モード)、D1/D2省電源モード ドライバはPMRレ
ジスタ(Page3,offset 0Bh)経由で電源制御モードを設定
●D1省電力モード;3種類のWake-on-LAN機能を実現
1. リンクステータス変化(Link Status Change)
2. 起床(Wake-up)フレーム
3. マジック・パケット
●開発者は、これら3種類のWOL機能をWUCSRレジスタ(Page3, offset 0Ah)経由で有効にする
●起床(Wake-up)フレームのWOL機能を有効にするのであれば、関連するWake-upフレーム・レジスタ(Page3,offset
01h∼09h)を正しく設定する必要あり・・・Must条件
AX88796B supports three Power Management modes that are D0 (Normal Operation Power mode) and
D1/D2 Power Saving modes. The driver can set the Power Management modes via PMR register (Page 3,
offset 0Bh).
In D1 Power Saving mode, AX88796B supports three Wake-on-LAN functions: Link Status Change,
Wake-up Frame and Magic Packet wakeup modes. The designer can enable these three WOL functions
via WUCSR register (Page3, offset 0Ah). If the Wake-up Frame WOL function is enabled, the relevant
Wake-up Frame registers (Page 3, offset 01h∼09h) MUST be configured properly.
AX88796B 電源制御(2)
●D2省電力モード;電源消費を最小にするためすべての機能ブロック及びクロックを電源断
●D2省電力モードから復旧するための唯一の方法は、Host Wake-upレジスタ(offset 1Fh)に01hを書き込む
●D2省電力モードから起床した後、ドライバはデバイス準備完了のために60mS待機する必要あり
●起床事象を受信した後、PMRレジスタは自動的にクリアされ、D0通常電源状態に戻ります
●D1またはD2省電力モードにセットされたとき、Host Wake-upレジスタ(offset 1Fh)に01hを書き込むことにより、
強制的に起床(復旧)
In D2 Power Saving mode, AX88796B will power off all function blocks and clocks to minimize the power
consumption. The only way to wake up AX88796B from D2 Power Saving state is to write 01h to Host
Wake-up register (offset 1Fh) from host side. After AX88796B is waked up from D2 Power Saving state, the
driver MUST wait 60ms for device ready.
After receiving the wake-up events, the PMR register will be cleared, and AX88796B will come back to
D0 Normal Operation Power state. When AX88796B is set to either D1 or D2 Power Saving mode, host
can write 01h to Host Wake-up register (offset 1Fh) to wake-up AX88796B.
9
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B 送信バッファ・リング
●NE2000コントローラは、1536バイトの送信バッファをサポートするが、AX88796Bは送信バッファ・リング構造及
びプログラマ可能な送信バッファ境界ポインタをサポート、これにより大きな送信バッファを割り当て可能
●ドライバは、PSTARTレジスタ(Page0, offset 01h)を介して、送信バッファ境界ポインタを設定可能、例えば、
PSTART = 5Ch ならば、送信バッファはページ40hから5Bhまで割り当てられます(下図参照)
●もし、送信パケット・データが送信バッファ境界を越えてしまう場合、AX88796BリモートDMA動作は、自動的にロー
ル・オーバー(巻き戻り)します
Auto-roll over from TX
last page to TX first page
Reserved
(16K bytes)
TX Packet n
4000h (Page 40h)
TX Buffer Ring
TX Packet n
RX buffer
5B00h (Page =5Bh)
(PSTART = 5Ch)
AX88796B Back-to-Back送信
●AX88796Bは送信処理能力を向上させるためにBack-to-Back送信機能をサポート
●Back-to-Back送信機能とは、送信コマンド・キューを経由して、パケットを連続的に送出すること
●ドライバは、前回のパケット送信完了を待つことなく、TPSR,TBCR0とTBCR1の各値を内部送信コマンド・キューに
送り込むため、連続的にTXPコマンド(CRレジスタのbit2)を書き込むことが可能
●現在のパケットが正常に送信された後、MAC送信マシンは、自動的にTPSR,TBCR0及びTBCR1を送信コマンド・
キューから取り出し、キューされていた全パケットが正常に送信されるまで、ネットワーク上にパケットを送信する
AX88796B supports the Back-To-Back Transmission function to enhance the packet transmission performance. The Back-To-Back Transmission function will send out the packets continuously through
AX88796B internal TX Command Queue. The driver can continuously write TXP command (bit 2 of CR register) to push the TPSR, TBCR0 and TBCR1 values into the internal TX Command Queue without waiting
for previous packet transmmision completion. After the current packet was transmitted successfully,
AX88796B MAC TX machine will auto-pop out the TPSR, TBCR0 and TBCR1 values from the TX Command Queue and then transmits the queued packets onto the network until all queued packets are transmitted successfully.
10
AX88796B アドバンス機能の構築
●AX88796Bは完全NE2000レジスタ・レベル互換ファースト・イーサネット・コントローラなので、一般的NE2000ドラ
イバは、如何なる変更を加えることなしにAX88796Bで動作することが可能
●標準NE2000ドライバは、大抵の組み込みシステム上でサポートされており、その為、ドライバ設計者は、これらの
組み込みシステムのDDK(開発キット)から容易にNE2000ソース・コードを得ることが可能
●フロー制御、WOL、VLAN、Back-to-Back送信、バースト転送のようなアドバンス(上級)機能をサポート、標準
NE2000ドライバ・ソースコードからどの様に実装するかを次頁以降に示します。
Since AX88796B is a full NE2000 register level compatible Fast Etherset controller, the standard NE2000
drivers can work with AX88796B without any modification. The standard NE2000 driver is supported on
most embedded systems by default, and the driver designer can easily get the NE2000 source code from
the DDK of these embedded systems. In case, if the customers need to modify standard NE2000 driver to
support the AX88796B advanced features like Flow Control, WOL, VLAN, Back-To-Back Transmission,
Burst Read functions, this section indicates the necessary information about how to implement these
AX88796B advanced functions from the standard NE2000 source code.
AX88796B フロー・コントロール
●AX88796Bのフロー制御機能は、デフォルトで無効(disable)
●ドライバは、FCRレジスタ(offset 1Ah)のbit-7またはbit-6をセットすることにより、全二重(full-duplex)モードに対
するフロー・コントロール機能、または半二重(half-duplex)モードに対するバック・プレッシャ機能を有効にすること
が可能
●MII PHY MR4レジスタ(offset 04h)は、全二重または半二重に対して正しく設定する必要あり
●MR4レジスタを設定後、新しい設定を有効にする為、ドライバは、MII PHY MR0レジスタ(offset 00h)のbit9(REDONWAY)を設定して、オート・ネゴシエーション機能を再スタートし、オート・ネゴシエーションが完了する迄、数秒
待つことになります。
The AX88796B Flow Control function is disabled by default. The driver can enable the flow control function for full-duplex mode or the back-pressure function for half-duplex mode by setting bit 7 (Flow Control)or bit 6 (Back-pressure) of FCR register (offset 1Ah). The bit 10 (Pause) of MII PHY MR4 register (offset 04h) should also be configured a proper value value for full-duplex or half-duplex mode. After
configuring MR4 register, the driver should restart the auto-negotiation function to take effect the new setting by setting bit 9 (REDONWAY) of MII PHY MR0 register (offset 00h) and waiting a couple of seconds for
auto-negotiation completion.
11
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B VLAN機能
●AX88796BのVLAN機能は、デフォルトでは無効(disable)
●ドライバは、MCRレジスタ(offset 1Bh)のbit-3(VLANE)をセットし、VIDR0レジスタ(offset 1Ch)およびVIDR1レジ
スタ(offset 1Dh)を設定することにより、VLAN機能を有効にできます
●VLANIDは、0から4095が可能
●AX88796BのVLAN機能が有効なとき、ドライバは送信パケットのMACヘッダーに4バイトのVLAN IDフィールド
を追加しなければならない。一方受信パケットからは、VLAN IDフィールドを取り除かなければならない
●AX88796BのVLANフィルターは、受信パケットのVLAN ID番号がVIDR0とVIDR1レジスタのVLAN ID番号と一
致するかどうかチェックし、一致しなければ、パケットはAX88796Bにより、ふるい落とされる
The AX88796B VLAN function is disabled by default. The driver can enable the VLAN function by setting
bit 3(VLANE) of MCR register(offset 1Bh) and configuring VIDR0 register (offset 1Ch) and VIDR1 register
(offset 1Dh). The VLAN ID number could be from 0 to 4095. When the AX88796B VLAN function is enabled, the driver must add 4-byte VLAN ID field in the MAC header of transmitted packets and remove the
VLAN ID field from the received packets. AX88796B VLAN Filter will check if or not the VLAN ID number of
received packets is matched the VLAN ID number of VIDR0 and VIDR1 registers, the packets will be dropped by AX88796B.
AX88796B Wake-On-LAN
●AX88796Bはリンク状態変化、マジック・パケットとウェイクアップ・フレームの3種類のWake-On-LAN機能をサポート
●AX88796BのWOL機能は、H/W初期値により無効(DIsable)にされる
●ドライバは、PMRレジスタ(Page3, offset 0Bh)とWUCSRレジスタ(Page3, offset 0Ah)を設定することにより有
効にできる
●詳細は、AX88796Bデータシートの4.3項「Wake-up Detection」を参照すること
AX88796B supports three kind of Wake-On-LAN functions that are Link Status Change, Magic Packet
and Wake-up Frame wake-up modes. The AX88796B WOL functions are disabled by H/W default. The driver can enable the WOL functions by configuring PMR register (Page3, offset 0Bh)and WUCSR register
(Page3, offset 0Ah). Please refer to Section 4.3 "Wake-up Detection" of AX88796B datasheet for more details.
12
AX88796B Back-To-Back 送信
●AX88796BのBack-To-Back(送信コマンド・キュー)送信機能は、デフォルトで無効(Disable)
●ドライバはMISCレジスタ(Page3, offset 0Dh)のBit-0 (TBR)をセットすることにより、機能を有効にすることが可能
The Back-To-Back Transmission function of AX88796B is diaabled by default. The driver can enable the
Back-To-Back Transmission function by setting bit 0(TBR) of MISC register (Page3, offset 0Dh).
AX88796B Txバッファ・リング機能
●AX88796Bの送信バッファ・リング機能は、デフォルトで無効(Disable)
●ドライバは、MCRレジスタ(offset, 1Bh)のbit-5(BBTC)をセットすることにより送信バッファ・リンク機能を有効にす
ることが可能
The TX Buffer Ring function of AX88796B is disabled by default. The driver can enable the TX Buffer
Ring function by setting bit 5(BBTC)of MCR register (offset 1Bh).
13
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B TX バッファ・リング処理(1)
●AX88796Bは送信バッファ・リングを処理する為にCurrent TX End Pageレジスタ(CTEPR, Page0, offset
1Ch)を提供
●ドライバは次のパケット送信に何個のフリー送信ページ・レジスタが再利用できるか認識するためにこのレジスタ
を読み出すことができる
●例えば、PSTARTレジスタが5Chにセットされ、送信バッファがPage 40hから5Bhに割り当てられ、TX Buffer
Stop pointerがPage 5Chを指している場合の詳細は、「Appendix A. AX88796B TX Buffer Ring Handling
Flow Chart」を参照
AX88796B provides the Current TX End
Page register(CTEPR, Page0, offset 1Ch) to
handle TX Buffer Ring. The driver can read
this register to identify how many free TX
pages can be reused by next packet
transmission. For example, when the
PSTART register is set to 5Ch, the TX buffer
is allocated from page 40h to page 5Bh and
the TX Buffer Stop pointer is pointed to
page 5Ch. Please refer to Appecdix A.
"AX88796B TX Buffer Ring Handling Flow
Chart" for more details about how to handle
AX88796B TX Buffer Ring.
TX Buffer Current Pointer
(Maintain by driver)
TX Buffer Stop Pointer
(Set to 5Ch)
CTEPR Pointer
(Maintain by AX88796B)
TX Buffer Start Pointer
(Set to 40h)
AX88796B ドライバ・プログラミング処理(1)
●一般的に、開発者はAX88796Bドライバを自身で開発する必要はありません。なぜならばAX88796Bは標準的
NE2000ドライバに如何なる修正を加えることなく、動作することが可能です
●もし、顧客のプラット・フォームが標準的NE2000ドライバをサポートしていない場合、次項以降にどのように
AX88796Bドライバ開発するかについて詳細を記述します
In general, the designer doesn't need to develop AX88796B drivers by themselves because AX88796B
can directly work with standard NE2000 driver without any modification. In case, if the customer's platform
doesn't support a standard NE2000 driver, this section provides the detail information about how to develop
AX88796B drivers. ASIX Electronics also provides AX88796B Linux driver source codes for customers' reference.
14
AX88796B ドライバ・プログラミング処理(2) 初期化
Initialization
This section is a sample about how to implement AX88796B driver to enable some AX88796B advanced
features like Flow Control, TX Buffer Ring and Back-To-Back Transmission functions for 16-bit CPU application. The designer might need to do some modifications for other applications.
1. Read Reset register(offset 1Fh) to reset MAC and then wait 1.6ms for MAC reset completion.
2. Write 21h to CR register to select register page 0.
3. Write 00h to IMR register to disable AX88796B interrupt.
4. Write 01h to DCR register to enable word-wide DMA transfer mode. (for 16-bit CPU)
5. Write 02h to TCR register to enter MAC loopback mode, then the driver can configure TX/RX relevant registers.
6. Configure RX Start page (i.e.TX buffer boundary pointer) by write a proper page number(XXh) to
PSTART register. (e.g. if the PSTART = 5Ch, the TX buffer is allocated from page 40h to page
5Bh and TX Buffer Stop pointer is pointed to page 5Ch.)
7. Write 80h tp PSTOP register to set RX Stop page.
8. Write XXh to BNRY register to set RX boundary page.
9. Write 0FFh to ISR register to clear interrupt status register.
10. Write 61h to CR register to select register page 1.
11. Configure PAR0∼PAR6 registers to set the MAC address.
12. Configure MAR0∼MAR6 registers to set the Multicast address.
AX88796B ドライバ・プログラミング処理(2) 初期化(続き)
13. Write(XXh +1) to CPR register to set RX Current page.
14. Write 21h to CR register to select register page 0.
15. Write C7h to FCR register to enable Flow Control and Back Pressure bits. (The Back Pressure
bit will be ignored when running in full-duplex mode.)
16. Set bit 10 (Pause) of MII PHY MR4 register (offset 04h) to enable the TX/RX Pause Frame capability of AX88796B internal PHY. (The Pause bit will be ignored when running in half-duplex
mode.)
17. Set bit 9 (REDONWAY) of MII PHY MR0 register (offset 00h) to restart the auto-negotiation function to take effect the new setting of MR4 register and wait a couple of seconds for auto-negotiation completion.
18. Write 20h MCR register to enable Back-To-Back Transmission function.
19. Write D1h to CR register to select register page 3.
20. Write 01h to MISC register (Page3, offset 0Dh) to enable TX Buffer Ring function.
21. Write 21h to CR register to select register page 0.
22. Write 40h to TPSR register to set TX Start page.
23. Write a proper value (e.g.4Ch) to RCR register to set RX packets filter.
24. Write a proper value (e.g.2Fh) to IMR register to enable AX88796B interrupt.
25. Write 22h to CR register to start AX88796B TX/RX operation.
15
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B ドライバ・プログラミング処理(2) 割り込み処理
Interrupt Handling
1. Write 0000h to IMR register to disable AX88796B interrupt.
2. Read ISR register to get the interrupt status.
3. Write back the interrupt status value to ISR register to clear the interrupt status bits.
4. Check the interrupt status bits and invoke proper routines to handle the respective interrupt
events. (e.g.TX packet completion and RX packet completion, ...etc.)
5. If the TX Packet Completion Interrupt bit is issued and the TX Buffer Full flag is set, clear the TX
Packet Buffer Full flag here.
6. Write a proper value(e.g.2Fh) to IMR register to enable AX88796B interrupt.
AX88796B ドライバ・プログラミング処理(2) パケット送信処理
Packet Transmission
This section indicates the packet transmission procedures when the TX Buffer Ring and Back-To-Back
Transmission functions are enabled. Please refer to Appendix.A."AX88796B TX Buffer Ring Handling Flow
Chart" for more details about how to handle AX88796B TX Buffer Ring.
1. Get the data pointer and length to TX packets from the upper protocol layer.
2. Calculate the TX need page number from TX packet length in below equation. TX need page =
(TX packet length + 255)/256
3. Check if TX buffer or TX Command Queue is full.
4. Read CTEPR register to calculate the TX free page number.
5. Check if the TX free page number is larger than the TX need page number.
6. If the TX buffer free pages are enough to restore the TX packet data, the driver can start copying
the TX packet data into TX buffer now.
7. Write 00h to RSAR0 register and write TX Buffer Current Free page to RSAR1 to set Romote
Start Address.
8. Write RBCR0 register with low byte of TX packet length.
9. Write RBCR1 register with high byte of TX packet length.
10. Write 12h to CR register to start the Remote DMA Write function.
16
AX88796B ドライバ・プログラミング処理(2) パケット送信処理(続き)
11. Start copying TX packet data into TX buffer. There are two kinds of Data Access modes that can
be implemented in this step. One is Single Data Access mode; another one is Burst Data Access
mode.
11-1. Single Data Access mode:
Repeat to write the TX packet data in word-wide to PIO Data Port register (offset 10h) for
(packet length/2) times.
11-2. Burst Data Access mode:
Run Burst Data Access commandes (i.e.memory copy commands) to write the TX packet
data into SRAM-link Data Port.
12. Write TX Buffer Start page (i.e.40h) to TPSR register to set TX Start page.
13. Write TBCR0 register with low byte of packet length.
14. Write TBCR1 register with high byte of packet length.
15. Write 26h to CR register to indeicate Remote DMA Completion and write TXP bit to send out the
packet to network cable. When the packet is transmitted successfully, the TX Packet Completion
Interupt of ISR register will be issued to invoke the Interupt Service Routine
AX88796B ドライバ・プログラミング処理(2) パケット受信処理
Packet Reception
1. Waiting for Packet Received Interrupt and then call the Packet Received handling routine.
2. Read CPR register and check if the Current Page register is changed.If CPR register is not
changed, it means no packet is received.The driver does nothing and just exits the Packet Received handling routine. If CPR register is changed, it means some packets are received. The
driver should follow below steps to deliver the received packets to upper protocol layer.
3. Write 00h to RSAR0 register.
4. Write RSAR1 register with last value of Current Page register.
5. Write 04h to RBCR0 register to read 4 bytes RX packet header.
6. Write 00h to RBCR1 register.
7. Write 0Ah to CR register to start Remote DMA Read function.
8. Read PIO Data Port register (offset 10h) to get first word of RX packet header included RX Status and Next Page Number information.
9. Read PIO Data Port register (offset 10h) again to get second word of RX packet header included
Packet Length information.
10. Write 04h to RSAR0 register to read RX packet data from offset 04h.
11. Write RSAR1 register with last value of Current Page register.
12. Write RBCR0 register with low byte of Packet Length.
13. Write RBCR1 register with high byte of Packet Length.
14. Write 0Ah to CR register to start Remote DMA Read function.
17
AX88796BLF/BLI設計手引き
ソフトウェア編 Rev1.0
AX88796B ドライバ・プログラミング処理(2) パケット受信処理(続き)
15. Start reading the rest of RX packet data from AX88796B Data Port. There are two kinds of Data
Access modes that can be implemented in this step. One is Single Data Access mode; another
one is Burst Data Access mode.
15-1. Single Data Access mode:
Repeat to read PIO Data Port register (offset 10h) for (packet length/2) times to get RX
packet data.
15-2. Burst Data Access mode:
Run Burst Data Access commands (i.e.memory copy commands) to read the RX packet
data from SRAM-link Data Port.
16. Write a proper value to BNRY register by checking Next Page Number of RX packet header. If
Next Page Number is equal to RX Start Page, then write BNRY register with (RX Stop Page-1);
otherwise, write BNRY register with (Next Page Number-1).
18
19
AX88796B 国内総代理店
製品に関するお問い合わせ:
http://www.mcmjapan.com/
本社:半導体営業部/プロダクト部 TEL 03(3487)8502/ FAX 03(3487)8825
関西営業所 TEL 06(6949)2651/ FAX 06(6949)2652
JQA-EM3859