相关文章

《嵌入式 - 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…

idea run with coverage异常

到idea安装目录的bin目录下找到idea.exe.vmoptions这个文件 记事本打开最后加入一行-Djava.io.tmpdirD:\Temp ,这里要注意 D:\Temp 是随意写的目录,但一定要保证它存在。 重新打卡IDEA 在运行就可以 注意事项 1.如果你的idea是64位的,更改这个文件&…

Gradle Run with --stacktrace option to get the stack trace

IDEA中使用Gradle的时候遇到以下异常: * Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 解决办法: IDEA中File-Settings-Build&#…

@RunWith注解找不到,怎么办?

1、新版spring-boot-starter-test不再集成junit,而是junit-jupiter 在这里,先说明我使用的版本 SpringBoot 2.5.5 spring-boot-starter-test 2.5.5 2、该问题的起因是在测试类中使用RunWith注解,发现找不到该类,到依赖里从父依赖…

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more l

idea 运行异常 ** Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. ** 原因:类路径太长…系统有命令行长度限制 ,程序就无法启动。 JAR manifest:通过临时的classpath.jar传递长的类…