以太网通信接口的设计与实现
作。
对Realtek8029 PCI空间的配置需要三个步骤:
首先是扫描总线,这一步的目的是找到Real-tek8029的配置地址,直观地讲,就是找到它的PCI_IDSEL引脚和哪根AD线相连,因为后续的配置写要根据这个地址来寻址。扫描总线时,要对AD〔11〕到AD〔31〕每根线进行一次扫描,如果哪根AD线连接了一个PCI设备的PCI IDSEL引脚,那么用配置读函数读取PCI配置空间的0号寄存器时,应该返回该设备的设备和厂商代码,如果这根线实际未连接设备,则返回值是0。已知Realtek8029的设备和厂商代码是“0x802910ec”,如果返回值与之相同,说明找到了Realtek8029,这时要记下这根AD线的序号。例如,在硬件上把Realtek8029的PCI IDSEL和AD〔20〕相连,则扫描到的序号就应该是“20”。
其次,用配置写函数配置I/O读写使能,即在command寄存器中写入“0x1”。
最后,用配置写函数配置I/O地址,也就是在I/OBaseAdddress寄存器写入分配给该设备的I/O地址(例如“0xe400”)。具体程序流程图如图4所示。
4 调试结果
根据以上设计,笔者在原TM1300视频编码硬件系统的基础上加入了PCI接口,并编写了pSOS下Realtek8029的驱动程序。然后,在这个硬件平台上对Realtek8029的驱动部分进行了数据传送测试。
笔者首先用一个单独的UDP发送任务进行发送速率测试。这个任务主要是高速地向网络上的一台PC发送数据包,数据包的大小是变长的。PC接收并对丢包数进行统计的结果如表1所列。实验表明,在用网线直连的各种测试速率情况下都没有出错,而当接入局域网后,在发送速率为4.5Mbps时有突发的少量错误。由于UDP是不可靠的传输方式,所以这种错误是正常的。测试中,UDP发送的最高速率可以达到5Mbps左右,它与硬件的最高速率(10Mbps)相比还有一定差距,主要原因是数据从系统主内存到Realtek8029片上RAM的拷贝过程目前尚未采用DMA方式,这是需要改进的地方。
表1 丢包数统计表(单位:丢包个数/分钟)
连接方式 | 发 送 速 率 | ||
800kbps | 1.8Mbps | 4.5Mbps | |
网络直连 | 0 | 0 | 0 |
接入局域网 | 0 | 0 | 2.5 |
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)
- 基于DSP和PCI总线的通用数字信号处理系统(11-13)
- 一种基于PCI总线和DSP技术的虚拟仪器设计(03-16)
- 基于Linux平台的天气雷达高速数据采集系统设计(03-13)
- 基于DSP与PC机的PCI总线高速数据传输 (07-08)