搜索
bottom↓
回复: 52

请问RTT_031下的lwip的例子怎样使用netio来测试速度啊?(已解决,包括finsh的使用,附完整

[复制链接]

出0入0汤圆

发表于 2011-3-6 10:33:39 | 显示全部楼层 |阅读模式
我在STM32上运行的RTT_031的LWIP的列子,工程名叫project_lwip,能ping通,我看到论坛里有用netio 1.26的那个程序来测试网速,自己也想试一下,但是弄了半天,也下载了netio,但是就是运行不了,不知道怎么搞。ffxz有说过可以直接用finsh就能测试,请问具体是怎么做的?我是新手,请多指教。
---------------------------------------------------------------------------------
下面是完整的资料,经过ffxz和aozima耐心解答,我把这个详细过程贴在这里,希望对大家有用。
---------------------------------------------------------------------------------
一、代码资源和硬件链接
    我使用的是RTT-031压缩包解压出来的project_lwip演示工程,这个工程使用的是ENC28J60,我手上正好有个ENC28J60,硬件上使用的是SPI2,片选为PB12,中断为PB0,ENC28J60的复位没有连接。
    如果按照正确链接后就可以编译并下载程序了(工程默认为E系列,512K flash,目标芯片不一样的话配置为一样即可,另外在bord.h里面要配置对应的RAM大小,其实这些都不改对目前这个工程演示也没有影响)。程序下载并后通过ping 192.168.1.30(在rtcofig.h里面有IP网关等宏定义设置),如果网线链接(若是电脑与ENC28J60直接链接要使用交叉线)正常的话就能ping通,如果ping不通,要看对应的INT0中断是否能进入,我遇到过这种情况,原因是目标板使用的JLink直接供电,而导致目标板电压只有2.79V,这样ENC28J60就不能正常工作,换成USB直接供电达到3.3V后可以了(ENC28J60还真有点功耗,芯片稍微有些温热)。
    以下是RTT-031的压缩包,我再贴一下,解压后:找到RT-Thread-0.3.1\bsp\stm3210\project_lwip里面的工程打开即可编译。
点击此处下载 ourdev_620556O4948C.zip(文件大小:4.87M) (原文件名:ourdev_586559FBJDZU.zip)

二、下载netio126
    这个软件在网上一搜就能找到,我也贴出来。
点击此处下载 ourdev_620560PD7DEU.zip(文件大小:140K) (原文件名:netio126.zip)

    解压后拷贝bin文件夹里面的win32-i386到C盘根目录,这样就可以通过DOS命令运行这个exe文件(双击运行这个exe只是很快的闪一下,然后就消失了,对于DOS我不了解,就不去深究原因了)。之前对DOS的命令仅限于ping和路由表添加查看的水平,要运行C盘下的win32-i386还需要切换路径,具体使用的是CD\,下面的贴图有显示从administrator下运行ping后转到C盘根目录运行win32-i386的截图。

(原文件名:ping.jpg)
    上面的截图第一部分是ping192.168.1.30,然后运行CD\,接着转到C盘根目录运行win32-i386,网上有直接将bin文件夹一起放C盘然后运行bin里面的exe的列子,我没有找到是哪个命令,所以就直接把这个exe从bin里面拿出来了。
三、给project_lwip工程添加finsh
    刚解压出来的工程是没有finsh组件的,所以为了能达到调用netio相关测试函数的目的,要添加这个组件(还有另一种方法就是直接在lwip初始完以后调用相关的函数,我暂时对RTT不太了解,就使用finsh来调用吧)。再坛里面看到finsh的频率很高,之前一直没有使用过,没有直观的了解。现在才发现这确实是一个很强大的组建,竟然能通过上位机来调用编译到目标板里面的函数然后执行这个函数,这里我们就需要通过它来调用函数netio_init(),以初始化netio的测试,有时间要研究下它的源代码。
    添加finsh的步骤是:
    3.1 在工程里面添加组(Group),就取名叫finsh吧,然后往这个组里面添加实际文件夹下的C源代码,具体的存放的路径为:RT-Thread-0.3.1\finsh里面,全部添加。添加完以后还要告诉工程再包含finsh使用的头文件的路径。
    3.2 打开工程配置,按下图添加finsh头文件的路径。
   
(原文件名:finsh.jpg)
    3.3 最后一步在rtconfig.h里面定义使用finsh具体为添加如下宏定义:
/* SECTION: finsh, a C-Express shell */
#define RT_USING_FINSH
/* Using symbol table */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
    到这里就能使用finsh了。重新编译并下载程序,能看到比之前的串口打印的信息多了一行finsh>>。
四、Putty的使用
为了能使用finsh,普通的串口大师是不行了,因为回车键的问题。ffxz建议大家使用的是Putty,我这里贴出来。
   点击此处下载 ourdev_620559JMUTRL.rar(文件大小:212K) (原文件名:putty.rar)

   下图是直接运行的界面,注意波特率设置为115200。
  
(原文件名:putty的.jpg)
   下图是Putty的运行截图,程序上电运行后输出了logo和版本等信息,还有finsh>>命令行.

(原文件名:运行1.jpg)
五、添加netio.c
    netio.c是要编译运到工程里面名运行的。它的路径在:RT-Thread-0.3.1\net\apps下,把这个源文件添加到工程里面然后编译下载。
    通过运行finsh>>list(),看到并没有可以调用的netio_init()函数。原因是“这个函数在链接过程中链接器检查到这个函数从未被调用,于是自动不链接入目标了”,按照aozima的方法,在linker里面的添加--keep __fsym_* --keep __vsym_*即可,下面是截图:
   
(原文件名:linker.jpg)
    然后重新编译并运行,这次可以看到有netio_init()这个函数了。

(原文件名:netio.jpg)

    然后运行这个函数,有如下信息输出。
finsh>>netio_init()
        536879312, 0x200020d0
finsh>>|
    到这里就可以打开运行PC端的netio程序了:
C:\Documents and Settings\Administrator>cd\

C:\>win32-i386 -t 192.168.1.30

NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel

TCP connection established.
Packet size  1k bytes:  218 KByte/s Tx,  4819 Byte/s Rx.
Packet size  2k bytes:  217 KByte/s Tx,  287 KByte/s Rx.
Packet size  4k bytes:  218 KByte/s Tx,  287 KByte/s Rx.
Packet size  8k bytes:  219 KByte/s Tx,  286 KByte/s Rx.
Packet size 16k bytes:  219 KByte/s Tx,  286 KByte/s Rx.
Packet size 32k bytes:  223 KByte/s Tx,  97 KByte/s Rx.
Done.
    这个测试速度和坛里面大多数的测试速度是差不多的。
    到这里算是比较了解RTT的finsh组件和使用方法了。接下来就是代码级的学习。下面是最终测试的完整的工程。
点击此处下载 ourdev_620568RARJSX.rar(文件大小:23.80M) (原文件名:RT-Thread-0.3.1.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-3-6 13:31:33 | 显示全部楼层
自己顶一下,project_lwip这个例子串口打印的信息没有finsh。
\ | /
- RT -     Thread Operating System
/ | \ 0.3.1 build Mar  6 2011
2006 - 2010 Copyright by rt-thread team
TCP/IP initialized!

出0入0汤圆

发表于 2011-3-6 14:54:21 | 显示全部楼层
回复【楼主位】zidong404  
-----------------------------------------------------------------------

工程加进RTT net文件夹下的netio.c文件,烧写后启动RTT,netio_init()函数已经加进finsh了,finsh上运行,连好网络,pc上使用netio即可

出0入0汤圆

发表于 2011-3-6 14:55:18 | 显示全部楼层
回复【2楼】zxztianying  
-----------------------------------------------------------------------

pc上netio的使用方法,netio本身有介绍,百度也可

出0入0汤圆

发表于 2011-3-6 14:56:11 | 显示全部楼层
回复【1楼】zidong404  
-----------------------------------------------------------------------

打开时能finsh的宏...

出0入0汤圆

发表于 2011-3-6 18:52:50 | 显示全部楼层
编译时加入netio.c,如果没有finsh shell,那么就在lwip初始化完成后,执行netio.c中export到finsh shell的函数。(netio.c在svn上有)

当系统启动后,在PC端执行netio的程序。(netio的程序在网上可以google到)

出0入0汤圆

 楼主| 发表于 2011-3-6 19:31:20 | 显示全部楼层
谢谢ffxz,我试下。

出0入0汤圆

 楼主| 发表于 2011-3-6 19:35:49 | 显示全部楼层
我使用的是netio126里面附带的那个netio.c文件,编译的时候出现了下面的错误:
netio.c(123): error:  #5: cannot open source input file "process.h": No such file or directory
请问是不是要进行修改?ffxz能提供一个工程么?

出0入0汤圆

 楼主| 发表于 2011-3-6 20:05:21 | 显示全部楼层
找到netio.c了,net\apps下,我添加到了工程,并可以编译了,但是你说的“执行netio.c中export到finsh shell的函数”是什么意思啊?

(原文件名:1111.jpg)

这是主机端运行netio126的情况。

出0入0汤圆

发表于 2011-3-6 20:15:37 | 显示全部楼层
打开那个netio.c看看就知道了。关于netio126的用法,应该一些测试贴里有吧,很多截图都是把命令行一起截图的

出0入0汤圆

 楼主| 发表于 2011-3-6 20:21:40 | 显示全部楼层
嗯,我把finsh加到project_lwip工程中了,这是系统启动后的串口输出,用的是Putty。

\ | /
- RT -     Thread Operating System
/ | \ 0.3.1 build Mar  6 2011
2006 - 2010 Copyright by rt-thread team
TCP/IP initialized!
finsh>>
请问我接下来在finsh里面输入什么以后就能测试了啊?

出0入0汤圆

 楼主| 发表于 2011-3-6 20:28:13 | 显示全部楼层
ffxz还在么?在线等待中。

出0入0汤圆

发表于 2011-3-6 20:35:43 | 显示全部楼层
不知道楼主是否有以 netio 在本坛中搜索过?

出0入0汤圆

 楼主| 发表于 2011-3-6 20:36:44 | 显示全部楼层
搜过啊,有三个帖子,但得到信息都不全

出0入0汤圆

 楼主| 发表于 2011-3-6 20:39:11 | 显示全部楼层
我在工程里面加了finsh了,并且netio126也能在PC端打开,但是刚接触finsh,所以不知道该在finsh》下输入什么命令后就能进行测试了,希望能再指点一下,谢谢。

出0入0汤圆

发表于 2011-3-6 20:57:37 | 显示全部楼层
很简单的一个东西呀

执行
netio_init()

启动netio的TCP Server。

关于export到finsh shell,代码里就有:
void netio_init(void)
{
  struct tcp_pcb *pcb;

  pcb = tcp_new();
  tcp_bind(pcb, IP_ADDR_ANY, 18767);
  pcb = tcp_listen(pcb);
  tcp_accept(pcb, netio_accept);
}

#endif /* LWIP_TCP */

#ifdef RT_USING_FINSH
#include <finsh.h>
FINSH_FUNCTION_EXPORT(netio_init, netio server);
^^^^^^^^^^^^^^^^^
#endif

然后在PC上执行
win32-i386.exe -t 192.168.0.30

后面的ip地址就是你的板子地址

出0入0汤圆

 楼主| 发表于 2011-3-6 21:01:17 | 显示全部楼层
我用list()看到有如下的函数:

finsh>>list()
--Function List:
enc28j60         -- dump enc28j60 registers
list_mem         -- list memory usage information
set_if           -- set network interface address
set_dns          -- set DNS server address
list_if          -- list network interface information
hello            -- say hello world
version          -- show RT-Thread version information
list_thread      -- list thread
list_sem         -- list semaphone in system
list_event       -- list event in system
list_mutex       -- list mutex in system
list_mailbox     -- list mail box in system
list_msgqueue    -- list message queue in system
list_mempool     -- list memory pool in system
list_timer       -- list timer in system
list_device      -- list device in system
list             -- list all symbol in system
--Variable List:
dummy            -- dummy variable for finsh
        0, 0x00000000
finsh>>
好像没有看到有netio_init这个函数呀。

出0入0汤圆

发表于 2011-3-6 21:02:37 | 显示全部楼层
你的链接参数不对

你直接在lwip初始化完毕后调用netio_init()函数吧。

出0入0汤圆

发表于 2011-3-6 21:05:10 | 显示全部楼层
rt-thread板块中,目前为卡标题有 netio的只有3个贴子,除去楼主这个就只有3个了.
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3914830
这个贴子连回复共4条.里面有讲了应该输入什么命令(确切地讲是执行哪个函数)初始化netio.

然后另外一个贴子:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4428269
楼主位还贴了图讲了PC端如何使用.同时贴出的程序里也有写执行哪个函数来初始化netio,而且是没有finsh的项目.

回复【17楼】zidong404  
----------------------
没有netio_init是因为这个函数在链接过程中链接器检查到这个函数从未被调用,于是自动不链接入目标了.
你用的MDK可以在Linker参数中加入 --keep __fsym_* --keep __vsym_* 来保证finsh用到的符号都不自动删除.

出0入0汤圆

 楼主| 发表于 2011-3-6 21:14:57 | 显示全部楼层
非常感谢ffxz和aozima,是我愚笨啊,我再仔细学习下。

出0入0汤圆

发表于 2011-3-6 21:24:18 | 显示全部楼层
回复【14楼】zidong404  
搜过啊,有三个帖子,但得到信息都不全
-----------------------------------------------------------------------
在浩瀚的网络资源里面快速找到有用的是一门技巧.
既然不全,楼主实验做完可以再新趁楼主位还在编辑期内,在这个贴子内,
把所有细节都整理到楼主位并附上图吧.这样这算是为后来者做了个教程.
:-)

出0入0汤圆

 楼主| 发表于 2011-3-6 23:03:53 | 显示全部楼层
终于可以了使用NetIO了,确实准备在这个帖子里把遇到的问题和解决方法都陈列出来。
---------------------------------------------------------------------------------
已经更新到楼主位。

出0入0汤圆

发表于 2011-3-6 23:14:59 | 显示全部楼层
1.建议复制一份贴子内容到楼主位.并修改标题.问题贴转为资料贴
2.不要老是再 cd 了. 送神奇道具一件:点击此处下载 ourdev_620569BDTCNT.rar(文件大小:282字节) (原文件名:win_Command.rar)

出0入0汤圆

 楼主| 发表于 2011-3-6 23:22:17 | 显示全部楼层
回复【23楼】aozima
1.建议复制一份贴子内容到楼主位.并修改标题.问题贴转为资料贴
2.不要老是再 cd 了. 送神奇道具一件:点击此处下载  (原文件名:win_command.rar)
-----------------------------------------------------------------------

呵呵,谢谢aozima。

出0入0汤圆

发表于 2011-3-7 14:22:42 | 显示全部楼层
回复【24楼】zidong404  
-----------------------------------------------------------------------

5555,其实我第一个回答的,也不谢我

出0入0汤圆

 楼主| 发表于 2011-3-7 16:26:06 | 显示全部楼层
回复【25楼】zxztianying
回复【24楼】zidong404   
-----------------------------------------------------------------------
5555,其实我第一个回答的,也不谢我
-----------------------------------------------------------------------

呵呵,就是哈,我也是后来才看到的,发帖的时间重了。谢谢帮助了。

出0入0汤圆

发表于 2011-3-24 15:01:47 | 显示全部楼层
多谢了,我正想用RT_Thread,可是不知从何下手,楼主的介绍太及时了。

出0入0汤圆

发表于 2011-6-26 22:46:20 | 显示全部楼层
好贴,学习!

出0入0汤圆

发表于 2011-7-24 21:14:57 | 显示全部楼层
我用netio测试到一半网络挂了
\ | /
- RT -     Thread Operating System
/ | \ 0.3.2 build Jul 24 2011
2006 - 2011 Copyright by rt-thread team
finsh>>TCP/IP initialized!
list_mem()
total memory: 24888
used memory : 4532
maximum allocated memory: 5704
        0, 0x00000000
finsh>>netio_init()
        'D', 536879172, 0x20002044
finsh>>pbuf_free: sane type
Assertion: 548 in ..\..\net\lwip\src\core\pbuf.c, thread tcpip
(0) assert failed at sys_arch_assert:319
list_thread()
thread  pri  status      sp     stack size max used   left tick  error
-------- ---- ------- ---------- ---------- ---------- ---------- ---
tcpip    0x16 ready   0x00000090 0x00000400 0x00000260 0x0000000d -03
tidle    0x1f ready   0x00000050 0x00000100 0x00000050 0x0000001e 000
tshell   0x14 ready   0x00000088 0x00000800 0x000001b0 0x00000006 000
etx      0x17 suspend 0x00000090 0x00000200 0x00000090 0x00000008 000
erx      0x17 ready   0x000000d0 0x00000200 0x000000e0 0x00000010 -03
        0, 0x00000000
finsh>>


netio测试图 (原文件名:未命名.JPG)

板子是利尔达研讨会送的串口转以太网模块,跑的RTT0.3.2,测试netio到一半就挂了,lm3s的bsp,是哪边要特别配置下吗,还是程序bug?

出0入0汤圆

发表于 2011-7-25 14:01:01 | 显示全部楼层
利尔达的模块具体是什么芯片?是否更改为相应的配置了?

出0入0汤圆

发表于 2011-7-25 15:06:11 | 显示全部楼层
回复【31楼】ffxz  
利尔达的模块具体是什么芯片?是否更改为相应的配置了?
-----------------------------------------------------------------------

片子是LM3S6432,我把RAM改成了32K,删掉了文件系统支持,其他好像没要改的。
系统能起来,跑了下tcpclient是可以的。

出0入0汤圆

发表于 2011-7-25 18:35:10 | 显示全部楼层
netio跑到16K包测试时候需要分配相应大小的RAM空间,而片上一共只有32K,肯定就不够了。

出0入0汤圆

发表于 2011-7-25 18:44:36 | 显示全部楼层
回复【33楼】shaolin  
-----------------------------------------------------------------------

原来是这样,多谢大虾指点。

出0入0汤圆

发表于 2011-7-25 19:42:28 | 显示全部楼层
另外,这个速度也太慢了点

出0入0汤圆

发表于 2011-7-26 12:14:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-6 22:09:40 | 显示全部楼层
看了楼主的帖子,我的问题也解决了

出0入0汤圆

发表于 2011-9-3 17:00:10 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2011-9-25 13:11:44 | 显示全部楼层
感谢楼主的无私奉献,哈哈

我在火牛开发板平台上也测试出来了

(原文件名:未命名.jpg)

出0入0汤圆

发表于 2011-11-8 22:35:30 | 显示全部楼层
mark .

出0入0汤圆

发表于 2011-11-9 16:09:00 | 显示全部楼层
不用上位机  只用STM32可以知道网速吗

出0入0汤圆

发表于 2011-12-15 12:49:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-15 21:06:36 | 显示全部楼层
收藏先

出0入12汤圆

发表于 2012-1-12 10:19:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-31 14:36:02 | 显示全部楼层
先mark了

出0入0汤圆

发表于 2012-2-7 17:01:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-12 21:00:58 | 显示全部楼层
虽然会,但是还是mark下。

出0入0汤圆

发表于 2012-3-27 12:58:36 | 显示全部楼层
一步步跟着楼主做,真的从楼主这边学习到了很多!在此,特地感谢楼主!

出0入0汤圆

发表于 2014-3-12 23:22:55 | 显示全部楼层
很有用,感谢楼主!

出0入0汤圆

发表于 2014-11-4 20:30:44 | 显示全部楼层
学习了~

出0入0汤圆

发表于 2014-11-10 12:14:17 | 显示全部楼层
悲剧了,为何我的速度这么慢,我用的是stm32f107

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-5-30 18:05:19 | 显示全部楼层
netio 测速 mark! 感谢楼主!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 09:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表