相关文章

学会Zynq(10)lwIP简介

从本篇开始,将花大量篇幅介绍Zynq在裸机环境下以太网的使用。裸机时最方便的就是使用SDK已经集成了的lwIP 1.4.1库,我们将先了解lwIP的相关知识,然后再以实例的方式学习TCP、UDP的程序设计方法。 研究背景 在过去几年里,将计算机…

学会Zynq(13)lwIP官方应用程序示例

XAPP1026中记录一些lwIP的应用程序示例和性能测试情况,不过提供的示例工程都是在几个Xilinx的官方板子中跑的。可能很多学生没有机会碰到这些板子。。。另外这份应用笔记使用的SDK 2014.3版本也比较老,那个版本lwip还没有直接集成到SDK中。本文将这份笔记…

学会Zynq(12)lwIP 1.4.1库的配置与使用

lwIP概述 lwIP是一个用于嵌入式系统的开源TCP/IP协议集,是一套可以独立运行的栈,无需依赖操作系统,但也可以与操作系统同时使用。lwIP提供了两套API(术语为A05PI),供用户选择: RAW API&#x…

【lwIP(第一章)】lwIP入门

lwIP是一个小型开源的TCP/IP协议栈(阉割的TCP/IP协议) lwIP适用于:云台接入、无线网关、远程模块、工控控制器、嵌入式NAT无线路由器、网络摄像头……… 目录 一、TCP/IP协议栈1. TCP/IP协议栈结构体2. TCP/IP协议栈的数据封装与解封装 二、l…

《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)

开发环境: Keil:V5.30 开发板:STM32 Nucleo-F746ZG开发板 LWIP:V2.1.2 PHY芯片:LAN8742A 3.1 STM32CudeMX配置工程 由于STM32CudeMX内集成LWIP(TCP/IP协议栈),不需要我们进行复杂的…

《嵌入式 - Lwip开发指南》第2章 LWIP开发环境简介

开发环境: Keil:V5.30 开发板:STM32 Nucleo-F746ZG开发板 LWIP:V2.1.2 PHY芯片:LAN8742A 在LWIP 教程中 PHY 层使用的是LAN8742A芯片,相当于物理层, STM32F746自带的 MAC 层相当于数据链路层,而…

lwIP更新记02:网络接口标志(一个标志只做一件事)

从 lwIP-2.0.0 开始,网络接口 netif 的 up 标志修改为管理标志,up标志不再具有以前的 IP4 地址有效 含义。 什么是网络接口 netif ? 网络接口 属于链路层范畴,它旨在对具体网络硬件、软件进行统一封装,并为协议栈上层&…

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

一、环境介绍 MCU: STM32F103ZET6 代码开发工具: Keil5 TCP/IP协议栈: LWIP 网卡: DM9000 本篇文章主要讲解如何在STM32F103工程里添加移植LWIP协议,最终完成TCP服务器、TCP客户端的通信测试。 网卡采用的是DM9000,工程代码中,采用STM32…

lwIP更新记08:TCP 回调函数中调用 tcp_abort 终于安全了

从 lwIP-1.4.0 开始,tcp 回调函数中调用 tcp_abort 函数终于安全了。 在此之前,如果从 tcp 回调函数中调用 tcp_abort,则会访问未分配的内存。 应用程序关闭连接,正常情况下是调用 tcp_close 函数,经过 4 次握手安全的…

lwIP更新记06:申请 TCP 控制块(tcp_alloc)

从 lwIP-2.0.0 开始,申请 tcp_pcb 控制块的逻辑发生了变化。 每个 tcp 连接都必须有一个 PCB 控制块 ,使用函数 tcp_new() 申请 PCB 控制块。tcp_new 函数代码如下所示: /*** Creates a new TCP protocol control block but doesnt place it…

《嵌入式 - Lwip开发指南》第5章 LWIP测速

最近有个网友在询问关于LWIP的速度,本文就LWIP网速做个简单测试。为了对比,本文将使用无系统和有系统两种环境。 5.1网络测速工具介绍 不过在测速之前,需要介绍下测速的工具,这里有两个软件:iPerf与jperf。 iPerf 是…

lwIP 细节之一:TCP 最大链接数

lwIP 协议栈为每个 TCP 连接分配不同的 TCP_PCB 控制块。然而 lwIP 能分配的 TCP_PCB 控制块最大数目是编程人员指定的。这是因为嵌入式硬件 RAM 都很少,而每个 TCP_PCB 都要占用 RAM,具体数目根据配置的不同而不同,我这边的典型配置每个 TCP…

lwIP 操作系统模拟层

注1:除非特别说明,以下内容针对 lwIP 2.0.0 及以上版本。 注2:操作系统使用 FreeRTOS contrib 2.1.0 给出了一个 lwIP 的操作系统模拟层,使用的操作系统为 FreeRTOS。模拟层位于:\contrib-2_1_0\ports\freertos 。 宏…

lwIP 细节之七:ARP 相关知识

ARP 表项的最大存活时间与宏 ARP_MAXAGE 相关,默认为 240 x 5000ms 20 分钟。当 ARP 表项还有最后一分钟(由宏 ARP_AGE_REREQUEST_USED 控制)存活时间时,lwIP 重发 ARP 请求。发出 ARP 请求后,最多等待 5 x ARP_TMR_I…

lwIP更新记01:全局互斥锁替代消息机制

从 lwIP-2.0.0 开始,在 opt.h 中多了一个宏开关 LWIP_TCPIP_CORE_LOCKING,默认使能。这个宏用于启用 内核锁定 功能,使用 全局互斥锁 实现。在之前,lwIP 使用 消息机制 解决 lwIP 内核线程安全问题。消息机制易于实现,…

《嵌入式 - Lwip开发指南》第1章 LWIP概述

1.1 LwIP简介 LwIP 全名为 Light weight IP,意思是轻量化的 TCP/IP 协议,是瑞典计算机科学院(SICS)的 Adam Dunkels 开发的一个小型开源的 TCP/IP 协议栈。LwIP 的设计初衷是:用少量的资源消耗(RAM)实现一个较为完整的 TCP/IP 协议栈&#x…

lwIP更新记03:IPv6

从 lwIP-2.0.0 开始,lwIP 终于有可用的 IPv6 协议栈了!IPv6 支持 双栈(IPv4 和 IPv6 同时使用) 或 IPv4/IPv6 二选一 模式。 lwIP-1.4.1 版本也有 IPv6,但那是实验性质的(见…\lwip-1.4.1\src\core\ipv6目…

lwIP更新记10:IP 冲突检测

注:lwip-2.2.0 正式版本已经于 2023-09-25 发布,功能与 lwip-2.2.0-rc1 版本几乎没有区别,只是更正了版本号。 以下为原文: lwIP-2.2.0-rc1 介绍 lwIP-2.2.0-rc1 于 2023 年 6 月 29 日发布,主要修改为: …

lwIP 多线程注意事项

关于 lwIP 多线程的总结: lwIP 内核不是线程安全的。如果在多线程环境中使用 lwIP,必须使用高层次的 Sequential 或 socket API。使用 raw API 时,需要自己保护好应用程序和协议栈核心代码。在无操作系统环境中使用 raw API: 使用…

PHP的zlib压缩工具扩展包学习

PHP的zlib压缩工具扩展包学习 总算到了我们压缩相关扩展的最后一篇文章了,最后我们要学习的也是 Linux 下非常常用的一种压缩格式:.gz 的压缩扩展。作为 PHP 的自带扩展,就像 zip 一样,zlib 扩展是随着 PHP 的安装包一起发布的&am…