在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)以太網(wǎng)接口的設(shè)計(jì)

            嵌入式系統(tǒng)以太網(wǎng)接口的設(shè)計(jì)

            作者: 時(shí)間:2009-03-26 來源:網(wǎng)絡(luò) 收藏

            DM9008可尋址的空間有32個(gè),分別為00H~1FH。其中00H~0FH是寄存器區(qū),00H作為命令寄存器,通過設(shè)置可選擇3個(gè)頁(yè)面,10H~17H為數(shù)據(jù)端口,18H~1FH為復(fù)位端口。

            3.1 DM9008的初始化

            DM9008的具體初始化過程如下(CPU對(duì)DM9008的尋址需要加上基地址,為了描述方便,省略掉基地址直接用DM9008的內(nèi)部地址描述寄存器地址):

            (1)讀入1FH端口數(shù)據(jù),再寫回該地址以啟動(dòng)DM9008工作。

            (2)向命令寄存器CR(00H)寫入21H,選擇寄存器頁(yè)面0,并進(jìn)行軟件復(fù)位。

            (3)設(shè)置數(shù)據(jù)結(jié)構(gòu)寄存器DCR(0EH)為48H。

            (4)設(shè)置方式狀態(tài)寄存器TCR(0DH)為02H。

            (5)讀出網(wǎng)絡(luò)的物理地址:

            a. 設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1(0BH)、RBCR0(0AH)的值為000CH;

            b.設(shè)置遠(yuǎn)程DMA地址RSAR1(09H)、RSAR0(08H)的值為0000H;

            c. 設(shè)置命令寄存器CR(00H)為遠(yuǎn)程DMA讀,即0AH;

            d. 重復(fù)從數(shù)據(jù)端口(10H)讀6個(gè)字節(jié),這6個(gè)字節(jié)即網(wǎng)絡(luò)物理地址;

            e.停止遠(yuǎn)程DMA,設(shè)置CR為21H,RBCR1、RBCR0為0000H。

            (6)設(shè)置接收狀態(tài)寄存器RCR(0CH)為04H。

            (7)劃分緩沖區(qū)為接收緩沖區(qū)和發(fā)送緩沖區(qū),并建立接收緩沖環(huán)。將DM9008內(nèi)部RAM地址為4000H~4BFFH設(shè)置為發(fā)送緩沖區(qū),4C00H~7FFFH設(shè)置為接收緩沖區(qū),即設(shè)置PSTART(01H)為4CH,PSTOP(02H)為80H,BNRY(03H)為4CH。

            (8)設(shè)置CR為61H,選擇頁(yè)面1。

            (9)設(shè)置網(wǎng)卡地址寄存器,把PAR0(01H)~PAR5(06H)設(shè)置為前面讀出的物理地址。

            (10)設(shè)置當(dāng)前頁(yè)面寄存器CURR(07H)為PSTART+1,即4DH。

            (11)清除多址寄存器,即MAR0(08H)~MAR7(0FH)為00H。

            (12)設(shè)置CR為21H,選擇寄存器頁(yè)面0。

            (13)清除中斷狀態(tài)寄存器ISR(07H)為0FFH。

            (14)設(shè)置中斷屏蔽寄存器IMR(0FH)為3BH,即接收中斷允許、接收錯(cuò)誤中斷允許、發(fā)送錯(cuò)誤中斷允許、溢出中斷允許、計(jì)數(shù)器溢出中斷允許。

            (15)設(shè)置發(fā)送設(shè)置寄存器TCR(0DH)為00H。

            (16)設(shè)置CR為22H,芯片進(jìn)入工作狀態(tài)。

            至此,DM9008的初始化過程完成,DM9008處于接收狀態(tài)。只要網(wǎng)絡(luò)上有可以接收的數(shù)據(jù)包,DM9008自動(dòng)將數(shù)據(jù)存入接收緩沖區(qū)并在收完后向CPU發(fā)中斷申請(qǐng)。

            3.2 接收數(shù)據(jù)

            DM9008收到一個(gè)完整的數(shù)據(jù)包后,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)DM9008的中斷申請(qǐng)后,進(jìn)入中斷服務(wù)程序并開始接收數(shù)據(jù),具體過程如下。

            (1)讀出中斷狀態(tài)寄存器ISR,并寫回該寄存器。

            (2)判斷是否數(shù)據(jù)接收中斷,如果不是,不執(zhí)行以下步驟。

            (3)設(shè)置CR為22H,選擇頁(yè)面0。

            (4)設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為接收地址指針,該指針高位字節(jié)初始值位PSTART+1,低位字節(jié)為0。

            (5)設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1、RBCR0為0004H;

            (6)設(shè)置CR為遠(yuǎn)程讀0AH,讀數(shù)據(jù)端口,讀出4個(gè)字節(jié),這4個(gè)字節(jié)第1個(gè)字節(jié)表示接收狀態(tài),第2個(gè)字節(jié)為下一包開始地址指針,第3~4個(gè)字節(jié)為本數(shù)據(jù)包的長(zhǎng)度(高位字節(jié)在前)。

            (7)設(shè)置CR為22H,遠(yuǎn)程DMA完成。

            (8)根據(jù)接收狀態(tài)判斷數(shù)據(jù)包是否接收正確,如果接收正確,啟動(dòng)遠(yuǎn)程DMA,收取該數(shù)據(jù)包并進(jìn)行處理。

            (9)結(jié)束遠(yuǎn)程DMA,設(shè)置下一次接收數(shù)據(jù)指針和接收邊界指針。

            3.3 發(fā)送數(shù)據(jù)

            數(shù)據(jù)的發(fā)送過程應(yīng)包含三個(gè)步驟:數(shù)據(jù)包的封裝;通過遠(yuǎn)程DMA將數(shù)據(jù)包送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū);通過DM9008的本地DMA將數(shù)據(jù)送入FIFO進(jìn)行發(fā)送。具體過程如下:

            (1)數(shù)據(jù)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下:

            (2)把上面的數(shù)據(jù)包通過遠(yuǎn)程DMA寫送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。

            a. 設(shè)置CR為22H,選擇寄存器頁(yè)面0;

            b. 設(shè)置中斷狀態(tài)寄存器ISR為40H,清除發(fā)送完成標(biāo)志;

            c.設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為4000H,即發(fā)送緩沖區(qū)開始地址,

            d. 設(shè)置遠(yuǎn)程DMA字節(jié)計(jì)數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長(zhǎng)度,

            e. 設(shè)置CR為12H,設(shè)置命令寄存器為遠(yuǎn)程DMA寫,

            f. 往數(shù)據(jù)端口寫入發(fā)送數(shù)據(jù),

            g. 查詢中斷狀態(tài)寄存器ISR,等待遠(yuǎn)程DMA完成,

            h. 設(shè)置CR為22H,設(shè)置RBCR1、RBCR0為0,遠(yuǎn)程DMA停止,

            i. 設(shè)置ISR為40H,清除發(fā)送完成標(biāo)志。

            (3)啟動(dòng)本地DMA,把數(shù)據(jù)發(fā)送出去。

            a. 設(shè)置發(fā)送字節(jié)計(jì)數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長(zhǎng)度;

            b. 設(shè)置發(fā)送頁(yè)面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開始地址高位字節(jié);

            c. 設(shè)置命令寄存器CR為26H,啟動(dòng)發(fā)送。

            3.4 高層通信協(xié)議

            上述發(fā)送、接收過程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實(shí)現(xiàn)上其它設(shè)備(如PC機(jī))之間的通信,還需要在中實(shí)現(xiàn)更高層的通信協(xié)議,如,這樣PC機(jī)的程序員就可以使用透明地訪問的數(shù)據(jù)。

            因此上述以8051系統(tǒng)為例的的軟件中除了實(shí)現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實(shí)現(xiàn)及更高層的應(yīng)用層協(xié)議才能真正實(shí)現(xiàn)整個(gè)系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實(shí)現(xiàn)通常采用C語言,并且有現(xiàn)成的源程序,所以在用8051系列編程時(shí),可采用C51語言并參考TCP/IP標(biāo)準(zhǔn)的源程序來具體實(shí)現(xiàn)。有關(guān)這方面內(nèi)容,可以查看有關(guān)TCP/IP協(xié)議方面的資料。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉