自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (2)
  • 收藏
  • 关注

原创 LWIP_简记(8.tcpip_init()之lwip_init())

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------从这一讲开始我们来剖析一下lwip_init()中那些子系统的初始化.先上源码:/** * @ingroup lwip_nosys * Initialize all modules. ...

2020-03-28 15:22:27 3876 1

原创 LWIP_简记(7.tcpip_init()之tcpip_thread)

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------接着上一篇的讲:/** * @ingroup lwip_os * Initialize this module: * - initialize all sub modules * - ...

2020-03-28 12:45:17 3194 1

原创 LWIP_简记(6.走一遍初始化)

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------前面在第一节乃至后面每一篇我都在强调五步初始化,第三节也实操了一下.今天呢就详细的再来讲一下这五步初始化的具体操作.1.xxx_init(网络驱动,一般由具体厂商弄,比如BCM,RTL,AW...

2020-03-28 10:52:28 2343

原创 LWIP_简记(5.数据包管理)

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------先整链接:https://blog.csdn.net/XieWinter/article/details/99829412这篇博文讲的特别清楚详细.前言再来自我总结:lwip说到底也就是...

2020-03-22 13:18:48 574

原创 LWIP_简记(4.高大上的内存管理)

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------前言在第一讲中我们已经简单的提到了lwip支持的三种内存分配策略,这里我们先来聊聊这三种内存分配的异同. |C库自带内存分配策略(malloc/free/rea...

2020-03-22 12:31:48 674

原创 LWIP_简记(3.今天来点儿干货,"实操")

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构-------------------------------------------相信大家有了前面的基础,已经对lwip有了个框架认识,那么今天就来实操一下 .按照惯例我喜欢条例化,那么来吧!以RTThread操作系统为例,五步曲跑通lwip.至于为啥选择RTThread...

2020-03-14 17:02:39 693

原创 LWIP_简记(2.谈谈具体的配置)

LWIP一句话记住就行:一项工程,两份配置,三种内存分配,四套操作API,五步初始化,六个"数据流",七个数据结构上一篇已经提到了一项工程,粗略的介绍了大纲,以及两份配置,其实要真正弄懂LWIP,还真没那么简单,讲到配置,拿东西可多了,什么协议,TCP,UDP,PPP,IP,ICMP,IGMP…各种xxP,还有各种mem,南瘦香菇.如果你以为我这里会把所有配置列出来一通分析,那你就大错特错了...

2020-03-14 12:39:33 900

原创 LWIP_简记(1.不得不说一下目录结构)

当然啦不失一般性,我也会简单讲一下LWIP的目录结构,点到为止,毕竟一开始还是面对初学者,没必要整有些没的,吓到了不好.或者一些大神原本看都看到吐了的东西,再看浪费时间,扫一眼就够了.我呢,全系列以最新的2.0.0及以上开始整.小白请自觉跳转这篇博文(https://blog.csdn.net/ZCShouCSDN/article/details/79229728).先整张图:可怕不.....

2020-03-13 20:33:56 891

原创 LWIP_简记(0.说在前面的话)

今天开始计划做一系列LWIP的简记,什么叫简记呢?说实话,鄙人开始学习网络也不久,也还在摸爬打滚,所以也都是网上各种搜索"LWIP移植","LWIP源码分析",“LWIP手把手教学”......这些关键字,于是乎就会出现一大堆网址,资料,看多了发现还是停留在移植,目录结构的介绍,但是每每看到LWIP分析...的文章还是忍不住从头到位看一遍,生怕错过什么精彩(大同小异)内容,时间悠哉悠哉就没了.所...

2020-03-13 19:21:23 631

原创 BUGS_10 gcc编译报错"commands commence before first target. Stop"

编译smartconfig时出现:make[3]: Entering directory `xxx/compile_dir/target/smartlinkd/src'Makefile:11: *** commands commence before first target. Stop.make[3]: Leaving directory `xxx/compile_dir/target/...

2020-03-13 08:52:46 590

原创 LWIP_socket(5小总结)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()没想到吧,我胡汉三又回来了,怎么说over就over呢,学习了不总结还学习干嘛?2.总结一下1)先简单说一下api的分析技巧,通过前面几篇,大家几乎都能够发现,在lwip中,其实还是...

2020-03-12 16:38:41 548

原创 LWIP_socket(4recv)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()本文着重介绍Server端的recv()过程。还记得前一篇的accept吧,不熟悉的再回去看看.前一篇文章中,accept()生成了一个新的socket,作为server端socket...

2020-03-12 16:30:53 510

原创 LWIP_socket(2listen)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()本文着重介绍Server端的listen()过程,这节是比较轻松的,开心的往下看就好了.用户使用socket,调用listen()时,实际调用的是lwip里的lwip_listen()...

2020-03-12 16:26:39 304

原创 LWIP_socket(3accept)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()本文着重介绍Server端的accept()过程。会有大量代码分析,请提前准备小板凳认真听课.上一篇我们已经分析了listen()过程,listen()过程新建了pcb并把它放到了tc...

2020-03-12 16:23:18 344

原创 LWIP_socket(1bind)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()2.lwip_bind()用户调用bind()时,实际调用的是lwip_bind(),我们从这个函数看起: 1 int 2 lwip_bind(int s, const struc...

2020-03-12 16:17:15 277

原创 LWIP_socket(0创建)

1.前言一个基本的socket建立顺序是Server端:socket()bind()listen()accept()recv()Client端:socket()connect()send()2.lwip_socket()用户使用socket时,首先会调用socket()函数创建一个socket。在lwip中实际调用的就是lwip_socket()函数。intlwip_...

2020-03-12 16:12:23 1628 1

原创 NET6_LWIP使用DNS服务

ping测试,使用dns时出现:msh />ping www.baidu.comping: unknown host www.baidu.com----------------------------经过排查发现:先把宏定义添加上去#ifndef LWIP_DNS#define LWIP_DNS 1#endif在系统初始化调用dns_init();1、创建一个udp的专...

2020-03-12 15:43:07 334

原创 LWIP_ARP协议(6个人总结)

功能根据目标IP地址,寻找网络中的目的主机,获取主机MAC地址.实质IP地址和MAC地址的映射,对arp缓存表项的建立,更新,查询操作.关键数据结构表项数组[]每一个元素(即每一个表项)都有如下重要指标:IP地址<–>MAC地址状态:enum etharp_state{ETHARP_STATE_EMPTY = 0, //空ETHARP_STATE_PENDING...

2020-03-12 11:46:49 492

转载 LWIP_ARP协议(0协议原理)

引言从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:那么什么是ARP协议呢?初始ARPARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网...

2020-03-12 11:09:14 447

转载 LWIPARP协议(5数据包接收)

ARP数据包处理以太网是有自己独立的寻址方式(MAC地址),而对于TCP/IP的上层协议(如TCP协议、IP协议),它们是以IP地址作为网络的标识,如果没有IP地址则无法进行收发数据。当数据通过网卡中接收回来的时候,LwIP内核就需要将数据进行分解,如果是IP数据报则递交给IP协议去处理,如果是ARP数据包则交由ARP协议去处理。真正让LwIP内核去处理接收到的数据包是ethernet_inp...

2020-03-12 10:42:40 393

转载 LWIP_ARP协议(4数据包发送)

ARP数据包发送我们知道一个数据包从底层传递进来的流程是怎么样的,如果是ARP数据包就会给ARP去处理,如果是IP数据报就使用ip4_input()函数传递到上层,这些处理在后面的章节讲解。那么如果上层协议想要发送数据,也肯定需要经过ARP协议将IP地址映射为MAC地址才能完成发送操作,IP数据报通过ip4_output()函数将上层数据包传递到ARP协议处理,关于IP协议是怎么样传递的我们暂且...

2020-03-12 10:40:30 362

转载 LWIP_ARP协议(3请求包的发送)

发送ARP请求包发送ARP请求包的时候,需要填充已知的目标IP地址、源MAC地址、源IP地址等,并且需要该ARP包进行广播出去,所以以太网首部的目标MAC地址为FF-FF-FF-FF-FF-FF。LwIP先调用etharp_request()函数进行发送ARP请求包,在etharp_request()函数中会调用etharp_request_dst()函数进行发送,此时指定的目标MAC地址是e...

2020-03-12 10:37:58 580

转载 LWIP_ARP协议(2缓存表超时处理)

ARP缓存表的超时处理ARP表项的生存时间是5分钟,而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项。这就需要ARP层有一个超时处理函数对ARP进行管理,这些操作都是根据ARP表项的ctime字段进行的,它记录着对应表项的生存时间,而超时处理函数是etharp_tmr(),它是一个周期性的超时处理函数,每隔1秒就调用一次,当ctime的值...

2020-03-12 10:35:24 1053

转载 LWIP_ARP协议(1缓存表数据结构)

前言从前面的文章,我们知道,ARP协议的核心是ARP缓存表,而ARP协议的实质就是对缓存表项(entry)的建立、更新、查询等操作。那么,LwIP中是是怎么实现ARP协议的呢?ARP缓存表的数据结构LwIP使用一个arp_table数组描述ARP缓存表,数组的内容是表项的内容,每个表项都必须记录一对IP地址与MAC地址的映射关系,此外还有一些基本的信息,如表项的状态、生命周期(生存时间)以...

2020-03-12 10:32:45 644

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除