在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機實現(xiàn)串口協(xié)議的網(wǎng)絡(luò)化

            單片機實現(xiàn)串口協(xié)議的網(wǎng)絡(luò)化

            作者: 時間:2011-08-02 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/172586.htm

              2.2 DMA數(shù)據(jù)通道

              RTL8019AS內(nèi)部劃分為遠(yuǎn)程DMA(RemoteDMA)通道和本地DMA(LocalDMA)通道兩個部分。本地DMA完成控制器與網(wǎng)線的數(shù)據(jù)交換,遠(yuǎn)程DMA完成主處理器與網(wǎng)卡數(shù)據(jù)交換。主處理器收發(fā)數(shù)據(jù)只需對遠(yuǎn)程DMA操作。接收數(shù)據(jù)時,RTL8019AS接收到的數(shù)據(jù)通過MAC比較、CRC校驗后,由FIFO存到接收緩沖區(qū),收滿一幀后,以中斷或寄存器標(biāo)志的方式通知主處理器,主處理器通過遠(yuǎn)程DMA通道將其讀出。當(dāng)主處理器要向以太網(wǎng)發(fā)送數(shù)據(jù)時,先將一幀數(shù)據(jù)通過遠(yuǎn)程DMA通道送到RTL8019AS中的發(fā)送緩存區(qū),然后發(fā)出傳送命令;RTL8019AS在完成了上一幀的發(fā)送后,再完成此幀的發(fā)送。

              所謂的DMA就是直接內(nèi)存訪問(DirectMem2oryAccess)。普通的尋址方式是給出一個地址,然后取出對應(yīng)的值。而在DMA方式下,我們指定一個寄存器地址,主機只要反復(fù)地讀取或?qū)懭脒@個地址,就可以取出或?qū)懭氪罅康臄?shù)據(jù)。網(wǎng)卡指定的遠(yuǎn)程DMA端口就是這個用途。設(shè)置好起始地址和讀出的byte數(shù)后,我們反復(fù)讀遠(yuǎn)程DMA端口,就可以將網(wǎng)卡里從網(wǎng)線收到的數(shù)據(jù)包,從0x400020x7fff的RAM區(qū)讀出;反之,同樣設(shè)置好起始地址和寫入的byte數(shù)后,我們反復(fù)寫遠(yuǎn)程DMA端口,就可以將數(shù)據(jù)發(fā)送到網(wǎng)卡的發(fā)送緩沖RAM中,然后發(fā)出發(fā)送的命令,就可以把數(shù)據(jù)包發(fā)送到網(wǎng)線中。

              2.3 網(wǎng)卡的初始化過程

              復(fù)位,使RSTDRV先高后低,注意每一步都要有100ms的延時,以確保復(fù)位成功。然后進行熱復(fù)位,就是先后讀、寫網(wǎng)卡復(fù)位端口。

              使CR=0x21,停止芯片運行,選擇頁面0。

              使RBCR1=0;RBCR0=0,將遠(yuǎn)程DMA操作的傳輸字節(jié)數(shù)清零。

              使PSTART=0x46;PSTOP=0x80;BNRY=0x46,設(shè)置接收開始頁面、結(jié)束頁面和邊界頁面。

              使IMR=0x0,清除中斷屏蔽寄存器。

              使RCR=0x08+0x04,設(shè)置接收配置寄存器,允許接收多址和廣播報文。

              使TCR=0,設(shè)置發(fā)送配置寄存器,使用默認(rèn)配置。

              使DCR=0x80+0x40+0x00,設(shè)置數(shù)據(jù)配置寄存器,選擇字節(jié)DMA。

              使ISR=-1,設(shè)置中斷狀態(tài)寄存器,清除所有已有中斷。

              使用DMA方式,從0000H2000BH中取得本網(wǎng)卡MAC地址。注意,MAC地址每個byte都是重復(fù)一遍存放的,所以只要取單數(shù)1、3、5等byte就可以了。

              使CR=0x61,選擇頁面1。

              將剛才取得的MAC地址放入PAR0-5中。網(wǎng)卡檢查接收到的包是否和PAR里MAC值匹配,然后決定收下或丟棄。所以,也可以任意設(shè)置這個PAR值,來偽造自己的MAC值。

              將MAR02MAR7全部設(shè)為0xFF,允許接收所有的多址數(shù)據(jù)包。

              使CURR=0x47,設(shè)置當(dāng)前接收頁面為0x47。

              使CR=0x22,啟動網(wǎng)卡芯片,開始接收和發(fā)送過程。

              2.4 網(wǎng)卡工作接收和發(fā)送過程

              網(wǎng)卡RAM是以256byte為一頁,是按頁存儲的結(jié)構(gòu),16bit的RAM地址高8bit又叫頁碼。網(wǎng)卡的16k的RAM地址從0x400020x7fff,從頁0x40到頁0x7f,一共有64頁。64頁被接收和發(fā)送數(shù)據(jù)包用。接收和發(fā)送都是以頁為最小的單位進行的。接收緩沖區(qū)需要定義,剩下的就可以作為發(fā)送緩沖區(qū)。

              接收緩沖區(qū)由兩個寄存器決定:PSTART(PageStartRegister)和PSTOP(PageStopRegister)。設(shè)置了接收緩沖區(qū)之后,這個緩沖區(qū)就形成了一個循環(huán)隊列??刂平邮站彌_區(qū)的有兩個寄存器CURR、BNRY。CURR是網(wǎng)卡寫緩沖區(qū)的指針,指向當(dāng)前要寫的頁;BNRY是讀指針,指向用戶已經(jīng)讀走的頁。

              BNRY不可以超過CURR,否則沒被用戶讀取的數(shù)據(jù)就被覆蓋了。用戶設(shè)置完了CURR以后,就不用管它,網(wǎng)卡接收到新的數(shù)據(jù)后,會自動修改它。用戶讀出數(shù)據(jù)后,要修改BNRY的值,以通知網(wǎng)卡該數(shù)據(jù)已經(jīng)讀出了。


            上一頁 1 2 3 4 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉