1、不管是裸机还是OS ,都分为三个模块

上层
协议栈(包括发数据)
收数据

下面只考虑收数据在中断中.
OS 这三者之间是 通过 mbox 通信 ,sem 同步的.这三者分别属于三个线程(其中一个是中断)
裸机三者之间是通过函数调用实现的,这三者在同一个线程内.(其中一个是中断)

2、上层 协议栈 收数据之间的关系

上层调用 api 并引用协议层
api 分为 netconn api, socket api, raw api

协议栈调用 mac_send 接口发送数据

中断处理函数收数据,并引用协议栈.

这里模块之间的关系说了两个关键字,调用和引用
调用就是函数调用
引用对于OS来说是mbox,对NO OS来说是 函数调用

3、协议栈分层及函数调用流程图
LWIP架构及LWIP协议栈

数据链路层包括了 mac 芯片的驱动及 arp模块.
ip层包括了 ip模块 icmp模块
传输层包括了 tcp udp

相关文章: