lwIP

IGMP小结(2)

孤人 提交于 2020-08-15 19:58:56
20190831 以前写过一个小结 关于LWIP的IGMP阶段性小结 。这次呢,当然希望更深入一些。 (1)在lwipopts.h里面加上 #define LWIP_IGMP 1 #define LWIP_RAND lwip_rand 然后建立一个lwip_rand函数 (2)添加igmp_init函数 (3)添加 if ((localtime - IGMPTimer) >= IGMP_TMR_INTERVAL) { IGMPTimer = localtime; igmp_tmr(); } (4)在low_level_init函数里面添加 netif->flags |= NETIF_FLAG_IGMP; (5)在ETH_MACDMA_Config函数里面把 ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;改为 ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_None; 为什么要改?在文档AN3411里面有 来源: oschina 链接: https://my.oschina.net/u/4267221/blog/4464207

LwIP应用开发笔记之十:LwIP带操作系统基本移植

我们两清 提交于 2020-08-14 17:55:14
现在,TCP/IP协议的应用无处不在。随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛。在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结。 1 、技术准备 我们采用的开发平台是STM32F407和LwIP协议栈。在开始之前,我们需要做必要的准备工作。 首先要获得LwIP的源码,在网上有很多,不同版本及不同平台的都有,不过我们还是建议直接从官方网站获得。其官方网站如下: http://savannah.nongnu.org/projects/lwip/ 其次,需要硬件平台,我们采用了STM32F407ZG+DM9161的网络接口方式,这并不是必须的,其他硬件平台也是一样的。 最后,因为我们后面要在操作系统下移植,采用的操作系统是FreeRTOS,所以还需下载FreeRTOS的源码。同样建议从官网下载: https://www.freertos.org/index.html 2 、 LwIP 简要说明 LwIP是一款免费的TCP/IP协议栈,但它的功能趋势十分完备。LwIP 具有三种应用编程接口 (API): Raw API :为原始的 LwIP API。它通过事件回调机制进行应用开发。该 API 提供了最好的性能和优化的代码长度,但增加了应用开发的复杂性。 Netconn API :为高层有序 API,需要实时操作系统 (RTOS)的支持

lwip协议以太网驱动层的软件数据结构详细解析

扶醉桌前 提交于 2020-08-14 10:52:11
1、概述 本文详细介绍了LWIP协议在rt-thread操作系统上的驱动层结构,rt thread操作系统的硬件驱动层采用标准的设备驱动结构,网络接口对应的网络设备netdev。网络设备下面对应的是以太网驱动程序,同时网络设备向应用层提供网络的各种功能接口,实现了如linux操作系统的ifconfig, ping命令等功能。整个lwip协议到底层硬件的结构如下,具体的参考代码可以查看rt-thread 3.1.3的正点原子阿波罗bsp工程。 lwip协议的软件层次结构 2、网络接口驱动层的数据结构 网络驱动部分的接口由硬件驱动接口层drv_eth.c,drv_eth.h,netif接口层ethernetif.c, ethernetif.h,netfi.c,netif.h,网络设备层netdev.c, netdev.h这些函数组成。每一层的程序都有一个数据结构来表示程序的使用的数据状态。请看下图,先对各个层对应的数据结构有一个初步的印象,混个脸熟先。 2.1 硬件驱动接口层 硬件驱动接口层drv_eth.c, drv_eth.h两个文件组成,drv_eth.c是操作系统的网络设备驱动程序,程序内部实现了设备驱动底层的open,close, read,write,ioctl这几个函数的功能。 对于网络设备只实现了ioctl函数的功能,由于读取网络的mac地址,其他几个函数全部为空

[再次发生趣事........] BOOTLOADER开发趣事又发生啦!!! 你正在做的东西,说不准这个世界某个角落也有人在干同样的事情

岁酱吖の 提交于 2020-08-13 06:07:19
大半夜的,有点感概,忍不住写下来! 在15年底写了 《BOOTLOADER开发趣事。你正在做的东西,说不准这个世界某个角落也有人在干同样的事情》 这写的是我第一代的bootloader,后来觉得不满意,在2018年4月开始开发第二代bootloader,可以看我的 bootloader专题 ,当时的计划截图如下: 。 今天又发生了相同的事情,这次就更彻底了。 起因是刚刚我在安富莱公众号刷到一篇安富莱的帖子,电脑版链接如下: 《[BOOT/IAP] 功能资料比较全面的开源Bootloader OpenBLT,支持USB,CAN,232和TCP/IP(2020-07-28)》 ,一看内容,有点意思了,怎么感觉和我的开发思路相差无几啊。 (1) OpenBLT 支持USB/CAN/TCPIP/RS232,而我的bootloader除了不支持USB别的都支持(因为我一直觉得USB不够“工业”) (2) OpenBLT 支持固件加密和整体校验,我的boot loader也是如此。 (3) OpenBLT 支持主从网关,我的不支持,我当时也想过这个事情,最后放弃了,因为觉得给别人用的话,操作容易出问题。 (4)都用了XCP,这个是最大的相同地方了。我是在这篇文章里《 节奏转换就是这么快,我打算放弃CCP,转向UDS的bootloader了! 》转向XCP的。 (5) OpenBLT

STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入

倖福魔咒の 提交于 2020-05-05 18:06:31
| 版权声明:本文为博主原创文章,未经博主允许不得转载。 最近尝试在STM32F4下用MBEDTLS实现了公钥导入(我使用的是ECC加密),整个过程使用起来比较简单。 首先,STM32F4系列CUBE里已经集成了MBEDTLS, MBEDTLS是ARM公司的开源加密库,遵守APACHE协议,大家可以随便使用MBEDTLS到开源和闭源项目上。 其次,除了ECC,MBEDTLS还支持AES系列对称加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以应用在各种加密场景。 1. 在CUBE里勾选MBEDTLS, 2. 在CUBE的MBEDTLS配置里勾选下面的选项,如果不确定该勾选什么,可以使用默认设置,全部勾选。 这里有个坑是MBEDTLS_NET_C选项是只支持POXIS标准的,如果同时使用了LWIP的话,记得把MBEDTLS_NET_C DISABLE掉。 3. 生成工程。完成后在工程里的Application/User/mbedtls.c里增加头文件包含#include "mbedtls/pk.h" 4. 找到MX_MBEDTLS_Init方法。(找不到的话直接全局搜索方法名。) 5. 创建并初始化上下文。 mbedtls_pk_context ctx_pk ; mbedtls_pk_init(&ctx_pk) ; 6. 调用mbedtls_pk_parse

stm32+lwip(五):以太网帧发送测试

亡梦爱人 提交于 2020-05-02 19:41:57
我是卓波,很高兴你来看我的博客。 系列文章: stm32+lwip(一):使用STM32CubeMX生成项目 stm32+lwip(二):UDP测试 stm32+lwip(三):TCP测试 stm32+lwip(四):网页服务器测试 stm32+lwip(五):以太网帧发送测试 很多时候,我们想直接获取以太网帧的数据或者直接发送以太网帧数据。在使用 STM32CubeMX 生成的工程当中,有两个函数就是直接跟以太网通信有关: 1 /* * 2 * This function should do the actual transmission of the packet. The packet is 3 * contained in the pbuf that is passed to the function. This pbuf 4 * might be chained. 5 * 6 * @param netif the lwip network interface structure for this ethernetif 7 * @param p the MAC packet to send (e.g. IP packet including MAC addresses and type) 8 * @return ERR_OK if the packet could be

stm32+lwip(三):TCP测试

瘦欲@ 提交于 2020-05-02 18:26:02
我是卓波,很高兴你来看我的博客。 系列文章: stm32+lwip(一):使用STM32CubeMX生成项目 stm32+lwip(二):UDP测试 stm32+lwip(三):TCP测试 stm32+lwip(四):网页服务器测试 stm32+lwip(五):以太网帧发送测试 ST官方有lwip的例程,下载地址如下: https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32070.html 本文例子参考ST官方给出的例程。 一、准备 ST例程文档关于lwip的介绍如下: 由此可以看到LWIP有三种API,在本文中,使用Raw API。 本文用到的TCP Raw API如下: 二、tcp client 1 /* * 2 ***************************************************************************** 3 * @file tcp_client.c 4 * @author Zorb 5 * @version V1.0.0 6 * @date

375-基于TI DSP TMS320C6657、XC7K325T的高速数据处理核心板

北战南征 提交于 2020-04-26 17:23:37
基于TI DSP TMS320C6657、XC7K325T的高速数据处理核心板 一、板卡概述    该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6657和一片Xilinx K7 FPGA XC7K325T-1FFG900。包含1个千兆网口,1个FMC HPC接口。可搭配使用AD FMC子卡、图像FMC子卡等,用于软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等。 二、技术指标 以xilinx 公司K7系列FPGA XC7K325T-1FFG900和TI公司的TMS320C6657为主芯片。 FPGA外接1组DDR3 ,共128MX32bit容量。 DSP外接一组128MX32bit容量的DDR3。 DSP外接1个 10/100/1000M网络。 FPGA外接32M BPI Flash 。 DSP外接 FLASH,支持128M *8bit MB。 DSP外接 4Gb Nand Flash。 DSP外接EEPROM。 FPGA与DSP相连的接口: Rapidio X4、SPI 、GPIO、McBSP、uPP、UART。 连接器引出了FPGA的GTX x 4、LVDS、RS232以及DSP的PCIEx2、HyperLink。 复位功能。 FPGA外接HPC高速信号接口,全信号标准定义。 工业级设计。 三、芯片介绍 1

【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-04-06)

…衆ロ難τιáo~ 提交于 2020-04-24 16:18:04
说明: 争取做更多的实战性应用,分享更多的嵌入式技术,希望能在实际项目中帮到大家。 (1)V7将大力加强对初学者的支持力度, 已经更新至75章 , 下载 链接 ,后边章节和一批视频教程将加紧制作。 (2)事隔五年之后,开启第2版DSP数字信号处理和CMSIS-NN神经网络教程,同步开启三代示波器,已经发布前23章 链接 。 (3)新版RL-TCPnet V7.X网协议栈和物联网教程开始更新,配RTX5和FreeRTOS两版本,更新至第10章, 下载链接 。 (4)LwIP网络教程开始更新,使用MDK的RTE环境开发,配套RTX5和FreeRTOS两个版本,更新至第7章, 下载链接 。 软件: 1、开发板预装出厂程序,各种外设驱动包全做好了,可以检测全部硬件功能。 2、例子保持MDK5和IAR8两个版本,选做Embedded Studio的GCC版。 3、开发板的大部分API和驱动包延续V4,V5和V6开发板命名和实现方法,老客户基本可以无痛学习。 硬件: 1、核心板是6层,底板是4层。 2、核心板大小34.5mm * 34.5mm,跟F429BIT6大小差不多。 3、核心板引出172个GPIO,底板引出上百个GPIO排针,含多路FMC高速扩展IO排针。 4、核心板板载32MB的32位带宽SDRAM和32MB的QSPI,显示屏采用24bit的RGB888硬件接口。 5