stm32f107:
从链接脚本(bsp/stm32f107/stm32_rom.ld)中可以看到,程序的入口在Reset_Handler(),该函数位于
bsp/stm32f107/Libraries/CMSIS/DeviceSupport/ST/STM32F10x/start_up/gcc-ride7/startup_stm32f10x_cl.s中,Reset_Handler()最后调用SystemInit()和C库中的main,C库中的main最终会调用main()函数。
SystemInit()函数位于
bsp/stm32f107/Libraries/CMSIS/DeviceSupport/ST/STM32F10x/system_stm32f10x.c。
main()函数位于bsp/stm32f107/startup.c。
main()函数调用同文件中的rtthread_startup()。
rtthread_startup()进行一些初始化后调用rt_system_scheduler_start()(位于src/sheduler.c)启动调度器。
RT-Thread/LwIP在STM32上TCP速度测试结果(ENC28J60 vs DM9000A vs STM32F107)因为挺多人诟病RT-Thread/LwIP的速度问题,而且默认的LwIP配置中确实存在问题(所以才有,使用LwIP容易,但要想使用LwIP获得好的的速度,难!),不同
的参数对应LwIP不同的体积、功能。
RT-Thread/LwIP做一个如下修改,会让TCP网络速度好一些(特别是发送速度,否则大概只有5KB/s)
在rtconfig.h中添加宏定义
/* TCP sender buffer space */
#define RT_LWIP_TCP_SND_BUF 2048
如果使用google svn版本,目前已经在lwipopts.h中默认采用2048的参数。
这么修改以后,STM32上几种以太网接口速度分别如下:(netio的TCP测试,tx对应STM32的接收,rx对应STM32的发送)
STM32F103 + ENC28J60(这个使用ICDev的ENC28J60网络模块)
NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel
TCP connection established.
Packet size 1k bytes: 208 KByte/s Tx, 4784 Byte/s Rx.
Packet size 2k bytes: 207 KByte/s Tx, 254 KByte/s Rx.
Packet size 4k bytes: 208 KByte/s Tx, 255 KByte/s Rx.
Packet size 8k bytes: 207 KByte/s Tx, 256 KByte/s Rx.
Packet size 16k bytes: 210 KByte/s Tx, 255 KByte/s Rx.
Packet size 32k bytes: 212 KByte/s Tx, 97 KByte/s Rx.
Done.
STM32F103 + DM9000A(这个用的STM32 Radio开发板)
NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel
TCP connection established.
Packet size 1k bytes: 535 KByte/s Tx, 5078 Byte/s Rx.
Packet size 2k bytes: 535 KByte/s Tx, 878 KByte/s Rx.
Packet size 4k bytes: 535 KByte/s Tx, 878 KByte/s Rx.
Packet size 8k bytes: 510 KByte/s Tx, 879 KByte/s Rx.
Packet size 16k bytes: 537 KByte/s Tx, 876 KByte/s Rx.
Packet size 32k bytes: 540 KByte/s Tx, 152 KByte/s Rx.
Done.
STM32F107
TCP connection established.
Packet size 1k bytes: 607 KByte/s Tx, 5045 Byte/s Rx.
Packet size 2k bytes: 607 KByte/s Tx, 1086 KByte/s Rx.
Packet size 4k bytes: 607 KByte/s Tx, 1087 KByte/s Rx.
Packet size 8k bytes: 608 KByte/s Tx, 1086 KByte/s Rx.
Packet size 16k bytes: 610 KByte/s Tx, 1086 KByte/s Rx.
Packet size 32k bytes: 612 KByte/s Tx, 152 KByte/s Rx.
Done.
这么看起来,STM32F107的网络速度还是比另外两个要好。当然ENC28J60也不会存在只有几k的速度。
因篇幅问题不能全部显示,请点此查看更多更全内容