3 DSP对NE2000网卡的编程
DSP对NE2000网卡的编程就是DSP对网络接口控制器(NIC)DP8390中各种寄存器进行编程控制,完成数据分组的正确发送和接收。网络通信过程可分为网卡初始化、接收控制和发送控制等三部分。限于篇幅,有关DP8390页面寄存器的详细说明和微机环境下的编程技术请参阅文献5,DSP的完整汇编程序请有兴趣的读者和作者联系。下面只给出DSP读取NE2000网卡物理地址的一段程序,实际中是用来验证上述硬件连接是否正确而编制的。我们购买的网卡物理地址为0040056388E7,在PC机上已经得到验证。实验证明,通过下面的程序运行读到了正确的物理地址,从而表明我们所做的设想和实际结果是完全一致的。
SPLK #0021H,60H ;选择"0"页寄存器,后续操作
为复位操作
OUT 60H,CR
SPLK #0049H,60H ;选择16位传输方式
OUT 60H,DCR
SPLK #0000H,60H ;清DMA远程字节寄存器
OUT 60H,RBCR0
OUT 60H,RBCR1
SPLK #001FH,60H ;初始化接收状态配置寄存器
OUT 60H,RCR
SPLK #0002H,60H ;初始化发送状态配置寄存器
OUT 60H,TCR
SPLK #004CH,60H ;设置接收缓冲环起始页面
地址寄存器
OUT 60H,PSTART
SPLK #0080H,60H ;设置接收缓冲环终止页面地
址寄存器
OUT 60H,PSTOP
SPLK #004CH,60H ;设置边界指针寄存器
OUT 60H,BNRY
SPLK #00FFH,60H ;清网卡中断状态
OUT 60H,ISR
SPLK #00FFH,60H ;设置中断屏蔽寄存器
OUT 60H,IMR
SPLK #0000H,60H ;设置远程DMA起始地址为
0000H
OUT 60H,RSAR0
OUT 60H,RSAR1
OUT 60H,RBCR1
SPLK #0006H,60H ;网卡地址长度为6个字节
OUT 60H,RBCR0
SPLK #000AH,60H ;启动远程DMA读
OUT 60H,CR
NOP
IN 61H,DATA_PORT ;61H中存放网卡首字节地址"00H"
IN 62H,DATA_PORT ;62H存放网卡第二字节地址"40H"
IN 63H,DATA_PORT ;63H中存放网卡第三字节
地址"05H"
IN 64H,DATA_PORT ;64H中存放网卡第四字节
地址"63H"
IN 65H,DATA_PORT ;65H中存放网卡第五字
节地址"88H"
IN 66H,DATA_PORT ;66H中存放网卡第六字
节地址"E7H"
网卡在DSP中的应用解决了DSP与DSP之间、DSP与PC之间的准确、高速地通信问题。由于网卡中包含了OSI七层模型中物理层和数据链路层的全部内容,用户不必再为这两层的具体连接和实现操心,可把精力和时间用在要解决的实际问题中去,这必将给用户带来极大的方便。