电子与嵌入式系统设计丛书 LWIP应用开发实战指南 基于STM32作者:(中国)刘火良,杨森出版时间:2019年版丛编项: 电子与嵌入式系统设计丛书内容简介 本书以LwIP源码为核心,讲解TCP/IP协议栈的实现,讲解常见的网络协议,讲解LwIP各层之间的数据传递,*终辅以实战案例,教你如何连接各大云平台,配套野火STM32 M4/M7系列开发板,提供完整源代码,极具操作性。目录前 言第1章 网络协议概述 11.1 常用网络协议 11.2 网络协议的分层模型 21.3 协议层报文间的封装与拆封 3第2章 LwIP概述 52.1 LwIP的优缺点 52.2 LwIP的文件说明 62.2.1 获取LwIP源码文件 62.2.2 LwIP文件说明 82.3 LwIP的说明文档 112.4 使用vs code查看源码 142.4.1 查看文件中的符号列表和函数列表 142.4.2 函数定义跳转 152.5 LwIP源码里的示例 162.6 LwIP的3种编程接口 172.6.1 RAW/Callback API 172.6.2 Netconn API 182.6.3 Socket API 19第3章 开发平台 203.1 以太网概述 203.1.1 PHY层 203.1.2 MAC子层 213.2 STM32的ETH外设 233.3 MII和RMII接口 243.4 PHY:LAN8720A 253.5 硬件设计 273.6 软件设计 293.6.1 获取STM32的裸机工程模板 293.6.2 添加bsp_eth.c与bsp_eth.h 293.6.3 修改stm32f4xx_hal_conf.h文件 35第4章 LwIP的网络接口管理 374.1 netif结构体 374.2 netif的使用 414.3 与netif相关的底层函数 454.4 ethernetif.c文件内容 464.4.1 ethernetif数据结构 464.4.2 ethernetif_init() 474.4.3 low_level_init() 48第5章 LwIP的内存管理 505.1 几种内存分配策略 505.1.1 固定大小的内存块 505.1.2 可变长度分配 515.2 动态内存池 525.2.1 内存池的预处理 525.2.2 内存池的初始化 575.2.3 内存分配 585.2.4 内存释放 595.3 动态内存堆 615.3.1 内存堆的组织结构 615.3.2 内存堆初始化 625.3.3 内存分配 645.3.4 内存释放 675.4 使用C库的malloc和free函数来管理内存 715.5 LwIP中的配置 72第6章 网络数据包 746.1 TCP/IP的分层思想 746.2 LwIP的线程模型 756.3 pbuf结构体说明 766.4 pbuf的类型 776.4.1 PBUF_RAM类型的pbuf 786.4.2 PBUF_POOL类型的pbuf 786.4.3 PBUF_ROM和PBUF_REF类型的pbuf 806.5 pbuf_alloc() 816.6 pbuf_free() 846.7 其他pbuf操作函数 886.7.1 pbuf_realloc() 886.7.2 pbuf_header() 886.7.3 pbuf_take()、pbuf_copy()、pbuf_chain()和pbuf_ref() 886.8 网卡中使用的pbuf 886.8.1 low_level_output() 886.8.2 low_level_input() 916.8.3 ethernetif_input() 93第7章 无操作系统移植LwIP 947.1 将LwIP添加到裸机工程 947.2 移植头文件 977.3 移植网卡驱动 1037.4 LwIP时基 1117.5 协议栈初始化 1127.6 获取数据包 1147.6.1 查询方式 1147.6.2 ping命令详解 1157.6.3 中断方式 116第8章 有操作系统移植LwIP 1198.1 向LwIP中添加操作系统 1198.1.1 复制FreeRTOS源码到工程文件夹 1198.1.2 添加FreeRTOS源码到工程组文件夹 1208.1.3 指定FreeRTOS头文件的路径 1208.1.4 修改stm32f10x_it.c 1218.2 lwipopts.h文件需要加入的配置 1228.3 sys_arch.c/h文件的编写 1268.4 网卡底层的编写 1368.5 协议栈初始化 1388.6 移植后使用ping命令测试基本响应 141第9章 LwIP一探究竟 1429.1 网卡数据传入LwIP内核的流程 1429.2 内核超时处理 1429.2.1 sys_timeo结构体与超时链表 1449.2.2 注册超时事件 1449.2.3 超时检查 1479.3 tcpip_thread线程 1499.4 LwIP中的消息 1519.4.1 消息结构 1519.4.2 数据包消息 1539.4.3 API消息 1549.5 揭开LwIP的神秘面纱 158第10章 ARP 15910.1 数据链路层概述 15910.2 MAC地址的基本概念 15910.3 初识ARP 16010.4 以太网帧结构 16010.5 IP地址映射为物理地址 16110.6 ARP缓存表 16210.7 ARP缓存表的超时处理 16510.8 ARP报文 16710.9 发送ARP请求包 17010.10 数据包接收流程 17210.10.1 以太网中数据包的接收 17210.10.2 ARP数据包处理 17610.10.3 更新ARP缓存表 17810.11 数据包发送流程 18210.11.1 etharp_output() 18210.11.2 etharp_output_to_arp_index() 18510.11.3 etharp_query() 186第11章 IP 19311.1 IP地址 19311.1.1 概述 19311.1.2 IP地址编址 19311.1.3 特殊IP地址 19511.2 局域网和广域网的概念 19611.2.1 局域网 19611.2.2 广域网 19611.3 网络地址转换 19711.4 IP数据报 19811.5 IP数据报的数据结构 20211.6 IP数据报分片 20411.7 IP数据报发送 20811.8 IP数据报接收 214第12章 ICMP 22212.1 ICMP功能简介 22212.2 ICMP报文结构 22312.3 ICMP报文类型 22412.3.1 ICMP差错报告报文 22412.3.2 ICMP查询报文 22612.4 LwIP中的ICMP实现 22712.4.1 ICMP报文数据结构 22712.4.2 发送ICMP差错报文 22912.4.3 处理ICMP报文 231第13章 TCP 23513.1 TCP服务概述 23513.2 TCP的特性 23513.2 上一篇: 电子与嵌入式系统设计丛书 FPGA Verilog开发实战指南:基于Intel Cyclone IV(进阶篇) 刘火良,杨森 下一篇: 电子与嵌入式系统设计丛书 μC OS-III内核实现与应用开发实战指南 基于STM32 刘火良,杨森编著