阅读:2808回复:29
三星arm9网络发送数据的问题
在三星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 |
|
|
论坛版主
![]() |
沙发#
发布于:2005-05-13 10:54
对了,我记得WIN2K的NDIS里面MPSEND运行在一般IRQL,而PTRECEIVE则在IRQL NODISPATCH,这些东西不是这样写的哈,总之,RECEIVE不能调度,而SEND可以,这里可能也是这个问题吧,不过CE好像没有IRQL的概念,如果强行在SEND里面关中断有点儿不妥,你可以考虑一下怎么做
|
|
论坛版主
![]() |
板凳#
发布于:2005-05-13 10:48
你是说单发,不接受就没有问题?
这样的话就不好弄了啊,收发的结构不能动... |
|
地板#
发布于:2005-05-12 21:12
你的那个外部中断接得什么呢?这个设备在工作没有?中断频率高不高?ISR写得怎么样?中断优先级比网卡高吗? 外部中断一接的是DSP,但和这个没关系,因为我在开发板上另写了个测试程序,,依然是这样.我现在把数据拆包,只是单方面发或者收,通过延时或者打印串口,基本可以稳定运行,但达不到实时的要求,速度只有一两兆.如果延时少些,速度可以达到四五兆bite,但很容易断掉. 如果收发动作都有的话,就更容易断掉,实在搞不定!!!!!!!!! |
|
|
论坛版主
![]() |
地下室#
发布于:2005-05-12 13:36
你的那个外部中断接得什么呢?这个设备在工作没有?中断频率高不高?ISR写得怎么样?中断优先级比网卡高吗?
|
|
5楼#
发布于:2005-05-11 21:15
是啊,很头疼.没有关掉他,系统中还有一个外部中断1和定时器中断.
|
|
|
论坛版主
![]() |
6楼#
发布于:2005-05-11 14:58
哇,还没搞定啊,对了,你的中断有没有在某个地方被长时间关断过?
|
|
7楼#
发布于:2005-05-10 21:48
我现在把数据拆成很小的包拉,一次才发600个字节,但有的时候很容易网络就断掉了,而且再去ping它就不通拉,大家都来帮帮忙,远峰的2410板子?
|
|
|
8楼#
发布于:2005-05-10 21:25
试过拉和这个没有关系
|
|
|
论坛版主
![]() |
9楼#
发布于:2005-05-10 14:55
那要不你把你的线程优先级提到最高观察一下呢
|
|
10楼#
发布于:2005-05-09 20:25
老大,不是网络驱动的问题.不知还有什么地方可以影响它
|
|
|
论坛版主
![]() |
11楼#
发布于:2005-04-27 14:14
....你说改什么难找啊???找到要改的东西了?网卡驱动在你的BSP里面啊
|
|
12楼#
发布于:2005-04-26 20:28
老大,在哪个文件里修改呢?好难找
|
|
|
论坛版主
![]() |
13楼#
发布于:2005-04-20 11:35
这个速度也属正常,跟你操作芯片有关,你看看mac控制器里面有没有提速位,我记得cs8900是有的
|
|
14楼#
发布于:2005-04-19 20:29
网络是点对点的,肯定没有问题
剩下的两个我再仔细看看,希望能找出问题来. 另外我注意到一个问题,下载内核时他的速度也不是很快,只有230K/s左右,这个会不会说明网卡设置有问题 |
|
|
论坛版主
![]() |
15楼#
发布于:2005-04-19 14:06
嗯,可能性都有。
因为DEBUG BUILD的时候有很多调试信息和附加功能(比如驱动时间测试,内核调试器等等),这些东西不知道你去干净没有,这些对速度会有影响。 不过我觉得你还是首先检查你做的部分: 1.你的局域网负载情况怎么样?先排除网络问题; 2.驱动中有无不合理的部分,我建议你看看你的网卡芯片的一些注意事项说明,有的网卡的MTU做的不太对,还有内部寄存器的设置看有无不妥(比如网卡时钟设对了吗); 3.如果一切都没什么的话,你可以在你的驱动中收发包的函数里面测试一下时间(前后用GetTickCount后相减),看看抖动出现在你的收发函数里面,还是出现在MINIPORT和NDIS的衔接上面; |
|
16楼#
发布于:2005-04-18 12:53
wxl_50685330大哥,我把通过网卡调试的部分合kitl的初始化都去掉了,结果还是那样,难不成真的是网卡驱动的问题?
|
|
|
论坛版主
![]() |
17楼#
发布于:2005-04-15 10:38
那基本可以肯定收发包的动作没什么问题,不过网卡驱动你还是要再看看。你只要不把kitl架在网卡上就没有共享的问题
|
|
18楼#
发布于:2005-04-14 20:18
呵呵,上面我也写错了句话,kitl也设置成通过串口的,网卡只是下载os image,在这种配置下网络发送数据速度也是忽慢忽快的,而不是下载内核时速度忽快忽慢.
把网卡设置成vmini模式,是哪几个内核文件啊? |
|
|
论坛版主
![]() |
19楼#
发布于:2005-04-14 13:56
:)kernel debugger不是设的,而是去的:))
set imgnodebugger=1 首先认个错,不是不能用网卡下:)) 我说的不能共享是指在os image里面,不是在boot loader里面,你看看你的oeminit里面是不是让kitl用的网卡。 如果你的网卡用来下载os image的时候都忽快忽慢的话,看看网卡的帮助,对mtu什么的有没有什么说明。还有看看getframe和sendframe函数的实现,有没有什么地方有点儿不妥。 |
|
上一页
下一页