精华内容
下载资源
问答
  • lwip

    2020-07-18 16:05:38
    UCOSIII+LWIP建立多个连接无法通信
    展开全文
  • LWIP

    2019-03-22 11:38:00
    LWIP  今天要谈的不是LWIP协议栈的内容,只是简单谈谈关于STM32F407快速使用LWIP做网络通讯的一些经历。  我是一个网络小白,对网络知识一窍不通,仅仅是知道有IP地址、网关这玩意,也从来没有做过嵌入式网络...

                                          LWIP

      今天要谈的不是LWIP协议栈的内容,只是简单谈谈关于STM32F407快速使用LWIP做网络通讯的一些经历。

      我是一个网络小白,对网络知识一窍不通,仅仅是知道有IP地址、网关这玩意,也从来没有做过嵌入式网络这块内容,那么要如何在2周内实现网络通讯呢,我要实现的功能很简单,只有几十字节的数据量,而且发送不频繁,但是要做到随时拔插网线,随时连接网络,网络中断能尽快连接。

      首先,LWIP已经被广泛应用,在网上有很多教程,我个人偏爱上淘宝找,因为在淘宝找对应的开发板,可以快速地验证驱动程序是否能用。我使用的是原子哥的探索者开发板,正点原子的配套教程资料非常齐全,我学stm32也是一路跟着他们的教程走过来的,真心感谢正点原子对嵌入式教育的贡献。这次的实验是把开发板作为TCP的客户端,直接把例程烧到对应的开发板上,非常完美地与服务器通讯了,验证完毕,接下来不要急着去看程序,先去看人家录制的教学视频。第一次看视频的时候,不急于求成,快速浏览一边,知道个大致的框架,如果仔细的看每一个知识点,保证你中途就睡着了。看了第一遍视频后,了解了整个硬件流程,就是STM32F407自带了一个MAC介质层,具体是什么,我也不知道暂时也不用知道,只需要知道LWIP协议栈需要通过MAC层来读取数据,而MAC层的数据是通过几根线,用MII或者RMII协议来从PHY层读取数据,PHY又是什么?同样,不理会它,只要知道这次用的PHY芯片型号叫做LAN8720,听起来这么牛逼的芯片当然要配置一下,这个芯片是通过2根线叫SMI接口与STM32通讯。再然后这个PHY层的数据就是从水晶头(带变压器)那里得来的了。大致流程就是这样。

      整理了数据流向后,开始分模块去学习,最开始程序是通过LWIP协议栈读取,这个协议栈是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈,驱动呢就是去人家官网下。然后LWIP怎么操作MAC层,这个是STM32的东西,自然是去ST官网下载MAC的驱动,而操作PHY是通过SMI接口的,这个国际通用的接口ST给出来的驱动有了。到这里用到的文件大致就清楚了。

      接下来可以去看程序了,认真的再回去看视频,仔细分析怎么移植这两个驱动文件,不需要明白文件的内容,但必须得知道哪些文件是属于哪个驱动的,这个可以慢慢品味两三天了。了解驱动移植之后就从main函数开始跟踪,去查看怎么实现LWIP和各种硬件的初始化,还有怎么发数据接收数据。

      最后开始改造工程,原子哥的例程里,如果上电没有插网线,程序就会死掉,先解决这个最大的问题,如图1-1,这是源程序,初始化一直在死循环,所以把死循环去掉就好。

    图1-1

      程序是不死了,但是初始化的过程好久啊,那得改一下官方驱动了,如图1-2,把LAN8720初始化等待时间改小了,如图1-3,把LWIP的DHCP等待时间改小了。

    图1-2

    图1-3

      现在速度快了,但是还是不能上电后随时插网线随时上网,后来发现网上说的读取LAN8720的BSR寄存器中的bit2位或者bit4位可以检测网线,那都是鬼扯,我每个位都试过了,发现是bit1位叫jabber检测才有用。通过检测这个可以实现网线拔插的监控,如图1-4是jabber位读取函数。

    图1-4

      可以正常检测了,但发现连不上网,这个就一言难尽了,需要注意的是原子哥使用的是动态内存管理,有申请就要有释放,可以把动态内存换为静态的,但是要改的地方有点多,也就不想去搞它了,如图1-5,把一直需要用的两个内存申请放外面,不再释放和申请,LWIP内核就初始化一次,因为重复初始化鬼知道它会闹出什么事来,因为LWIP里面也有使用动态内存。

    图1-5

      最后,tcp_client_open函数就是初始化成功后进去申请一个PCB块的,断网就要释放PCB块太麻烦了,所以我这里把这部分改成了静态的。断网之后其实只要重新申请一个PCB块就能连接上,但是考虑到拔网线很长时间或者重置了路由器,PCB块可能连接不上,所以断网后直接退出tcp_client_open函数,重新进行初始化和DHCP获取。因为我不懂DHCP和LWIP内核,所以经常重连失败,最后瞎摸出几个函数,如图1-6。断网后要断开PCB块的连接,停止DHCP,移除lwip_netif网卡。我也不知道是否正确,这是试出来没有问题的,缺乏理论依据,治标不治本,到最后的最后要去学习一下网络知识,深入学习LWIP内核才能把网络通讯这块灵活运用。

    图1-6

      以上就是快速上手STM32F407的LWIP网络通讯,首先能粗糙地运用,后面才会有信心去优化,去做得更好,不要一次就最求完美。有空的话就去图书馆看看原子哥推荐的那本书《嵌入式网络那些事:LWIP协议深度剖析与实战演练》作者朱升林。

    转载于:https://www.cnblogs.com/wcw12580/p/10573821.html

    展开全文
  • lwIP.lwIP.2.1.1.pack

    2020-05-15 17:31:36
    keil的lwIP.lwIP.2.1.1.pack包,由于网络的原因,官网可能下不了,我这里有,哈哈哈,大家可以直接下载了
  • Lwip update

    2020-12-02 13:42:22
    Old src/lwip is reworked and moved to src/lwip-esp/, new one is in src/lwip-git/. Both are working and improved, lwip-git version is bigger in rom. make menuconfig selects the version you wish. For ...
  • LWIP MQTT

    2021-01-09 12:18:43
    mbed-os\features\FEATURE_LWIP\lwip-interface\lwip\src\apps\mqtt\lwip_mqtt.c</code> doesn't get included. <pre><code>cpp #include "mbed.h" #include "lwip/apps/mqtt.h" mqtt_client_t...
  • lwIP gets stuck

    2020-12-01 19:20:55
    <p>Running lwip examples on two PandaBoards (client-server) i've got a high-probability deadlock in receiver side (if we transmit over several MB data) with this commit. Two boards are connected ...
  • lwip update

    2020-11-27 16:50:03
    ed memory and the upstream lwip wishes to work with pools and without using malloc. The high stack usage was a big problem for esp-open-rtos, so we might have to maintain the differences for now. ...
  • lwIP.lwIP.1.4.1.pack

    2019-06-16 16:58:49
    这个是MDK的LWIP支持包,为方便大家在国内使用下载,现上传上来给大家共享,keil uv5上使用,下载后打开mdk - project - manage - pack installer,然后 file - import即可导入mdk。
  • 这里作为一个汇总帖把,把以前写过的LWIP相关的博客文章汇总到一起,方便自己这边查找一些资料。 LWIP协议 【LWIPLWIP网络通信流程 【LWIPLWIP动态内存管理 【LWIP】原始套接字(SOCK_RAW) 【LWIP】AF_PACKET...
    展开全文
  • <div><p>LWIP_SOCKET_OFFSET is set as CONFIG_NFILE_DESCRIPTORS + CONFIG_NSOCKET_DESCRIPTORS for UDS</p><p>该提问来源于开源项目:Samsung/TizenRT</p></div>
  • Lwip 2.0

    2021-01-09 12:51:42
    <p>LWIP stack 2.0, LWIP stack adaptation code and mac driver updates. <h2>Status <p>READY <h2>Migrations <p>Updated freescale drivers to do or operation for multicast group filters: hal/targets/hal/...
  • LWIP中文手册

    2019-03-20 10:08:24
    本文结构如下编排:第2,3和4部分对lwIP栈作一个概述,第5部分叙述操作系统模拟层, 第6部分叙述缓存和存储管理。第7部分介绍lwIP抽象的网络接口,第8,9,和10部分叙述IP, UDP,和TCP协议的实现。第11和12部分叙述...
  • lwip1.4.1 升级到 lwip2.1.2

    千次阅读 2019-10-14 11:13:45
    STM32F407、lwip1.4.1、 1 lwip 移植 升级前肯定要知道一点 lwip 是怎么移植的,网上有挺多博客写移植教程,在此就不做介绍了。主要就是将 ethernetif.c 文件里的几个函数给实现下就可以了。 2 lwip1.4.1 ...

    平台

    STM32F407、lwip1.4.1、

     

    1 lwip 移植

    升级前肯定要知道一点 lwip 是怎么移植的,网上有挺多博客写移植教程,在此就不做介绍了。主要就是将 ethernetif.c 文件里的几个函数给实现下就可以了。

     

    2 lwip1.4.1 升级到 lwip2.1.2

    升级前要先了解下 1.4.1 和 2.1.2 版本差异,可以直接用比较工具大概的看下。

    https://www.jianshu.com/p/7c8b4ecfebc7 lwip 1.4.1到lwip2.1.2升级之路》这个文档也有简单说了下这两个版本间的一些差异。

    我这边已经移植好的 lwip1.4.1 文件和官网一样的,没有做改动,只是另添加了 ethernetif.c 文件做移植的。

    那么这里我将 keil 工程的 lwip1.4.1 引用的文件替换成 lwip2.1.2(补充:这里可以直接这样做主要原因还是:一、lwip 移植只需实现提供的几个函数,若是不做优化的话,其他代码都是不用动的。二、目前我的lwip1.4.1文件和官网一样,未做改动,仅实现了移植的几个函数),当然这两个版本有些文件是不一样的,不能直接替换,上面的参考链接也有提到,那么有些没有同名文件时,查看下该文件其主要实现些什么,在lwip2.1.2 中搜索下,用同样实现的文件替换下即可。

    文件替换完后,就是编译了,会报不少的错误,看code,逐个解决下即可

    我这边将编译出错都改完后,测试了下,之前通过网络交互的业务都能正常工作,升级OK

    展开全文
  • update lwIP

    2020-12-02 15:06:28
    ve updated lwIP to version 2.0.0 which includes the TCP window scaling patch and other improvements. I've also enabled IPv6, but I have not added support for static IPv6 addressing in the libc ...
  • LWIP removal

    2020-12-09 09:58:46
    the LWIP git submodules and related SCION code. <p>This change is <a href="https://reviewable.io/reviews/scionproto/scion/1629"><img src=...
  • LWIP学习资料

    2018-08-30 17:03:33
    有关LWIP移植的参考资料,包括源码,对LWIP一直有很大的帮助
  • lwip学习教程

    2019-01-14 16:15:20
    lwip 1.4协议栈源码code,包含李林老师的一本《嵌入式网络那些事LwIP协议深度剖析与实战演练》
  • lwIP is a small independent implementation of the TCP/IP protocol suite. The focus of the lwIP TCP/IP implementation is to reduce the RAM usage while still having a full scale TCP. This making lwIP ...
  • LWIP协议栈 1. LWIP协议介绍 LWIP 是瑞典计算机科学院(SICS)的Adam Dunkels 等开发的一个小型开源的TCP/IP 协议栈。LWIP 是轻量级 IP 协议,有无操作系统的支持都可以运行, LWIP 实现的重点是在保持 TCP 协议主要...
  • lwip 学习资料

    2018-03-08 09:36:51
    lwip学习含金量比较高的文档,想学好lwip这些足够了。
  • lwip【6】LWIP使用经验

    2016-09-13 21:00:36
    LWIP启动时序三 LWIP运行逻辑 接收数据包SequentialAPI函数调用 四 TCPIP核心知识点 滑动窗口三次握手断开连接TCP状态转换同时打开同时关闭 五正确使用LWIPLWIP常见问题 网卡驱动程序内存泄露PC机无法与...
  • LwIP协议栈的学习与应用

    万次阅读 多人点赞 2018-01-29 17:20:55
    LWIP
  • 网络LWIP例程

    2016-09-27 09:36:04
    STM32网络LWIP例程(【1】金龙107_ LWIP_hello world,【2】金龙107_ LWIP_http,【3】金龙107_ LWIP_TCP client,【4】金龙107_ LWIP_TCP server,【5】金龙107_ LWIP_UDP client,【6】金龙107_ LWIP_UDP server)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,079
精华内容 2,431
关键字:

lwIP