LwIP 應用開發實戰指南 : 基於 STM32

劉火良 楊 森 編著

  • 出版商: 機械工業
  • 出版日期: 2019-09-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 447
  • 裝訂: 平裝
  • ISBN: 7111635825
  • ISBN-13: 9787111635826
  • 相關分類: STM32
  • 已絕版

買這商品的人也買了...

商品描述

本書以LwIP源碼為核心,講解TCP/IP協議棧的實現,講解常見的網絡協議,
講解LwIP各層之間的數據傳遞,*終輔以實戰案例,教你如何連接各大雲平臺,
配套野火STM32 M4/M7系列開發板,提供完整源代碼,極具操作性。

目錄大綱

前 言
第1章 网络协议概述 1
1.1 常用网络协议 1
1.2 网络协议的分层模型 2
1.3 协议层报文间的封装与拆封 3

第2章 LwIP概述 5
2.1 LwIP的优缺点 5
2.2 LwIP的文件说明 6
2.2.1 获取LwIP源码文件 6
2.2.2 LwIP文件说明 8
2.3 LwIP的说明文档 11
2.4 使用vs code查看源码 14
2.4.1 查看文件中的符号列表和函数列表 14
2.4.2 函数定义跳转 15
2.5 LwIP源码里的示例 16
2.6 LwIP的3种编程接口 17
2.6.1 RAW/Callback API 17
2.6.2 Netconn API 18
2.6.3 Socket API 19

第3章 开发平台 20
3.1 以太网概述 20
3.1.1 PHY层 20
3.1.2 MAC子层 21
3.2 STM32的ETH外设 23
3.3 MII和RMII接口 24
3.4 PHY:LAN8720A 25
3.5 硬件设计 27
3.6 软件设计 29
3.6.1 获取STM32的裸机工程模板 29
3.6.2 添加bsp_eth.c与bsp_eth.h 29
3.6.3 修改stm32f4xx_hal_conf.h文件 35

第4章 LwIP的网络接口管理 37
4.1 netif结构体 37
4.2 netif的使用 41
4.3 与netif相关的底层函数 45
4.4 ethernetif.c文件内容 46
4.4.1 ethernetif数据结构 46
4.4.2 ethernetif_init() 47
4.4.3 low_level_init() 48

第5章 LwIP的内存管理 50
5.1 几种内存分配策略 50
5.1.1 固定大小的内存块 50
5.1.2 可变长度分配 51
5.2 动态内存池 52
5.2.1 内存池的预处理 52
5.2.2 内存池的初始化 57
5.2.3 内存分配 58
5.2.4 内存释放 59
5.3 动态内存堆 61
5.3.1 内存堆的组织结构 61
5.3.2 内存堆初始化 62
5.3.3 内存分配 64
5.3.4 内存释放 67
5.4 使用C库的malloc和free函数来管理内存 71
5.5 LwIP中的配置 72

第6章 网络数据包 74
6.1 TCP/IP的分层思想 74
6.2 LwIP的线程模型 75
6.3 pbuf结构体说明 76
6.4 pbuf的类型 77
6.4.1 PBUF_RAM类型的pbuf 78
6.4.2 PBUF_POOL类型的pbuf 78
6.4.3 PBUF_ROM和PBUF_REF类型的pbuf 80
6.5 pbuf_alloc() 81
6.6 pbuf_free() 84
6.7 其他pbuf操作函数 88
6.7.1 pbuf_realloc() 88
6.7.2 pbuf_header() 88
6.7.3 pbuf_take()、pbuf_copy()、pbuf_chain()和pbuf_ref() 88
6.8 网卡中使用的pbuf 88
6.8.1 low_level_output() 88
6.8.2 low_level_input() 91
6.8.3 ethernetif_input() 93

第7章 无操作系统移植LwIP 94
7.1 将LwIP添加到裸机工程 94
7.2 移植头文件 97
7.3 移植网卡驱动 103
7.4 LwIP时基 111
7.5 协议栈初始化 112
7.6 获取数据包 114
7.6.1 查询方式 114
7.6.2 ping命令详解 115
7.6.3 中断方式 116

第8章 有操作系统移植LwIP 119
8.1 向LwIP中添加操作系统 119
8.1.1 复制FreeRTOS源码到工程文件夹 119
8.1.2 添加FreeRTOS源码到工程组文件夹 120
8.1.3 指定FreeRTOS头文件的路径 120
8.1.4 修改stm32f10x_it.c 121
8.2 lwipopts.h文件需要加入的配置 122
8.3 sys_arch.c/h文件的编写 126
8.4 网卡底层的编写 136
8.5 协议栈初始化 138
8.6 移植后使用ping命令测试基本响应 141

第9章 LwIP一探究竟 142
9.1 网卡数据传入LwIP内核的流程 142
9.2 内核超时处理 142
9.2.1 sys_timeo结构体与超时链表 144
9.2.2 注册超时事件 144
9.2.3 超时检查 147
9.3 tcpip_thread线程 149
9.4 LwIP中的消息 151
9.4.1 消息结构 151
9.4.2 数据包消息 153
9.4.3 API消息 154
9.5 揭开LwIP的神秘面纱 158

第10章 ARP 159
10.1 数据链路层概述 159
10.2 MAC地址的基本概念 159
10.3 初识ARP 160
10.4 以太网帧结构 160
10.5 IP地址映射为物理地址 161
10.6 ARP缓存表 162
10.7 ARP缓存表的超时处理 165
10.8 ARP报文 167
10.9 发送ARP请求包 170
10.10 数据包接收流程 172
10.10.1 以太网中数据包的接收 172
10.10.2 ARP数据包处理 176
10.10.3 更新ARP缓存表 178
10.11 数据包发送流程 182
10.11.1 etharp_output() 182
10.11.2 etharp_output_to_arp_index() 185
10.11.3 etharp_query() 186

第11章 IP 193
11.1 IP地址 193
11.1.1 概述 193
11.1.2 IP地址编址 193
11.1.3 特殊IP地址 195
11.2 局域网和广域网的概念 196
11.2.1 局域网 196
11.2.2 广域网 196
11.3 网络地址转换 197
11.4 IP数据报 198
11.5 IP数据报的数据结构 202
11.6 IP数据报分片 204
11.7 IP数据报发送 208
11.8 IP数据报接收 214

第12章 ICMP 222
12.1 ICMP功能简介 222
12.2 ICMP报文结构 223
12.3 ICMP报文类型 224
12.3.1 ICMP差错报告报文 224
12.3.2 ICMP查询报文 226
12.4 LwIP中的ICMP实现 227
12.4.1 ICMP报文数据结构 227
12.4.2 发送ICMP差错报文 229
12.4.3 处理ICMP报文 231

第13章 TCP 235
13.1 TCP服务概述 235
13.2 TCP的特性 235
13.2