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

cumedl 2007-05-05 12:44: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

最后提示如下:
Error loading file: errno = 0x3c.
Can't load boot file!!

我的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的源代码没有找到原因,请高手帮忙分析指导一下,万分感谢!

cumedl@gmail.com
...全文
291 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧