首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    LWIP使用解析_lwip tcp

    { /* inherit from rt_device */ struct rt_device parent; /* network interface for lwip 3:DMA描述符 在LWIP内部使用一种结构叫做DMA描述符。 STM32F407以太网模块中的接收/发送FIFO和内存之间的以太网数据包传输是DMA使用DMA描述符完成的。 EthHandle.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII; EthHandle.Init.RxMode = ETH_RXINTERRUPT_MODE; #ifdef RT_LWIP_USING_HW_CHECKSUM uint32_t)RESET) { LOG_D("buffer not valid"); ret = ERR_USE; goto error; } /* Get bytes in current lwIP LOG_D("receive frame len : %d", len); if (len > 0) { /* We allocate a pbuf chain of pbufs from the Lwip

    1.9K30编辑于 2022-11-15
  • 来自专栏全栈程序员必看

    lwip udp 发送_lwip udp发送

    1、void udp_input(struct pbuf *p, struct netif *inp)

    4.7K10编辑于 2022-10-04
  • 来自专栏全栈程序员必看

    Lwip的udp编程

    第一次写博客,主要是想记录自己过程过程中接触到的知识: 在嵌入式系统中需要用到网络的地方很多,下面是Lwip中实现udp的例子: #define UDP_DEMO_PORT 8087 struct netif lwip_netif; //定义一个全局的网络接口 int main(void) { struct netif *Netif_Init_Flag; struct ip_addr ipaddr ,&ipaddr,&netmask,&gw,NULL,ðernetif_init,ðernet_input); //添加网口 #ifdef DHCP dhcp_start(&lwip_netif ); #endif /*DHCP*/ netif_set_default(&lwip_netif); //设置netif为默认网口 netif_set_up(&lwip_netif); //打开 ,udp_demo_recv,NULL); //注册接收回调函数,udp_demo_recv用于处理接收到的数据,该函数在特定 //的时候会被Lwip

    1.1K20编辑于 2022-10-02
  • 来自专栏科学计算

    lwip代码分析

    Xilinx的lwIP是基于开源lwIP TCP/IP协议栈的一个适应版本,专门为Xilinx的硬件平台,如Zynq-7000和MicroBlaze,进行了优化和集成。 RAW Mode TCP Client Application-----\r\n"); /* initialize lwIP */ lwip_init(); /* Add network 在lwIP中,netif(网络接口)是一个核心的结构体,它代表了一个网络接口,例如以太网接口、Wi-Fi接口等。netif结构体用于定义和管理这些接口,使lwIP可以在多个接口上运行并进行路由决策。 当你在lwIP中添加一个新的网络接口时,你通常会初始化一个netif结构体并使用netif_add()函数将其添加到lwIP的接口列表中。这样,lwIP就可以开始在该接口上接收和发送数据包了。 这会告诉lwIP停止在该接口上的通信,直到接口再次被设置为"up"状态。

    1.1K20编辑于 2023-10-31
  • 来自专栏OpenFPGA

    Microblaze搭建LWIP

    K7平台的Microblaze搭建LWIP 1、概述 lwip 是瑞典计算机科学院(SICS)的 Adam Dunkels 开发的一个小型开源的 TCP/IP 协议栈。 lwIP 协议栈主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让 lwIP 适用于资源有限的小型平台例如嵌入式系统。 为了简化处理过程和内存要求,lwIP 对 API 进行了裁减,可以不需要复制一些数据。 lwip 提供三种 API:1)RAW API 2)lwip API 3)BSD API。 这就是 lwip API。 图8‑114 代码分析 8.5.6.4 软件设计 新建SDK工程,导入修改过的lwip库文件 ? 图8‑115 导入修改过的lwip库文件 新建LWIP工程 ?

    2.6K20发布于 2020-06-29
  • 来自专栏全栈程序员必看

    1、LwIP简介「建议收藏」

    此外 LwIP既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。   LwIP有无操作系统的支持都可以运行。 lwIP协议栈主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让lwIP适用于资源有限的小型平台例如嵌入式系统。 为了简化处理过程和内存要求,lwIP对API进行了裁减,可以不需要复制一些数据。 2、LwIP的特性   LwIP 具有主要特性:   (1)支持 ARP 协议(以太网地址解析协议)。    LwIP 被广泛用在嵌入式网络设备中, 国内一些物联网公司推出的物联网操作系统,其 TCP/IP 核心就是 LwIP;物联网知名的 WiFi 模块 ESP8266,其 TCP/IP 固件,使用的就是 LwIP 这就是lwip API。   

    3K30编辑于 2022-09-07
  • 来自专栏wenzi嵌入式软件

    LwIP 协议栈之 udp 协议解析

    前言 之前在做一个关于数据传输的时候,使用到了 WiFi 传输数据,而在传输数据时使用到的协议就是 LwIP 协议栈中的 udp 协议。现在来回顾总结一下。 要叙述 LwIP 协议栈,那自然得明白 LwIP 协议栈具体是个啥。 上述所说便是关于 LwIP 协议栈的相关叙述。 LwIP 的分层机制 在叙述 udp 协议概念之前,先对 LwIP 协议的框架有一个简单的了解,LwIP 在实现的时候,参考了 TCP/IP 协议的分层思想,每一层都在一个单独的模块中实现,并为其他层次模块提供一些输入 UDP 协议 在简单地叙述了关于 LwIP 的框架之后,接下来详细阐述 UDP 地相关概念。

    1.9K30发布于 2021-03-04
  • 来自专栏嵌入式程序猿

    uIP和LwIP背后的那个牛逼男人

    在公众号给大家介绍过Uip和LwIP,如果使用过这两种TCP/IP协议栈,那么你一定会熟悉一个人Adam Dunkels亚当-邓克尔,瑞典计算机科学院的教授,这两种开源的协议栈都出自他手,现在是Thingsquare Uip和LWIP估计大家都听的不爱听了,因为在公众号里介绍和移植了很多次,可能大家对conkiti系统还不是很了解,其实他已经存在很长时间了,而且完全开源,可以去git上下载源码,熟悉他的源码目录结构和移植

    1.7K70发布于 2018-04-11
  • 来自专栏嵌入式程序猿

    一张表看懂uIP和lwIP的区别

    我们给大家介绍过目前比较流行的开源TCP/IP开源协议栈uIP和lwIP, 这两种都是由瑞典计算机科学研究院开发的,广泛应用于嵌入式系统中。 在freeRTOS的学习中我们就给大家介绍过这两种协议栈,uIP比lwIP更精简,被大量移植在8位,16位,32位单片机上, lwIP比uIP功能更全一些,但同时占用资源也就更多一些。 Lwip可以去http://savannah.nongnu.org/projects/lwip/下载 源码目录结构 这两个都是开源的,可以应用于商业应用或者学习。

    6.3K93发布于 2018-04-11
  • 来自专栏嵌入式随笔

    ZYNQ 裸机lwip 双网口注意事项

    /include/lwip/ip4.h #define LWIP_HOOK_IP4_ROUTE_SRC 2.3 修改路由相关函数 xxx_bsp/ps7_cortexa9_0/libsrc/lwip202 _v1_2/src/lwip202_v1_2/src/include/lwip/netif.h 增加如下: #if LWIP_SINGLE_NETIF #define NETIF_FOREACH(netif LWIP_SINGLE_NETIF struct netif *netif; //LWIP_ASSERT_CORE_LOCKED(); #if LWIP_MULTICAST_TX_OPTIONS LWIP_HAVE_LOOPIF */ #ifdef LWIP_HOOK_IP4_ROUTE_SRC netif = LWIP_HOOK_IP4_ROUTE_SRC(NULL, dest); if If this is not good enough for you, use LWIP_HOOK_IP4_ROUTE() */ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS

    2.6K10编辑于 2024-03-06
  • 来自专栏全志嵌入式那些事

    全志XR806芯片 如何打开 LwIP 调试信息?

    问题分析 LwIP 内部调试信息有两类: (1) LWIP_DEBUG,可以显示协议栈内部各层运行流程,收发通路信息等。 LWIP_DEBUG 文件 include/net/lwip-2.0.3/lwipopts.h 中 设置调试等级,使能全局调试信息: #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL #define LWIP_DBG_TYPES_ON LWIP_DBG_ON 根据需要打开相应类别的调试信息,如 socket 相关调试信息 : #define SOCKETS_DEBUG LWIP_DBG_ON (2) 打开 LWIP_STATS 的方式 文件 include/net/lwip-2.0.3 /lwipopts.h 中 使能 LWIP_STATS: #define LWIP_STATS 1 #define LWIP_STATS_DISPLAY

    54510编辑于 2024-02-02
  • 来自专栏FPGA探索者

    ZC706千兆网测试(ZYNQ,FreeRTOS,Echo,lwIP,TCP,RGMII)

    (1)使用ZC706开发板测试PS端网口(Echo,lwIP协议栈); (2)配合操作PL端LED(直接驱动和使用消息队列两种方式); (3)PS端串口UART打印调试信息; (4)QSPI固化(Dual 选择 OS Platform 平台为 freertos10_xilinx(Vivado及SDK版本2018.2,低版本的可能是freertos9_xilinx),选择Next,选中“FreeRTOS lwIP &(server_netif.netmask), 255, 255, 255, 0); IP4_ADDR(&(server_netif.gw), 192, 168, 1, 1); LWIP 协议栈;lwip_init(); (2)调用network_thread()创建线程; (3)调用echo_application_thread()创建线程; 每500ms检测一次DHCP是否成功,若成功则创建 while (1) { if ((new_sd = lwip_accept(sock, (struct sockaddr *)&remote, (socklen_t *)&size)) > 0)

    4.3K20发布于 2021-03-15
  • 来自专栏YYDS

    区块链多链钱包系统开发技术讲解方案详细(逻辑清晰)

    /ThirdParties/LWIP/lwip_app -I./ThirdParties/LWIP/lwip_app/lwip_comm -I. /ThirdParties/LWIP/lwip-1.4.1 -I./ThirdParties/LWIP/lwip-1.4.1/src -I. /ThirdParties/LWIP/lwip-1.4.1/src/api -I./ThirdParties/LWIP/lwip-1.4.1/src/core -I. /ThirdParties/LWIP/lwip-1.4.1/src/include/ipv4/lwip -I. /ThirdParties/LWIP/lwip-1.4.1/src/include/lwip -I.

    79450编辑于 2023-02-07
  • 来自专栏全志嵌入式那些事

    全志XR806芯片 select引发崩溃如何解决?

    问题分析 lwip-1.4.1 中 lwip_select 函数获取 sock 结构时,未对空指针进行处理,从而引发崩溃。多线程操作同个 socket 的场景下易复现该问题。 该 bug 在 lwip 后续版本中进行了修复。 4. 解决办法 方法 (1): 使用 lwip-2.0.3 因为 lwip-2.0.3 中已修复该 bug,切换使用即可。 xradio_skylark_sdk 中切换使用 lwip-2.0.3 的方法:在本地工程的 gcc/localconfig.mk 内部导出 __CONFIG_LWIP_V1 为 n。 如下所示: export __CONFIG_LWIP_V1 := n 方法 (2): 合入 lwip 修复成果至 lwip-1.4.1 lwip 开源代码获取方式: git clone https:/ "lwip_select(%d, %p, %p, %p, tvsec=%"S32_F" tvusec=%"S32_F")\n", @@ -1266,47 +1267,69 @@ lwip_select(

    34010编辑于 2024-02-02
  • 来自专栏OpenFPGA

    FPGA千兆网TCP通信分析

    首先看下LwIP的网络模型,这样就会有个整体概念,如下图所示: ? 图8‑16 LwIP模型 UDP/IP模型后面会详细介绍,这张图片也没有很特殊的东西,主要对LwIP有个整体的概念。 LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。 LwIP 具有三种应用编程接口 (API): Raw API:为原始的 LwIP API。它通过事件回调机制进行应用开发。该 API 提供了最好的性能和优化的代码长度,但增加了应用开发的复杂性。 所以据此LwIP存在两种移植方式:一是,只移植内核,此时应用程序的编写只能基于RAW/Callback API进行。 /projects/lwip/ http://lwip.nongnu.org/ 详细了解。

    1.7K10发布于 2020-06-30
  • 来自专栏OpenFPGA

    基于TCP/IP协议的电口通信

    之前有介绍过TCP/IP协议的实现是通过轻量级LWIP协议实现的,具体在FPGA中实现又可以分为多种方式,具体如下: ? 图8‑98 LWIP协议在FPGA中的实现方式 LWIP可以通过硬核实现或者软核实现,具体要看FPGA的选型,其中硬核可以通过硬核自带的GMAC通过直连PHY或者EMIO扩展到PHY都可以实现相应功能, 8.5.6.1 LWIP库移植 整个系统的实现最重要的就是LWIP的库移植,虽然Xilinx SDK 目录下面 xaxiemacif_physpeed.c 文件里面对 PHY 芯片有驱动,但是目前仅支持 网络通信或者MicroBlaze通过AXI总线实现LWIP网络通信。 由于原版LWIP库缺少当 PS 连接 AXI 1G/2.5G Ethernet Subsystem IP 核时对于 PHY芯片的配置驱动程序,若直接使用原版 LWIP 库将使 PHY芯片无法正常工作,从而无法进行数据传输

    1.6K20发布于 2020-06-29
  • 来自专栏安富莱嵌入式技术分享

    【STM32F407】第1章 当前主流的小型嵌入式网络协议栈

    1.3 LwIP网协议栈介绍 LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。 LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。 LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。 LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。 LwIP在开源的小型网络协议中做的比较成功,应用案例也非常多,下面是官网和相关的介绍文档。 LwIP的官网:http://savannah.nongnu.org/projects/lwip/ 。 LwIP的文档:http://lwip.nongnu.org/2_0_x/index.html 。 LwIP教程:http://www.armbbs.cn/forum.php?

    40410编辑于 2025-10-22
  • 来自专栏鸿蒙开发笔记

    OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(二)

    lwIP组件lwIP组件的源码在//third_party/lwip,OpenHarmony在kernel中做了定制化,//kernel/liteos_m/components/net/lwip-2.1 lwIP组件适配:lwIP是一个小型开源的TCP/IP协议栈,LiteOS-M已对开源lwIP做了适配和功能增强,lwIP代码分为两部分:third_party/lwip目录下是lwIP开源代码,里面只做了少量的侵入式修改 kernel/liteos_m/components/net/lwip-2.1目录下是lwIP适配和功能增强代码,里面提供了lwIP的默认配置文件。 如果需要使用lwIP组件,请按如下步骤适配:在产品目录下新建一个目录用来存放产品的适配文件,如lwip_adapter。 #ifndef _LWIP_ADAPTER_LWIPOPTS_H_ #define _LWIP_ADAPTER_LWIPOPTS_H_ #include_next "lwip/lwipopts.h

    45020编辑于 2025-06-26
  • 来自专栏嵌入式项目开发

    STM32入门开发: LWIP网络协议栈移植(网卡采用DM9000)

    终上所述:LWIP可优先考虑,参考的资料较多 四、LWIP协议栈移植 4.1 LWIP源码下载 下载LWIP1.4.1版本、并下载contrib-1.4.1版本。 4.6 新建lwip_config.c文件 在LWIP/app目录下新建一个lwip_config.c/lwip_config.h文件。 初始化LWIP内核*/ lwip_init(); /*2. 初始化LWIP内核*/ lwip_init(); /*2. 打开netif网口*/ netif_set_up(&lwip_netif); 5.2 LWIP轮询函数处理 LWIP轮询期间: 1.

    5.4K10编辑于 2022-01-12
  • 来自专栏安富莱嵌入式技术分享

    【STM32F429】第1章 当前主流的小型嵌入式网络协议栈

    1.3 LwIP网协议栈介绍 LwIP也是瑞典计算机科学院的Adam Dunkels 开发的开源TCP/IP协议栈。 LwIP属于小型嵌入式网络协议栈,有无操作系统的支持都可以运行。 LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。 LwIP协议栈主要关注的是怎样减少内存的使用和代码的大小,这样就可以让LwIP适用于资源有限的小型平台。 LwIP在开源的小型网络协议中做的比较成功,应用案例也非常多,下面是官网和相关的介绍文档。 LwIP的官网:http://savannah.nongnu.org/projects/lwip/ 。 LwIP的文档:http://lwip.nongnu.org/2_0_x/index.html 。 LwIP教程:http://www.armbbs.cn/forum.php?

    53010编辑于 2025-10-22
领券