bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:2808回复:29

三星arm9网络发送数据的问题

楼主#
更多 发布于:2005-04-11 16:11
在三星arm9板子上通过网络发送数据,是用socket创建的一个套接字,我发现了一个奇怪的问题:
send的速度时快时慢,慢的时候可以达到五六百毫秒,才4k的数据,我的程序只是负责发送数据,在另一台计算机上接收数据,没做其他额外的事,不知是什么地方影响了他?哪位大虾知道这是为什么呢?

还有我想用异步套接字来发送数据,第六个参数该如何设置
WSASend(clientfd,&wsabuf,1,&numbysend,0,NULL,NULL);

下面是我发送部分的代码和测试的速度:
while(1)
{
     onesendnum=0;
     offset=0;
stemp=&recvbuf[84];
allcount=5530*4;
time1=GetTickCount();
while(allcount>0)
{
if(allcount>=1024*4) onesendnum=1024*4;
else onesendnum=allcount; sdnum=send(clientfd,stemp+offset,onesendnum,0);
if(sdnum<=0)
{
clientfd=-1;
RETAILMSG(1,(TEXT(\"send data to remotecontrol error...\\r\\n\")));
return 0;
}
offset+=sdnum;
allcount-=sdnum;
          }
time2=GetTickCount();
RETAILMSG(1,(TEXT(\"send data time=%d,sdnum=%d\\r\\n\"),(time2-time1),sdnum));
}

测试的时间
send data time=19
send data time=21
send data time=23
send data time=26
send data time=521
send data time=495
send data time=509
send data time=27
send data time=23
send data time=23
send data time=27
send data time=26
send data time=26
send data time=22
send data time=25
send data time=24
send data time=26
send data time=625
send data time=23
send data time=582
send data time=26
send data time=23
send data time=27
send data time=368
send data time=497
send data time=611
send data time=27
send data time=23
send data time=23
send data time=27
send data time=26
send data time=26
send data time=22
send data time=24
send data time=25
send data time=26
send data time=726
send data time=23
send data time=730
send data time=26
send data time=27
send data time=23
send data time=27
send data time=423
send data time=599
send data time=25,
send data time=27,
send data time=23
send data time=23
send data time=26
send data time=26
send data time=25
send data time=22
send data time=25
send data time=24
send data time=26
send data time=505
send data time=23
send data time=614
send data time=26
send data time=27
send data time=23
send data time=26
send data time=336
send data time=497
send data time=25
send data time=28
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-13 10:54
对了,我记得WIN2K的NDIS里面MPSEND运行在一般IRQL,而PTRECEIVE则在IRQL NODISPATCH,这些东西不是这样写的哈,总之,RECEIVE不能调度,而SEND可以,这里可能也是这个问题吧,不过CE好像没有IRQL的概念,如果强行在SEND里面关中断有点儿不妥,你可以考虑一下怎么做
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-13 10:48
你是说单发,不接受就没有问题?

这样的话就不好弄了啊,收发的结构不能动...
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-12 21:12
你的那个外部中断接得什么呢?这个设备在工作没有?中断频率高不高?ISR写得怎么样?中断优先级比网卡高吗?


外部中断一接的是DSP,但和这个没关系,因为我在开发板上另写了个测试程序,,依然是这样.我现在把数据拆包,只是单方面发或者收,通过延时或者打印串口,基本可以稳定运行,但达不到实时的要求,速度只有一两兆.如果延时少些,速度可以达到四五兆bite,但很容易断掉.
如果收发动作都有的话,就更容易断掉,实在搞不定!!!!!!!!!
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-12 13:36
你的那个外部中断接得什么呢?这个设备在工作没有?中断频率高不高?ISR写得怎么样?中断优先级比网卡高吗?
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-11 21:15
是啊,很头疼.没有关掉他,系统中还有一个外部中断1和定时器中断.
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-11 14:58
哇,还没搞定啊,对了,你的中断有没有在某个地方被长时间关断过?
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-10 21:48
我现在把数据拆成很小的包拉,一次才发600个字节,但有的时候很容易网络就断掉了,而且再去ping它就不通拉,大家都来帮帮忙,远峰的2410板子?
薄荷的滋味
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-10 21:25
试过拉和这个没有关系

薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-10 14:55
那要不你把你的线程优先级提到最高观察一下呢
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-09 20:25
老大,不是网络驱动的问题.不知还有什么地方可以影响它
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-27 14:14
....你说改什么难找啊???找到要改的东西了?网卡驱动在你的BSP里面啊
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-04-26 20:28
老大,在哪个文件里修改呢?好难找
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-04-20 11:35
这个速度也属正常,跟你操作芯片有关,你看看mac控制器里面有没有提速位,我记得cs8900是有的
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-04-19 20:29
网络是点对点的,肯定没有问题
剩下的两个我再仔细看看,希望能找出问题来.

另外我注意到一个问题,下载内核时他的速度也不是很快,只有230K/s左右,这个会不会说明网卡设置有问题
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-04-19 14:06
嗯,可能性都有。

因为DEBUG BUILD的时候有很多调试信息和附加功能(比如驱动时间测试,内核调试器等等),这些东西不知道你去干净没有,这些对速度会有影响。

不过我觉得你还是首先检查你做的部分:
1.你的局域网负载情况怎么样?先排除网络问题;
2.驱动中有无不合理的部分,我建议你看看你的网卡芯片的一些注意事项说明,有的网卡的MTU做的不太对,还有内部寄存器的设置看有无不妥(比如网卡时钟设对了吗);
3.如果一切都没什么的话,你可以在你的驱动中收发包的函数里面测试一下时间(前后用GetTickCount后相减),看看抖动出现在你的收发函数里面,还是出现在MINIPORT和NDIS的衔接上面;
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-04-18 12:53
wxl_50685330大哥,我把通过网卡调试的部分合kitl的初始化都去掉了,结果还是那样,难不成真的是网卡驱动的问题?
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-04-15 10:38
那基本可以肯定收发包的动作没什么问题,不过网卡驱动你还是要再看看。你只要不把kitl架在网卡上就没有共享的问题
根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-04-14 20:18
呵呵,上面我也写错了句话,kitl也设置成通过串口的,网卡只是下载os image,在这种配置下网络发送数据速度也是忽慢忽快的,而不是下载内核时速度忽快忽慢.
把网卡设置成vmini模式,是哪几个内核文件啊?
薄荷的滋味
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-04-14 13:56
:)kernel debugger不是设的,而是去的:))

set imgnodebugger=1

首先认个错,不是不能用网卡下:))

我说的不能共享是指在os image里面,不是在boot loader里面,你看看你的oeminit里面是不是让kitl用的网卡。

如果你的网卡用来下载os image的时候都忽快忽慢的话,看看网卡的帮助,对mtu什么的有没有什么说明。还有看看getframe和sendframe函数的实现,有没有什么地方有点儿不妥。

根据地的兄弟们,团结就是力量
上一页
游客

返回顶部