![8bfa3fedd428c6557fc058b1d8017260.png](https://img-blog.csdnimg.cn/img_convert/8bfa3fedd428c6557fc058b1d8017260.png)
对于 LwIP 协议栈的移植来说,用户的主要工作是为其提供网卡驱动函数。LwIP 可以运行在多种不同的硬件平台上,配合不同型号的网络 Phy 芯片使用。LwIP 为不同的网卡芯片提供了统一的抽象驱动接口,用户根据使用的网卡芯片以及硬件平台,实现功能函数。
用户需要实现三项功能驱动:网卡的初始化函数,接收函数以及发送函数。本文将基于 Xilinx LwIP 例程讨论网卡的接收驱动编写。
网卡接收驱动的工作方式可以分为两类:以轮询或者中断方式从网络 Phy 芯片中接收数据包。在 Xilinx SDK example 中,Xilinx 提供的驱动函数使用 DMA 搬运数据,以中断方式工作。
接收驱动函数需要完成两项工作:
- 将从 Phy 芯片接收到的数据转移给 LwIP 所在的应用程序。
- 将数据封装成 LwIP 的数据结构,一般为 pbuf 数据包结构体,并调整 pbuf 链的前后指向关系。
接收驱动的工作流程
![2db257f4041e90d429f81768e1678c26.png](https://img-blog.csdnimg.cn/img_convert/2db257f4041e90d429f81768e1678c26.png)