一个freeRTOS+LWIP在STM32F407上的移植例子
大家好,都知道相对ucos,freeRTOS是个免费软件,也是目前同类产品市场占有率最高的,可以光明正大的不花钱使用,因此花点心思研究一下使用是值得的。可惜这里目前还没有提供freeRTOS与LWIP结合的学习资料,那我们只好自己摸索尝试了。
本帖子是一个在MDK环境下移植后的freeRTOS和LWIP的工程压缩包(在帖子最后),用于和大家共同探讨移植问题,压缩包解压后,在路径STemWin5.22+FreeRTOS+Fatfs-LWIP\Project\MDK-ARM(uV4)下点击Template.uvproj打开(不要打开IAR那个文件夹)。文件文件夹中有1.4.1和1.3.2两个版本的LWIP,工程中使用的是后者。
工程中用到的开发板上资源为:MCU是STM32F407ZET6,PHY芯片DP83848VV,以及连接在PE4引脚上的闪烁LED代表操作系统没挂掉。在安福莱板子上运行时请根据实际情况改改PHY驱动、LED驱动引脚、MCU型号等。
好了,下面附几张运行的截图附带引出问题供大家研究探讨:
1ping 192.168.1.30成功了
2开发板作为TCP客户端,运行基于socket的TCPecho例程,电脑作为服务器,连接成功,串口助手显示socket connect result (连接失败时显示socket connect result [-1])
3服务器短以较短的时间间隔向开发板发内容,就是网络调试助手的默认字符“http://www.cmsoft.cn QQ:10865600”,这时很快,开发板就不行了,协议栈不再有反应,ping不通了,不过操作系统似乎还健在,因为由一个任务控制的LED还在顽强闪烁!网络调试助手中的发送间隔越小,问题出现速度越快。
4接上条,协议栈有时不行了的现象表现为TCPecho例程失效,同时ping的延时大大增加,会超时。此时如果在下图中网络助手的界面下连续点击“连接”按钮,ping也能ping通,只是延时很大。
5附带一个问题:我在程序中将串口波特率初始化为115200,怎么最后在串口助手上非要设定在38400这个波特率上才能正常收到文字?
好了,这些问题摆在这里,帖子最后附上工程代码压缩包,供感兴趣的朋友们下载修改研究。帖子篇幅不多,但也是我花了近一小时编写的,如果问题排除了,大家不要忘了在这里回帖说说方法和总结,共同学习。源码中东拼西凑比较乱,见笑了。
对了,工程中的STemwin和FATFS部分暂时没有试过,在main函数中初始化的相关函数注释掉了,不参与例程运行。感兴趣要自己调试哦。 补充一下,朱升林(LWIP那些事的作者老衲五木)曾说ping延时逐渐加大似乎是因为网卡缓冲区内的数据包没有及时都取走(http://blog.sina.com.cn/s/blog_62a85b950102vsdt.html),还有帖子说是因为ethernetif.c里面的ethernetif_input没有处理好,到底怎么回事,就等高人出研究成果了。 打开工程时会弹出好几个提示框提示文件中包含有错误路径,这个可先不管,一直点击确定即可。打开后自己重新编译一下。没有错误提示,不过有好多个警告,请海涵! 哈,感谢分享。 没人给出实验后的分析结论么?鼓励大家下载后反复调试研究,这么好的帖子居然人气也不行,今天自己顶一下。 几天没来,我的帖子沉到湖底了 。串口问题今天抽空看了一下,是因为时钟配置不对,请大家根据自己的板子晶振正确配置一下。 不错不错啊,学习中 问题解决了吗 好贴啊,问题解决了没? 谢谢楼主提供的资源!! 谢谢楼主分享 我碰到了一样的问题,还没解决 谢谢楼主分享
页:
[1]