ping lwip网络协议栈 分析(二)

应用环境详见参见:ping lwip网络协议栈 分析(一)

网卡:ENC28J60


dos执行ping指令:

ping 192.168.5.8 -t -l 1


抓包:


看到如下现象

网卡ENC28J60自动填充短针至60字节:

PC发送--下位机接收时,抓取到42==42+1 字节数据

下位机发送--PC接收时,抓取到60==42+(18)字节数据

这里寻个原因-----基本定位到enc28j60的自动填充 相关部分(填充0x00)

查看手册及网卡的驱动配置情况,如下:

看下手册上对发送数据包的要求:



发送函数:

/*
*通过ENC28J60发送数据包到网络//详见手册7.1
*参数:len---包长 ; *packet----数据包的指针
*返回值:无
*/
void enc28j60PacketSend(unsigned int len, unsigned char* packet)
{
    // Set the write pointer to start of transmit buffer area--设置发送缓冲区地址写指针入口
    while(!(enc28j60Read(ESTAT) & ESTAT_CLKRDY));//检查ESTAT_CLKRDY--时钟就绪
    enc28j60Write(EWRPTL, TXSTART_INIT&0xFF);
    enc28j60Write(EWRPTH, TXSTART_INIT>>8);
    
    // Set the TXND pointer to correspond to the packet size given--使用给定的len设置发送缓冲器结束地址
    enc28j60Write(ETXNDL, (TXSTART_INIT+len)&0xFF);
    enc28j60Write(ETXNDH, (TXSTART_INIT+len)>>8);
    
   // write per-packet control byte (0x00 means use macon3 settings)--
    //发送数据包:ENC28J60要求在待发送数据包前添加一个包控制字节,包控制字节格式如图7.1--bit0 --POVERRIDE--详见手册7.1
    enc28j60WriteOp(ENC28J60_WRITE_BUF_MEM, 0, 0x00);
    
    // copy the packet into the transmit buffer--将数据包复制到发送缓冲区
    enc28j60WriteBuffer(len, packet);
...............
..............
}
留意倒数第二行的设置代码:将包控制字节的bit 0位==设置为0(低),于是决定了:MACON3中的值用于确定数据包发送的方式。


再来看下MACON3寄存器的内容:


在网卡初始化的过程中有设置:

unsigned char enc28j60Init(unsigned char* macaddr)
{
....................
    //由于ENC28J60不支持自动协商机制,所以对端的网卡需要强制设置为全双工--
    //MACON3_PADCFG0用0填充所有短帧至60字节长,并追加一个有效的CRC,其他参数详见手册:MACON3寄存器
    enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, MACON3, MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN|MACON3_FULDPX);
.........................
}

“用 0填充所有短帧至 60字节长,并追加一个有效的CRC”这便是这里要找到的根据。

通过抓到的包也可看出这一情况:


而且是由网络接口层来填充的---------然--并不算作“被需要“的数据。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值