(2)把上面的数据包通过远程DMA写送入DM9008的数据发送缓冲区。
a. 设置CR为22H,选择寄存器页面0;
b. 设置中断状态寄存器ISR为40H,清除发送完成标志;
c.设置远程DMA地址寄存器RSAR1、RSAR0为4000H,即发送缓冲区开始地址,
d. 设置远程DMA字节计数寄存器RBCR1、RBCR0为发送数据包的长度,
e. 设置CR为12H,设置命令寄存器为远程DMA写,
f. 往数据端口写入发送数据,
g. 查询中断状态寄存器ISR,等待远程DMA完成,
h. 设置CR为22H,设置RBCR1、RBCR0为0,远程DMA停止,
i. 设置ISR为40H,清除发送完成标志。
(3)启动本地DMA,把数据发送出去。
a. 设置发送字节计数器TBCR1(06H)、TBCR0(05H)为发送数据包的长度;
b. 设置发送页面起始地址TPSR(04H)为40H,即发送缓冲区开始地址高位字节;
c. 设置命令寄存器CR为26H,启动发送。 3.4 高层通信协议
上述发送、接收过程所完成的协议是MAC层和物理层的协议。要真正实现嵌入式系统与以太网上其它设备(如PC机)之间的通信,还需要在嵌入式系统中实现更高层的通信协议,如TCP/IP协议,这样PC机的程序员就可以使用TCP/IP协议透明地访问嵌入式系统的数据。
因此上述以8051单片机系统为例的嵌入式系统的软件设计中除了实现收发数据的功能外,还需要实现TCP/IP协议及更高层的应用层协议才能真正实现整个系统的通信功能。由于TCP/IP协议的实现通常采用C语言,并且有现成的源程序,所以在用8051系列单片机编程时,可采用C51语言并参考TCP/IP标准的源程序来具体实现。有关这方面内容,可以查看有关TCP/IP协议方面的资料。