说明:
- 工程使用
board\ALIENTEK_STM32F429\KEIL\tcp_server_base_lwip
,且并未在实际的开发板上运行(没有对应的开发板)。 - 这里只分析send的流程
- 代码所在文件是文件名带有有下划线的那个
调用send函数
宏替换为lwip_send()
下面这个函数的第一个参数是一个函数指针:
现在回头看lwip_netconn_do_write()
,它就是上图中442行的fn
其中netif是从一个全局列表中找到的一个元素
netif是一个全局变量,它的初始化要在ethernetif.c中寻找
etharp_output()
有三条返回路径:
无论那条路,最终还是调用ethernet_output()
又遇到了netif:
仍然在ethernetif.c中寻找其初始化:
在ethernetif_drv_write()
中会遇到另外一个全局变量:ethernetif_drv
ethernetif_drv
的初始化是通过ethernetif_drv_register()
完成的,这个函数在lwip.c中
现在已经到了BSP(board surport pack)层了,跟硬件相关的驱动层
这里感觉应该是通过设置标志,来物理发送数据