关于8900网卡的驱动问题,请高手指点!

[复制链接]
查看11 | 回复0 | 2021-1-27 05:45:25 | 显示全部楼层 |阅读模式
我的板子是2410的,与公板一致。
移植cs8900的vxworks驱动的时候,参考的是网上可以找到的驱动文件,文件名为csend.c,csSysEnd.c那个版本。
发现移植后,在进行fxp的时候,在host没有抓到任何数据包。在排除硬件链路的故障的情况下,我按照uboot的方式进行初始化8900。
如下:
csWritePacketPage(pCS,PKTPG_RX_CFG,0);
csWritePacketPage(pCS,PKTPG_RX_CTL,(RX_CTL_RX_OK_A|RX_CTL_IND_A|RX_CTL_BCAST_A));
csWritePacketPage(pCS,PKTPG_TX_CFG,0);
csWritePacketPage(pCS,PKTPG_BUF_CFG,0);
csWritePacketPage(pCS,PKTPG_LINE_CTL,LINE_CTL_RX_ON|LINE_CTL_TX_ON);
pIA=(PIA)pCS->enetAddr;
csWritePacketPage(pCS,PKTPG_IND_ADDR,pIA->word[0]);
csWritePacketPage(pCS,PKTPG_IND_ADDR+2,pIA->word[1]);
csWritePacketPage(pCS,PKTPG_IND_ADDR+4,pIA->word[2]);
将8900的工作模式设定为io模式和poll输出模式。
当执行到fxp的时候,发出的3次数据包如下:
ffffffffffff87420a780608100840610087420a780a8c0a12000a8c0212
ffffffffffff87420a780608100840610087420a780a8c0a12000a8c0212
ffffffffffff87420a780608100840610087420a780a8c0a12000a8c0212
最后提示如下:
Errorloadingfile:errno=0x3c.
Can'tloadbootfile!!
我的host的ip为192.168.18.2,目标机ip为:192.168.18.10。发送的指令为0xc0,长度为42。
感觉到很奇怪,为了验证发包是否正确,我用其它机器进行ping包,并用sniff抓到ping的包结构,如下:
45003c4bdc08001498fc0a8120ac0a81202800475c2004006162636465666768696a6b6c6d6e6f7071727374757677616263646566676869
将这个共计60个byte的包写到8900里面进行发送,发现调用while(!TX_EVENT_TX_OK&csReadPacketPage(pCS,PKTPG_TX_EVENT))说明包发送完毕后,
在host侧仍然无法抓到任何包。
为了验证,将上面的ping包结够改为只需要协义中的前面28字节也不行。
修改过发送指令,包括选则pad,选则crc等组合都不生效,即无法抓到包。
甚是怀疑8900的芯片寄存器配置的问题,但是根据手册和linux的源代码没有找到原因,请高手帮忙分析指导一下,万分感谢!
[email protected]
分 -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行