数据类型的定义
LWIP协议内部使用的数据类型的定义:u8_t, s8_t, u16_t, u32_t等。
邮箱和信号量
实现与信号量和邮箱操作相关的函数,比如建立、删除、等待、释放等。
如果是裸机,使用者必须自己去建立一套信号量和邮箱相关的机制。
LWIP使用邮箱和信号量来实现与上层应用与协议栈间、下层硬件驱动与协议栈间的信息交互。
实际上,LWIP只在一个进程内实现了各个层次的所有工作:
- LWIP完成相关初始化后,会阻塞在一个邮箱上,等待接收数据进行处理。
- 这个邮箱内的数据可能来自底层硬件驱动接收到的数据包,也可能来自应用程序。
- 当在该邮箱内取得数据后,LWIP会对数据进行解析,然后再依次调用协议栈内部上层相关处理函数处理数据。
- 处理结束后,LWIP继续阻塞在邮箱上等待下一批数据。
- 当然LWIP还有一大串的内存管理机制用以避免在各层间交互数据时大量的时间和内存开销。
信号量也可以用在应用程序与协议栈的相互通信中:
- 应用程序要发送数据了&#