|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我的板子是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 |
|