新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現串口協議的網絡化

        單片機實現串口協議的網絡化

        作者: 時間:2011-08-02 來源:網絡 收藏

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

          2.2 DMA數據通道

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

          所謂的DMA就是直接內存訪問(DirectMem2oryAccess)。普通的尋址方式是給出一個地址,然后取出對應的值。而在DMA方式下,我們指定一個寄存器地址,主機只要反復地讀取或寫入這個地址,就可以取出或寫入大量的數據。網卡指定的遠程DMA端口就是這個用途。設置好起始地址和讀出的byte數后,我們反復讀遠程DMA端口,就可以將網卡里從網線收到的數據包,從0x400020x7fff的RAM區讀出;反之,同樣設置好起始地址和寫入的byte數后,我們反復寫遠程DMA端口,就可以將數據發送到網卡的發送緩沖RAM中,然后發出發送的命令,就可以把數據包發送到網線中。

          2.3 網卡的初始化過程

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

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

          使RBCR1=0;RBCR0=0,將遠程DMA操作的傳輸字節數清零。

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

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

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

          使TCR=0,設置發送配置寄存器,使用默認配置。

          使DCR=0x80+0x40+0x00,設置數據配置寄存器,選擇字節DMA。

          使ISR=-1,設置中斷狀態寄存器,清除所有已有中斷。

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

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

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

          將MAR02MAR7全部設為0xFF,允許接收所有的多址數據包。

          使CURR=0x47,設置當前接收頁面為0x47。

          使CR=0x22,啟動網卡芯片,開始接收和發送過程。

          2.4 網卡工作接收和發送過程

          網卡RAM是以256byte為一頁,是按頁存儲的結構,16bit的RAM地址高8bit又叫頁碼。網卡的16k的RAM地址從0x400020x7fff,從頁0x40到頁0x7f,一共有64頁。64頁被接收和發送數據包用。接收和發送都是以頁為最小的單位進行的。接收緩沖區需要定義,剩下的就可以作為發送緩沖區。

          接收緩沖區由兩個寄存器決定:PSTART(PageStartRegister)和PSTOP(PageStopRegister)。設置了接收緩沖區之后,這個緩沖區就形成了一個循環隊列。控制接收緩沖區的有兩個寄存器CURR、BNRY。CURR是網卡寫緩沖區的指針,指向當前要寫的頁;BNRY是讀指針,指向用戶已經讀走的頁。

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


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 公安县| 霍邱县| 长岭县| 彩票| 大化| 抚州市| 沅陵县| 米林县| 贵溪市| 砚山县| 阜宁县| 陆河县| 南宫市| 九龙城区| 大港区| 专栏| 庆阳市| 云龙县| 吉林省| 洪江市| 阿鲁科尔沁旗| 谢通门县| 宜章县| 诸城市| 东台市| 盐边县| 星子县| 化隆| 德钦县| 武宣县| 博客| 确山县| 略阳县| 屏边| 内乡县| 武山县| 吉水县| 邻水| 呈贡县| 合水县| 海原县|