共2条
1/1 1 跳转至页
问
大家都在说ZLG/IP有问题.
而像我这样对ZLG的依赖性很大的人来说,用ZLG/IP就是不用考虑的选择(没有能力和精力去选择别的CPU和TCP/IP协议栈).我想像我这样的人可能不在少数.
大家看看,能不能互相帮助,把ZLG/IP改造好,主要是把已有的源代码中的错误找出来,利人利已.
贴一个前人找到的错误(网友lizhenARM):
源代码在Ethernet.c文件的Rec_Packet函数中:
----
WriteToNet(0x0b,tmp[0]
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]);
//RSCR0写入读取字节计数低字节//read count low;
应更改为:
WriteToNet(0x0b,tmp[1]>>8&0x00ff);
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]&0x00ff); //RSCR0写入读取字节计数低字节//read count low;
---
我也找了一个,不知对不对:
源代码在IP.c文件的IP_PROCESS()函数中
----
uint8 IP_PROCESS(uint8 * RecData,uint8 num)
{
static temp=0;
---
---
temp++;
if(temp>=MAX_REC_BUFF)
temp=1;
---
---
在这个函数中,局部变量temp不可能大于MAX_REC_BUFF,因为在进入函数时已将temp清0了.所以TEMP没有存在的意义的
------
答 1: !static temp=0;
有意义,temp是静态局部变量(static),它和全局变量差不多,只是它只能局部访问! 答 2: ???楼主搞错了这个变量的用法了 答 3: 是啊!谢谢了!读书,不认真啊! 答 4: -在用ZLG/IP时出现两个问题:
背景: 只用TCP任务.用开发板做客户机,PC做服务器.
1 只调用一次Arp_Request()无法获得对的MAC
2 连续传数会掉线,用ENTHERREAL抓包查看,双方并没有关掉连接,那应是应答出了问题.
高手能指点一下,怎样进行改进吗?
周公说ZLG/IP只要稍加修改就可实用,看来还要再努力啊! 答 5: 我第一次尝试tcp不是很成功zlgip代码写的很乱,后来我改用zlip 答 6: 是校验和出错,正在想,出错了怎么办? 答 7: -- while(ExPtr!=NULL)
{
/*
写数(IP,TCP,DATA)
问题: 如果数据为单个的怎么办????
*/
TEPTR = ExPtr->DAPTR;
for(ii=0;ii<((ExPtr->length+1)/2);ii++)
{
send_buff.bytes[0] = *TEPTR;
TEPTR++;
send_buff.bytes[1] = *TEPTR;
TEPTR++;
WriteToNet(0x10,send_buff.words);
}
ExPtr = ExPtr->STPTR;
}
如果发的数是单个的怎么办,这个段代码,没看懂,有人能指点一下吗?
而像我这样对ZLG的依赖性很大的人来说,用ZLG/IP就是不用考虑的选择(没有能力和精力去选择别的CPU和TCP/IP协议栈).我想像我这样的人可能不在少数.
大家看看,能不能互相帮助,把ZLG/IP改造好,主要是把已有的源代码中的错误找出来,利人利已.
贴一个前人找到的错误(网友lizhenARM):
源代码在Ethernet.c文件的Rec_Packet函数中:
----
WriteToNet(0x0b,tmp[0]
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]);
//RSCR0写入读取字节计数低字节//read count low;
应更改为:
WriteToNet(0x0b,tmp[1]>>8&0x00ff);
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]&0x00ff); //RSCR0写入读取字节计数低字节//read count low;
---
我也找了一个,不知对不对:
源代码在IP.c文件的IP_PROCESS()函数中
----
uint8 IP_PROCESS(uint8 * RecData,uint8 num)
{
static temp=0;
---
---
temp++;
if(temp>=MAX_REC_BUFF)
temp=1;
---
---
在这个函数中,局部变量temp不可能大于MAX_REC_BUFF,因为在进入函数时已将temp清0了.所以TEMP没有存在的意义的
------
答 1: !static temp=0;
有意义,temp是静态局部变量(static),它和全局变量差不多,只是它只能局部访问! 答 2: ???楼主搞错了这个变量的用法了 答 3: 是啊!谢谢了!读书,不认真啊! 答 4: -在用ZLG/IP时出现两个问题:
背景: 只用TCP任务.用开发板做客户机,PC做服务器.
1 只调用一次Arp_Request()无法获得对的MAC
2 连续传数会掉线,用ENTHERREAL抓包查看,双方并没有关掉连接,那应是应答出了问题.
高手能指点一下,怎样进行改进吗?
周公说ZLG/IP只要稍加修改就可实用,看来还要再努力啊! 答 5: 我第一次尝试tcp不是很成功zlgip代码写的很乱,后来我改用zlip 答 6: 是校验和出错,正在想,出错了怎么办? 答 7: -- while(ExPtr!=NULL)
{
/*
写数(IP,TCP,DATA)
问题: 如果数据为单个的怎么办????
*/
TEPTR = ExPtr->DAPTR;
for(ii=0;ii<((ExPtr->length+1)/2);ii++)
{
send_buff.bytes[0] = *TEPTR;
TEPTR++;
send_buff.bytes[1] = *TEPTR;
TEPTR++;
WriteToNet(0x10,send_buff.words);
}
ExPtr = ExPtr->STPTR;
}
如果发的数是单个的怎么办,这个段代码,没看懂,有人能指点一下吗?
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
