不管是裸机还是OS ,都分为三个模块
上层
协议栈(包括发数据)
收数据
下面只考虑收数据在中断中.
OS 这三者之间是 通过 mbox 通信 ,sem 同步的.这三者分别属于三个线程(其中一个是中断)
裸机三者之间是通过函数调用实现的,这三者在同一个线程内.(其中一个是中断)
- 上层 协议栈 收数据之间的关系
上层调用 api 并引用协议层
api 分为 netconn api, socket api, raw api
协议栈调用 mac_send 接口发送数据
中断处理函数收数据,并引用协议栈.
这里模块之间的关系说了两个关键字,调用和引用
调用就是函数调用
引用对于OS来说是mbox,对NO OS来说是 函数调用
数据链路层包括了 mac 芯片的驱动及 arp模块.
ip层包括了 ip模块 icmp模块
传输层包括了 tcp udp