多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
网卡是怎么接收数据的,我想也无需多说了,基本就是开发板上eth接收完数据后产生一个中断,然后释放一个信号量通知网卡接收线程去处理这些接收的数据,然后将数据这些数据封装成消息,投递到tcpip\_mbox邮箱中,LwIP内核线程得到这个消息,就对消息进行解析,根据消息中数据包类型进行处理,实际上是调用ethernet\_input()函数决定是否递交到IP层,如果是ARP包,内核就不会递交给IP层,而是更新ARP缓存表,对于IP数据包则递交给IP层去处理,这就是一个数据从网卡到内核的过程,具体见图 9‑1 ![](https://box.kancloud.cn/a1272f3bb71d1076b21588c20fc62503_1096x727.png) 从这个图中,我们也能很明显看到,用户程序与内核是完全独立的,只是通操作系统的IPC通信机制进行数据交互。