整理笔记——STM32CuBe 生成LWIP与FreeRTOS调试记录

    最近在用STM32F429做网络通信,记录下工程生成过程,用CuBeMX生成工程后,再根据自己的编程习惯整理工程、添加自己的代码。

一、打开软件新建工程

 二、选择芯片

 三、配置时钟

 

四、选择调试方式,配置FreeRtos使用的时钟TIM8

 五、配置网络ETH

 PHY地址根据硬件电路设置,寄存器根据PHY芯片手册配置。

 六、配置LWIP

 

 七、配置FreeRtos

 八、生成工程

八、TCP发送机制 

1.1、Nagle算法

TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。

Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。

1.2、TCP、UDP数据包大小的限制

摘自:TCP、UDP数据包大小的限制_草上爬的博客-CSDN博客_udp包最大长度1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层   IP包在网络层   TCP或UDP包在传输层   TCP或UDP中的数据(Data)在应用层   它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}    不同的协议层对数据包有不同的称谓,在传输层叫做段(sehttps://blog.csdn.net/caoshangpa/article/details/51530685

首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。

其中以太网(Ethernet)的数据帧在链路层  
IP包在网络层   
TCP或UDP包在传输层   
TCP或UDP中的数据(Data)在应用层   
它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}   

UDP 包的大小就应该是 1500 - IP头(20) - UDP头(8) = 1472(Bytes)
TCP 包的大小就应该是 1500 - IP头(20) - TCP头(20) = 1460 (Bytes)

1.3、LWIP协议栈中的配置项

TCP_MSS  :TCP最大段尺寸

对象上述的Nagle算法的描述,若TCP连接要发送长度较大的字节数,修改协议中这个宏的配置

 LWIP所用的内存分配 MEM_SIZE

  LWIP 块的最小尺寸配置。

 FreeRTOS所用内存分配

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值