精华内容
下载资源
问答
  • <div><p>请问lwip在tun2socks的作用是什么?</p><p>该提问来源于开源项目:eycorsican/go-tun2socks</p></div>
  • Lwip 学习

    2019-09-18 17:30:00
    前面的话:自从接触网络模块,到现在有一阵子时间了,未来必定是网络的世界。...lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。 哪里可以下载源码? 在这里可以下载...

    前面的话:自从接触网络模块,到现在有一阵子时间了,未来必定是网络的世界。学一些网络方面的知识是有必要的。我们

    LWIP的应用

    1. 什么是LWIP? lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。

    2. 哪里可以下载源码? 在这里可以下载到最新的应用:http://savannah.nongnu.org/projects/lwip/

    3. 更多详细介绍? 在这里有详细的:http://lwip.wikia.com/wiki/LwIP_Wiki

    4. 如何移植? LWIP 有三种应用模式 RAW API,Netconn API,Socket API.这里我们主要简单讲解如何移植RAW API。移植LWIP的过程也是一个了解LWIP大概结构的过程。 当你把所有的错误,和警告干掉的后就差不多了,呵呵。

    转载于:https://my.oschina.net/u/1435660/blog/305466

    展开全文
  • LwIP协议

    2019-10-16 11:12:44
    LwIP是一款主要应用于嵌入式领域的开源TCP/IP协议栈,它的实现同BSD(LINUX)的实现有很大的相似性,可以作为TCP/IP协议的典型代表,它功能完备,除了实现TCP/IP基本通信外,其新版本还支持DNS\SNMP\DHCP\IGMP等高级...

    什么是LwIP?
    嵌入式设备要连入因特网,他就必须遵循网络通信协议,即TCP/IP协议。LwIP是一款主要应用于嵌入式领域的开源TCP/IP协议栈,它的实现同BSD(LINUX)的实现有很大的相似性,可以作为TCP/IP协议的典型代表,它功能完备,除了实现TCP/IP基本通信外,其新版本还支持DNS\SNMP\DHCP\IGMP等高级应用功能。除此之外,LwIP实现的重点是保证在嵌入式设备RAM,ROM资源有限的情况下实现TCP协议的主要功能,因此它具有自己督导的一套数据包和内存管理机制,使之更适合在低端的嵌入式系统中使用。LwIP协议栈甚至不需要操作系统的支持也可以运行,这样几十K的RAM和ROM就可以满足它的系统需求了。

    展开全文
  • 今天我正式学习STM32,我用的ALIENTE-MiniSTM32开发板(本着什么都不放过的原则,我上网查了查ALIENTE,原来正点原子的意思。。。),打开资料就来一堆英语,很自闭,后来就一个一个去百度,终于搞懂了UCGUI、...


           今天是我正式学习STM32,我用的是ALIENTE-MiniSTM32开发板(本着什么都不放过的原则,我上网查了查ALIENTE,原来是正点原子的意思。。。),打开资料就来一堆英语,很自闭,后来就一个一个去百度,终于搞懂了UCGUI、EMWIN、LWIP、UCOS的意思,下面我来一一介绍:

           UCGUI(读“油桂”,emmm在视频上听了好几遍应该是这么读吧)
           UCGUI是EMWIN的前身,现在已经不再更新和维护了,也就是UCGUI换了个名字变成以后的了EMWIN

           EMWIN(读“诶抹问”吧嘿嘿嘿)
           EMWIN是德国Segger公司(J-link也正是这个公司出的,很有名)推出的图形界面库(GUI),可为图形LCD设计提供高级支持,极大简化了LCD设计并缩短上市时间(感觉好高级。。。不过大体知道是个什么就行)


           LWIP(Light Weight IP,即轻型IP协议)
    LWIP协议主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让LWIP适用于资源有限的小型平台流入嵌入式系统(说实话这段真不懂,毕竟是第一天学,不着急)

    UCOS(读“由靠斯”)
    UCOS是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统,性能相当的实时操作系统(RTOS)

    展开全文
  • 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话...

    时常在cpp的代码之中看到这样的代码:

    #ifdef __cplusplus
    extern "C" {
    #endif

    //一段代码

    #ifdef __cplusplus
    }
    #endif
    这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。

    要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的.

    比如下面的一段简单的函数,我们看看加入和不加入extern "C"产生的汇编代码都有哪些变化:

    int f(void)
    {
    return 1;
    }
    在加入extern "C"的时候产生的汇编代码是:

    .file "test.cxx"
    .text
    .align 2
    .globl _f
    .def _f; .scl 2; .type 32; .endef
    _f:
    pushl %ebp
    movl %esp, %ebp
    movl $1, %eax
    popl %ebp
    ret
    但是不加入了extern "C"之后

    .file "test.cxx"
    .text
    .align 2
    .globl __Z1fv
    .def __Z1fv; .scl 2; .type 32; .endef
    __Z1fv:
    pushl %ebp
    movl %esp, %ebp
    movl $1, %eax
    popl %ebp
    ret
    两段汇编代码同样都是使用gcc -S命令产生的,所有的地方都是一样的,唯独是产生的函数名,一个是_f,一个是__Z1fv。

    明白了加入与不加入extern "C"之后对函数名称产生的影响,我们继续我们的讨论:为什么需要使用extern "C"呢?C++之父在设计C++之时,考虑到当时已经存在了大量的C代码,为了支持原来的C代码和已经写好C库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。

    试想这样的情况:一个库文件已经用C写好了而且运行得很良好,这个时候我们需要使用这个库文件,但是我们需要使用C++来写这个新的代码。如果这个代码使用的是C++的方式链接这个C库文件的话,那么就会出现链接错误.我们来看一段代码:首先,我们使用C的处理方式来写一个函数,也就是说假设这个函数当时是用C写成的:

    //f1.c
    extern "C"
    {
    void f1()
    {
    return;
    }
    }
    编译命令是:gcc -c f1.c -o f1.o 产生了一个叫f1.o的库文件。再写一段代码调用这个f1函数:

    // test.cxx
    //这个extern表示f1函数在别的地方定义,这样可以通过
    //编译,但是链接的时候还是需要
    //链接上原来的库文件.
    extern void f1();

    int main()
    {
    f1();

    return 0;
    }
    通过gcc -c test.cpp -o test.o 产生一个叫test.o的文件。然后,我们使用gcc test.o f1.o来链接两个文件,可是出错了,错误的提示是:

    test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
    也就是说,在编译test.cxx的时候编译器是使用C++的方式来处理f1()函数的,但是实际上链接的库文件却是用C的方式来处理函数的,所以就会出现链接过不去的错误:因为链接器找不到函数。

    因此,为了在C++代码中调用用C写成的库文件,就需要用extern "C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。

    比如,现在我们有了一个C库文件,它的头文件是f.h,产生的lib文件是f.lib,那么我们如果要在C++中使用这个库文件,我们需要这样写:

    extern "C"
    {
    #include "f.h"
    }
    回到上面的问题,如果要改正链接错误,我们需要这样子改写test.cxx:

    extern "C"
    {
    extern void f1();
    }

    int main()
    {
    f1();

    return 0;
    }
    重新编译并且链接就可以过去了.

    总结

    C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。

    展开全文
  • 尤其内存的配置,配置多了浪费,配置少了跑不了或者不稳定(会出现的一大堆莫名奇妙的问题,什么打开网页的速度很慢啊?什么丢包啊,什么死机啦,什么跑到无限循环里边去了,总之很多)。   在这里先说一下这两...
  • LWIP接收例程

    千次阅读 2015-07-31 08:36:18
    但是开发板给的光盘中有关以太网的例子,如enet_lwip,初学者搞不清楚这个目录中的这些文件什么的,这些文件都需要吗? 大家可以看出enet_lwip例子文件结构比较混乱,不知道哪些我们要用到的源文件,不...
  • lwip的源码

    2013-01-09 14:39:31
    如果你对TCP IP的协议实现还有什么问题的话,这个一种很好的解决方案,只要移植而已,就那么两三个文件!
  • Lwip拥塞控制

    千次阅读 2018-03-06 20:32:43
    什么样的情况出现说明网络出现了拥塞?出现发送数据报文超时和收到3个重复的ACK。这两种情况都说明数据报文段有丢失的情况,我们假定由于报文损坏引起的丢失概率很低的,因此出现报文丢失,就说明源主机和目的主机...
  • 在全局定义的宏和在一个函数内部定义的宏有什么不同?是不是和变量的定义含义差不多,作用域不同?还是有其他的什么差别?  宏定义的作用域同文件内从...#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) *
  • 1、初识LwIP前言

    2019-08-18 20:12:15
    最近项目中用到LwIP,应用场景复杂,可靠程度高,遇到了很多奇奇怪怪的问题,不过还好,基本都... 我觉得的想要学习一个协议,首先你需要知道,它是什么,它能干什么,它在OSI的哪一层,所以每一节我都附上了百度百...
  • STM32F107移植LWIP

    2018-12-09 10:39:00
    因为最近需要在STM32F107上实现TCP/IP协议栈,所以网上查了一下,准备使用LWIP,虽然大多数用的1.4.1版本但是官方说2系大版本修复了1.4.1的大量bug所以这里用的版本2.0.3,其实移植上没有什么太大区别。...
  • 小议LWIP——内存对齐

    千次阅读 2016-11-02 15:51:23
    每一种处理器都会有自己的内存对齐要求,这样做的目的很大程度上为了处理器读取内存数据的效率,当然还有总线等因素的影响,具体的可以看一下为什么要内存对齐 Data alignment: Straighten up and fly right ,我...
  • LwIP之pbuf

    千次阅读 2013-06-14 16:47:29
    pbuf的结构 | next | 指向链表上的下一个pbuf | payload | 指向pbuf管理的数据的起始地址,可以是紧跟在pbuf后的RAM,也可以是ROM上的某个地址,取决于pbuf是什么类型 | len |
  • 基于Lwip的TCP框架

    2020-06-20 10:51:30
    Hi , 今天开源一个基于lwip-raw tcp的框架。 那么为什么会有这个框架呢?主要也解决一些问题,比如说: 盲目使用tcp_connect函数会产生多连接问题 若连接的目标不存在(对方无法返回RST) 若连接的目标存在且禁止...
  • 前几天在LPC1788的开发板上移植了FREERTOS,后来在此基础上,准备把lwip也移植到LPC1788开发板上,本以为半天搞定的事情,结果花了我整整两天时间,各种焦躁,最终成功了,不过我觉得能成功也存在运气的成分,...
  • LWIP+freertos+DM9000

    2018-06-13 21:00:59
    来到合肥已经一个多星期了本来想记录点什么,但是感觉在QQ 空间上会太过于矫情。于是乎选择了csdn 先说说故事的开头吧。故事的开头大4那时候就 已经开来到了动漫基地这边实习第一次工作然后毕业后去了南京现在...
  • lwip源码分析-内存管理模块

    千次阅读 2014-06-26 19:28:55
    我将以参照源码的方式由下向上解释lwip的工作原理,有什么错误欢迎指正。 首先将从lwip的内存机制说起,lwip提供了三种内存分配管理机制,一种c 语言自带的内存机制,只要编译的时候将编译选项设置MEM_LIBC_MALL
  • 关于LWIP的IGMP阶段性小结

    千次阅读 2016-12-09 09:47:18
    用的LWIP是V1.4.1.关于为什么用V1.4.1 前面的博客有好像有说明。 LWIP的官网上关于lwip有两部分内容,一部分是协议,另一部分是关于移植。而STM32的官方的例子用的就是V1.4.1的协议,但是移植方面不是最新的,有点凑...
  • 尤其内存的配置,配置多了浪费,配置少了跑不了或者不稳定(会出现的一大堆莫名奇妙的问题,什么打开网页的速度很慢啊?什么丢包啊,什么死机啦,什么跑到无限循环里边去了,总之很多)。 这两个配置lwip协议栈...
  •   今天我们来讨论LWIP是怎样来处理与底层硬件,即网卡芯片间的关系的。   为什么要首先讨论这个问题呢?与许多其他的TCP/IP实现一样,LWIP也是以分层的协议为参照来设计实现TCP/IP的。LWIP从逻辑上看分为四层...
  • LwIP - UDP】- 实现UDP通信

    千次阅读 2018-09-10 14:47:24
    1 什么是UDP 2 基于raw/callback API的UDP 3 raw/callback API UDP的绑定、连接和发送 基于LwIP实现UDP通信 1 什么是UDP UDP,即用户数据包协议,属于TCP/IP 中的传输层。同样,TCP,即传输控制协议,也属于...
  • LWIP手记【A】gnetif

    2017-01-24 11:59:08
    那么gnetif里面都存了些什么呢? (1).next 这个就是说指向下一个地址。就类似于我在上一篇文章讲的memp 差不多少。(见:LWIP手记【A】memp-1) 作者还定义了个netif_list,如下: struct netif *netif_list; ...
  • 首先,为什么要做无OS的LWIP呢?原因很简单,因为stm32f103c8t6只有20K的RAM,很难支持OS+LWIP。 无OS的LWIP的一个优点,可以提高单片机的以太网的响应速度。 LWIP的介绍就不说了,网上查一大把。 我的无OS移植...
  • LWIP调试http server的Out of memory问题

    千次阅读 2017-09-22 17:11:02
    LWIP调试http server的Out of memory问题最近在做IOT控制,主要通过LWIP的http server来做控制,实现...只能重新进入web,于是打开LWIP的调试发现卡死时输出Out of memory的输出,于是我就重新过了变LWIP,看看是什么
  • STM32的网络应用还是个复杂的外设的,拿到一个板子需要验证网络部分是否正常,硬件设计是否有问题,对于很熟悉LWIP的同学可以直接移植LWIP,验证硬件。但快速且方便的办法修改ST的官方demo来验证硬件。(ST提供了...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 133
精华内容 53
关键字:

lwip是什么