| 目的地址(6字節(jié)) | 源地址(6字節(jié)) | 協(xié)議(2字節(jié)) | 數(shù)據(jù)(不小于46字節(jié)) |
(2)把上面的數(shù)據(jù)包通過遠(yuǎn)程DMA寫送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。
a.設(shè)置CR為22H,選擇寄存器頁面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é)計數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長度;
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)啟動本地DMA,把數(shù)據(jù)發(fā)送出去。
a.設(shè)置發(fā)送字節(jié)計數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長度;
b.設(shè)置發(fā)送頁面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開始地址高位字節(jié);
c.設(shè)置命令寄存器CR為26H,啟動發(fā)送。
3.4 高層通信協(xié)議
上述發(fā)送、接收過程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實(shí)現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其它設(shè)備(如PC機(jī))之間的通信,還需要在嵌入式系統(tǒng)中實(shí)現(xiàn)更高層的通信協(xié)議,如TCP/IP協(xié)議,這樣PC機(jī)的程序員就可以使用TCP/IP協(xié)議透明地訪問嵌入式系統(tǒng)的數(shù)據(jù)。
因此上述以8051單片機(jī)系統(tǒng)為例的嵌入式系統(tǒng)的軟件設(shè)計中除了實(shí)現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實(shí)現(xiàn)TCP/IP協(xié)議及更高層的應(yīng)用層協(xié)議才能真正實(shí)現(xiàn)整個系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實(shí)現(xiàn)通常采用C語言,并且有現(xiàn)成的源程序,所以在用8051系列單片機(jī)編程時,可采有C51語言并參考TCP/IP 標(biāo)準(zhǔn)的源程序來具體實(shí)現(xiàn)。有關(guān)這方面內(nèi)容,可以查看有關(guān)TCP/IP協(xié)議方面的資料。





