?? rtl8019.h
字號(hào):
#ifndef RTL8019_H_
#define RTL8019_H_
#define RTL_BASE_ADDR 0xc000 /* 網(wǎng)片基地址 */
#define RTL8019AS_ID0 0x50 /* 8019as id */
#define RTL8019AS_ID1 0x70
/************************************************************************/
/* NE2000兼容寄存器定義 */
/* page0的寄存器定義 */
/************************************************************************/
#define RW0_CR 0x00 /* 控制寄存器,page0~3皆可讀寫 */
/* 選擇寄存器頁,使能/禁止遠(yuǎn)程DMA,發(fā)布命令 */
#define RW0_CR_CS1 0x80 /* CS1,CS0頁選擇位. */
#define RW0_CR_CS0 0x40 /* 00:page 0; 01:page 1; 10:page 2; 11:page 3 */
/* 0,1,2頁NE2000兼容,3頁RTL8019AS增強(qiáng)功能 */
#define RW0_CR_RD2 0x20 /* RD2,RD1,RD0遠(yuǎn)端DMA讀寫控制 */
#define RW0_CR_RD1 0x10 /* 000:保留; 001:遠(yuǎn)程DMA讀; 010:遠(yuǎn)程DMA寫 */
#define RW0_CR_RD0 0x08 /* 011:發(fā)包; 1**:異常終止/完成遠(yuǎn)程DMA操作 */
#define RW0_CR_TXP 0x04 /* 1:使能發(fā)送包,異常終止/完成自動(dòng)清零; 寫0:無效果 */
#define RW0_CR_STA 0x02 /* STA,STP為數(shù)據(jù)包接收發(fā)送控制.上電為01 */
#define RW0_CR_STP 0x01 /* 10:接收發(fā)送數(shù)據(jù); 01:停止收發(fā)送數(shù)據(jù) */
/* ............................................................................................ */
#define R0_CLDA0 0x01 /* CLDA0,CLDA1為只讀,page0 */
#define R0_CLDA1 0x02 /* 當(dāng)前本地DMA寄存器,讀此寄存器可以得到當(dāng)前本地DMA的地址,16位 */
/* ............................................................................................ */
#define W0_PSTART 0x01 /* 接收緩沖區(qū)開始頁指針,設(shè)置接收緩沖區(qū)開始頁地址.page0 寫 */
#define W0_PSTOP 0x02 /* 接收緩沖區(qū)停止頁指針,設(shè)置接收緩沖區(qū)停止頁地址.page0 寫 */
/* ............................................................................................ */
#define RW0_BNRY 0x03 /* 指向最后一個(gè)已讀取的頁,防止接收緩沖區(qū)重寫.page0 讀寫. */
/* ............................................................................................ */
#define W0_TPSR 0x04 /* 向以太網(wǎng)發(fā)送的緩沖區(qū)開始頁指針.page0 寫 */
/* ............................................................................................ */
#define R0_TSR 0x04 /* 發(fā)送狀態(tài)寄存器,指示包發(fā)送過程中的狀態(tài).page0 讀 */
#define R0_TSR_OWC 0x80 /* 置1:一個(gè)時(shí)隙(51.2us)后檢測(cè)到了一個(gè)沖突,正常后重新發(fā)起發(fā)送 */
#define R0_TSR_CDH 0x40 /* 置1:收發(fā)器發(fā)送CD Heartbeat signal失敗 */
#define R0_TSR_REV5 0x20 /* 保留位,總為1 */
#define R0_TSR_CRS 0x10 /* 置1:發(fā)送數(shù)據(jù)包過程中載波丟失 */
#define R0_TSR_ABT 0x08 /* 置1:因?yàn)檫^度沖突(16次)NIC終止了發(fā)送 */
#define R0_TSR_COL 0x04 /* 置1:與其它網(wǎng)絡(luò)上的station有沖突 */
#define R0_TSR_REV1 0x02 /* 保留位,總為1 */
#define R0_TSR_PTX 0x01 /* 置1:發(fā)送完成沒有錯(cuò)誤產(chǎn)生 */
/* ............................................................................................ */
#define W0_TBCR0 0x05 /* 設(shè)置網(wǎng)卡將要向以太網(wǎng)發(fā)送的字節(jié)數(shù). page0 寫 */
#define W0_TBCR1 0x06
/* ............................................................................................ */
#define R0_NCR 0x05 /* 記錄一個(gè)節(jié)點(diǎn)在發(fā)送包過程中沖突的次數(shù).page0 讀 */
/* ............................................................................................ */
#define R0_FIFO 0x06 /* 環(huán)回測(cè)試時(shí)讀取數(shù)據(jù).page0 讀 */
/* ............................................................................................ */
#define RW0_ISR 0x07 /* 中斷狀態(tài)寄存器,反映了NIC的狀態(tài)(相應(yīng)位寫"1"清零,復(fù)位后必須清零). page0 讀寫 */
#define RW0_ISR_RST 0x80 /* 1. 置1:NIC處于復(fù)位狀態(tài),start command之后自動(dòng)清零
2. 置1:接收緩沖溢出,一個(gè)或多個(gè)數(shù)據(jù)包讀出后自動(dòng)清零 */
#define RW0_ISR_RDC 0x40 /* 置1:遠(yuǎn)程DMA操作結(jié)束 */
#define RW0_ISR_CNT 0x20 /* 置1:一個(gè)或多個(gè)網(wǎng)絡(luò)計(jì)數(shù)器最高位置位 */
#define RW0_ISR_OVW 0x10 /* 置1:接收緩沖用完,但還沒有溢出 */
#define RW0_ISR_TXE 0x08 /* 置1:一個(gè)數(shù)據(jù)包在發(fā)送過程中由于過度沖突而終止 */
#define RW0_ISR_RXE 0x04 /* 置1:接收數(shù)據(jù)出現(xiàn): 1. CRC錯(cuò)誤 2. 幀排列錯(cuò)誤 3. 包丟失 */
#define RW0_ISR_PTX 0x02 /* 置1:數(shù)據(jù)包發(fā)送沒有錯(cuò)誤 */
#define RW0_ISR_PRX 0x01 /* 置1:數(shù)據(jù)包接收沒有錯(cuò)誤 */
/* ............................................................................................ */
#define W0_RSAR0 0x08 /* 設(shè)置遠(yuǎn)程DMA起始地址,設(shè)置CR進(jìn)行DMA讀寫操作.page0 寫 */
#define W0_RSAR1 0x09
/* ............................................................................................ */
#define R0_CRDA0 0x08 /* 當(dāng)前遠(yuǎn)程DMA地址.page0 讀 */
#define R0_CRDA1 0x09
/* ............................................................................................ */
#define W0_RBCR0 0x0a /* 遠(yuǎn)程DMA將要讀/寫的字節(jié)數(shù). page0 寫 */
#define W0_RBCR1 0x0b
/* ............................................................................................ */
#define R0_ID0 0x0a /* RTL8019AS芯片ID號(hào). 50H,page0 讀 */
#define R0_ID1 0x0b /* RTL8019AS芯片ID號(hào). 70H */
/* ............................................................................................ */
#define W0_RCR 0x0c /* 接收配置寄存器.page0 寫 */
#define W0_RCR_REV1 0x80 /* 保留位,總為1 */
#define W0_RCR_REV0 0x40 /* 保留位,總為1 */
#define W0_RCR_MON 0x20 /* 監(jiān)視模式.1:接收到的正確數(shù)據(jù)包不存儲(chǔ),0:要存儲(chǔ) */
#define W0_RCR_PRO 0x10 /* 1:接收所有帶有物理目的地址的數(shù)據(jù)包
0:接收物理目的地址必須與節(jié)點(diǎn)地址PAR0~5相符合的數(shù)據(jù)包 */
#define W0_RCR_AM 0x08 /* 1:接收在組播范圍內(nèi)的數(shù)據(jù); 0:拒絕組播數(shù)據(jù) */
#define W0_RCR_AB 0x04 /* 1:接收廣播數(shù)據(jù)包; 0:拒絕廣播數(shù)據(jù)包 */
#define W0_RCR_AR 0x02 /* 1:接收數(shù)據(jù)長度小于64字節(jié)的數(shù)據(jù)包; 0:拒絕 */
#define W0_RCR_SEP 0x01 /* 1:接收有錯(cuò)誤的數(shù)據(jù)包; 0:拒絕有錯(cuò)誤的數(shù)據(jù)包 */
/* ............................................................................................ */
#define R0_RSR 0x0c /* 接收狀態(tài)寄存器.page0 讀 */
#define R0_RSR_DFR 0x80 /* 置1:檢測(cè)到了載波或者沖突 */
#define R0_RSR_DIS 0x40 /* 置1:NIC進(jìn)入了監(jiān)視模式,接收禁止 置0:NIC離開了監(jiān)視模式,允許接收 */
#define R0_RSR_PHY 0x20 /* 置1:接收到的數(shù)據(jù)包有組播或廣播地址 置0:有目的地址 */
#define R0_RSR_MPA 0x10 /* 置1:丟失了數(shù)據(jù)包因?yàn)榻邮站彌_不夠或者處于監(jiān)視模式.CNTR2加1 */
#define R0_RSR_REV 0x08 /* 保留位,總為1 */
#define R0_RSR_FAE 0x04 /* 置1:幀錯(cuò)誤,CRC錯(cuò)誤.CNTR0加1 */
#define R0_RSR_CRC 0x02 /* 置1:CRC錯(cuò)誤.CNTR1加1 */
#define R0_RSR_PRX 0x01 /* 置1:接收到的數(shù)據(jù)包沒有錯(cuò)誤 */
/* ............................................................................................ */
#define W0_TCR 0x0d /* 發(fā)送配置寄存器.page0 寫 */
#define W0_TCR_REV7 0x80 /* 保留位,總為1 */
#define W0_TCR_REV6 0x40 /* 保留位,總為1 */
#define W0_TCR_REV5 0x20 /* 保留位,總為1 */
#define W0_TCR_OFST 0x10 /* 1:沖突偏置使能 */
#define W0_TCR_ATD 0x08 /* 0:正常操作; 1:組播地址控制,用作流控 */
#define W0_TCR_LB1 0x04 /* 環(huán)回測(cè)試.00:正常操作; 01:內(nèi)部環(huán)回(NIC) */
#define W0_TCR_LB0 0x02 /* 10:外部環(huán)回(ENDEC); 11:外部環(huán)回(Coax) */
#define W0_TCR_CRC 0x01 /* 正常模式: 0:CRC檢測(cè)和產(chǎn)生使能 1:CRC產(chǎn)生禁止,檢測(cè)使能
環(huán)回模式: 0:CRC產(chǎn)生使能,檢測(cè)禁止 1:CRC產(chǎn)生禁止,檢測(cè)使能 */
/* ............................................................................................ */
#define R0_CNTR0 0x0d /* 幀排列錯(cuò)誤計(jì)數(shù)器.page0 讀 */
/* ............................................................................................ */
#define W0_DCR 0x0e /* 數(shù)據(jù)配置寄存器.page0 寫 */
#define W0_DCR_REV7 0x80 /* 保留位,總為1 */
#define W0_DCR_FT1 0x40 /* FIFO門限選擇 */
#define W0_DCR_FT0 0x20
#define W0_DCR_ARM 0x10 /* 自動(dòng)初始化遠(yuǎn)程DMA. 0:發(fā)送包命令不執(zhí)行; 1:發(fā)送包命令執(zhí)行 */
#define W0_DCR_LS 0x08 /* 0:環(huán)回選擇(需要TCR的配合); 1:正常操作 */
#define W0_DCR_LAS 0x04 /* 必須為0(上電時(shí)為1) */
#define W0_DCR_BOS 0x02 /* 字節(jié)排序選擇. 0:高字節(jié)-低字節(jié); 1:低字節(jié)-高字節(jié) */
#define W0_DCR_WTS 0x01 /* DMA傳輸選擇. 0:字節(jié)傳輸; 1:字傳輸 */
/* ............................................................................................ */
#define R0_CNTR1 0x0e /* CRC錯(cuò)誤計(jì)數(shù)器.page0 讀 */
/* ............................................................................................ */
#define W0_IMR 0x0f /* 中斷屏蔽寄存器,上電清零.page0 寫 */
/* ............................................................................................ */
#define R0_CNTR2 0x0f /* 數(shù)據(jù)包丟失計(jì)數(shù)器.page0 讀 */
/* ............................................................................................ */
/************************************************************************************************/
/* page1的寄存器定義 */
#define RW1_PAR0 0x01 /* 以太網(wǎng)節(jié)點(diǎn)物理地址寄存器,用于比較輸入數(shù)據(jù)包的目的地址 */
#define RW1_PAR1 0x02 /* 此6個(gè)寄存器page1 讀寫 */
#define RW1_PAR2 0x03
#define RW1_PAR3 0x04
#define RW1_PAR4 0x05
#define RW1_PAR5 0x06
/* ............................................................................................ */
#define RW1_CURR 0x07 /* 指向當(dāng)前正在寫的下一頁,網(wǎng)卡寫完接收緩沖區(qū)一頁,就將這個(gè)頁地址加一.page1 讀寫 */
/* ............................................................................................ */
#define RW1_MAR0 0x08 /* 組播地址過慮,跟CRC的邏輯有關(guān).page1讀寫 */
#define RW1_MAR1 0x09
#define RW1_MAR2 0x0a
#define RW1_MAR3 0x0b
#define RW1_MAR4 0x0c
#define RW1_MAR5 0x0d
#define RW1_MAR6 0x0e
#define RW1_MAR7 0x0f
/************************************************************************************************/
/* page2的寄存器定義 */
#define R2_PSTART 0x01 /* 接收緩沖區(qū)開始頁指針,設(shè)置接收緩沖區(qū)開始頁地址.page2 讀 */
#define R2_PSTOP 0x02 /* 接收緩沖區(qū)停止頁指針,設(shè)置接收緩沖區(qū)停止頁地址.page2 讀 */
/* ............................................................................................ */
#define R2_TPSR 0x04 /* 向以太網(wǎng)發(fā)送的緩沖區(qū)開始頁指針.page2 讀 */
/* ............................................................................................ */
#define R2_RCR 0x0c /* 接收配置寄存器.page2 讀 */
#define R2_RCR_REV1 0x80 /* 保留位,總為1 */
#define R2_RCR_REV0 0x40 /* 保留位,總為1 */
#define R2_RCR_MON 0x20 /* 監(jiān)視模式.1:接收到的正確數(shù)據(jù)包不存儲(chǔ),0:要存儲(chǔ) */
#define R2_RCR_PRO 0x10 /* 1:接收所有帶有物理目的地址的數(shù)據(jù)包
0:接收物理目的地址必須與節(jié)點(diǎn)地址PAR0~5相符合的數(shù)據(jù)包 */
#define R2_RCR_AM 0x08 /* 1:接收在組播范圍內(nèi)的數(shù)據(jù); 0:拒絕組播數(shù)據(jù) */
#define R2_RCR_AB 0x04 /* 1:接收廣播數(shù)據(jù)包; 0:拒絕廣播數(shù)據(jù)包 */
#define R2_RCR_AR 0x02 /* 1:接收數(shù)據(jù)長度小于64字節(jié)的數(shù)據(jù)包; 0:拒絕 */
#define R2_RCR_SEP 0x01 /* 1:接收有錯(cuò)誤的數(shù)據(jù)包; 0:拒絕有錯(cuò)誤的數(shù)據(jù)包 */
/* ............................................................................................ */
#define R2_TCR 0x0d /* 發(fā)送配置寄存器.page2 讀 */
#define R2_TCR_REV7 0x80 /* 保留位,總為1 */
#define R2_TCR_REV6 0x40 /* 保留位,總為1 */
#define R2_TCR_REV5 0x20 /* 保留位,總為1 */
#define R2_TCR_OFST 0x10 /* 1:沖突偏置使能 */
#define R2_TCR_ATD 0x08 /* 0:正常操作; 1:組播地址控制,用作流控 */
#define R2_TCR_LB1 0x04 /* 環(huán)回測(cè)試.00:正常操作; 01:內(nèi)部環(huán)回 */
#define R2_TCR_LB0 0x02 /* 10:外部環(huán)回(通過SNI); 11:外部環(huán)回(通過MAU) */
#define R2_TCR_CRC 0x01 /* CRC邏輯控制,跟模式有關(guān) */
/* ............................................................................................ */
#define R2_DCR 0x0e /* 數(shù)據(jù)配置寄存器.page2讀 */
#define R2_DCR_REV7 0x80 /* 保留位,總為1 */
#define R2_DCR_FT1 0x40 /* FIFO門限選擇 */
#define R2_DCR_FT0 0x20
#define R2_DCR_ARM 0x10 /* 自動(dòng)初始化遠(yuǎn)程DMA. 0:發(fā)送包命令不執(zhí)行; 1:發(fā)送包命令執(zhí)行 */
#define R2_DCR_LS 0x08 /* 0:環(huán)回選擇(需要TCR的配合); 1:正常操作 */
#define R2_DCR_LAS 0x04 /* 必須為0(上電時(shí)為1) */
#define R2_DCR_BOS 0x02 /* 字節(jié)排序選擇. 0:高字節(jié)-低字節(jié); 1:低字節(jié)-高字節(jié) */
#define R2_DCR_WTS 0x01 /* DMA傳輸選擇. 0:字節(jié)傳輸; 1:字傳輸 */
/* ............................................................................................ */
#define R2_IMR 0x0f /* 中斷屏蔽寄存器,上電清零.page2 讀 */
/************************************************************************************************/
/* RTL8019AS 特殊寄存器定義,page3 */
#define RW3_9346CR 0x01 /* 9346命令寄存器.page3 讀寫,位0只讀 */
#define RW3_9346CR_EEM1 0x80 /* 選擇工作模式. 00:正常模式; 01:自動(dòng)裝載9346中的內(nèi)容 */
#define RW3_9346CR_EEM0 0x40 /* 10:9346編程模式; 11:配置寄存器寫使能(CONFIG1-3) */
#define RW3_9346CR_REV5 0x20 /* 保留位,總為1 */
#define RW3_9346CR_REV4 0x10 /* 保留位,總為1 */
#define RW3_9346CR_EECS 0x08 /* 在auto_load和編程模式下,映射EECS, EESK, EEDI & EEDO引腳上的狀態(tài) */
#define RW3_9346CR_EESK 0x04
#define RW3_9346CR_EEDI 0x02
#define R3_9346CR_EEDO 0x01
/* ............................................................................................ */
#define RW3_BPAGE 0x02 /* BROM頁寄存器 */
/* ............................................................................................ */
#define RW3_CONFIG0 0x03 /* 配置寄存器0.page3 位7,6讀寫,其余只讀 */
#define RW3_CONFIG0_ID1 0x80 /* 在RTL8019AS可寫,其余不行 */
#define RW3_CONFIG0_ID0 0x40
/* 以下為狀態(tài)位 */
#define R3_CONFIG0_AUI 0x20 /* 置1:when 外部MAU作為AUI接口.(1)10Base5模式;(2)AUI輸入為高 */
#define R3_CONFIG0_PNPJP 0x10 /* 置1:when pnp引腳被外部拉高,即插即用模式 */
#define R3_CONFIG0_JP 0x08 /* 置1:when 跳線模式 */
#define R3_CONFIG0_BNC 0x04 /* 置1:when BNC接口.(1)PL1=PL0=0 (auto-detect)和連接測(cè)試失敗;(2) PL1=PL0=1 (10 Base 2) */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -