|
我在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的截图。
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620561TCW5BW.jpg)
(原文件名: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头文件的路径。
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620562G9B3WI.jpg)
(原文件名: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。
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620563X40UW7.jpg)
(原文件名:putty的.jpg)
下图是Putty的运行截图,程序上电运行后输出了logo和版本等信息,还有finsh>>命令行.
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620564Q8SXPO.jpg)
(原文件名:运行1.jpg)
五、添加netio.c
netio.c是要编译运到工程里面名运行的。它的路径在:RT-Thread-0.3.1\net\apps下,把这个源文件添加到工程里面然后编译下载。
通过运行finsh>>list(),看到并没有可以调用的netio_init()函数。原因是“这个函数在链接过程中链接器检查到这个函数从未被调用,于是自动不链接入目标了”,按照aozima的方法,在linker里面的添加--keep __fsym_* --keep __vsym_*即可,下面是截图:
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620565S4K43A.jpg)
(原文件名:linker.jpg)
然后重新编译并运行,这次可以看到有netio_init()这个函数了。
![](http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_620566V0EM6D.jpg)
(原文件名: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.
这个测试速度和坛里面大多数的测试速度是差不多的。![](http://./emotion/em001.gif)
到这里算是比较了解RTT的finsh组件和使用方法了。接下来就是代码级的学习。下面是最终测试的完整的工程。
点击此处下载 ourdev_620568RARJSX.rar(文件大小:23.80M) (原文件名:RT-Thread-0.3.1.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|