【LwIP学习营】【第一周】仅零散记录,无主题

发布于 2018-05-15 21:14:17
    本帖最后由 sengsong 于 2018-5-15 21:16 编辑


有幸加入RT-thread的LwIP学习营,粗糙地学习了一周,现记录如下。

硬件平台:
安富莱V6开发板,STM32F429BIT6。
开发环境:
MDK5.25.2.0,evn0.7.0,rtt3.0.4

一、关于stm32f429-armfly的bsp
1、源代码
从github上下载的3.0.3release版本的stm32f429-armfly bsp中并没有Kconfig。但这里有Kconfig,可以用git clone下来使用。
2、修改MDK模板工程template.uvprojx
因为scons是根据bsp目录下的template.uvprojx文件来生成keil工程的,这里在Keil的"Opetion for Target..."中修改一些配置以保留个性化设置。
1)修改单片机为STM32F426BITx。(原来是F429ZGTx)
2)在Output标签中取消勾选“Browse Information”。(因为每次用scons后生成新的工程,打开后总是要重新完整编译。勾选该项后,我的老古董电脑要跑20分钟才能全部编译完。电脑性能还可以请忽略这一项。)
3)选择仿真器并配置好参数。
4)保存模板工程。
3、使用scons
1)配置scons。个人觉得新增的 auto update pkgs config和auto create a mdk/iar project功能特别有用,省去了敲命令的时间。
2)启动menuconfig,先不改任何配置,退出,自动生成MDK工程。编译下载运行结果如下图:
微信截图_20180515203502.png
正常启动,但是spi flash和sd卡挂载失败。因为我想快速评估LwIP在rtt里的运行情况,后面有时间再搞。
二、ping通开发板
1、驱动的问题
在msh下输入ifconfig发现linkdown,拔插网线后erx栈溢出。这里有两点需要修改:一是网口初始化时并没有将网线的link状态及时更新,导致明明插着网线却认为检测不到。二是erx任务栈太小,只有512字节,改大一些,这里改成了2048,etx的任务栈也改成了2048。
2、使用LwIP2.0.2时出现的问题
改好上述两个问题后使用DHCP获取不到IP地址,如果使用静态IP,也是ping不通。
1)在ST的例程的某os的基础上使用LwIP2.0.2和2.0.3都是可以ping通的,其他协议也运行正常。
2)在drv_eth.c中开启DEBUG、ETH_RX_DUMP、ETH_TX_DUMP和发现接收发送正常。
3)在packages文件夹下手动添加lwip2.0.3版本,运行结果跟2.0.2版本一样。
4)把lwip改成1.4.1版本后运行正常。
周末找了半天没找到原因。。。:'( :'( :'( 哪位大神知道原因,请回帖指点哈:handshake :handshake
下面都是用1.4.1版本的跑的。
三、跑跑TCP、UDP例程
这个没什么好说的,rtt提供了例程,看这里:https://github.com/RT-Thread-packages/samples/tree/master/network
学习学习这几个例程,在rtt下socket的用法,跑了跑。
后面写聊天客户端的时候可以参考tcpclient例程。
四、挑战简易聊天客户端
在服务器 112.124.34.90 的 5005 端口 上运行了一个基于 TCP 的简单的聊天服务器。自己设计一个客户端,用约定的命令去登录、发消息、收消息。
微信截图_20180515210832.png
五、总结
还有几个问题需要解决。
RT-thread的确不同于其他RTOS,相信生态以后会越来越丰富,用户越来越多。

查看更多

关注者
0
被浏览
870
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友