一,移植综述
1.1,有操作系统的移植是在没有看操作系统的基础上进行的,需要对LWIPOPTS.H修改,然后还是要对sys_arch.c和sys_arch.h进行实现
有一个移植的说明文档是有sys_arch.txt有相关的说明的,FreeRTOS没有邮箱的概念,就用消息队列来实现,需要实现的内容如下
在操作系统环境下,
LwIP
会作为一个线程运行,线程的名字叫
tcpip_thread
,在初始 化 LwIP
的时候,内核就会自动创建这个线程,并且在线程运行的时候阻塞在邮箱上,等 待数据进行处理,这个邮箱数据的来源可能在底层网卡接收到的数据或者上层应用程序的 数据,总之,tcpip_thread
线程在获取到邮箱中的数据时候,就会退出阻塞态,去处理数据, 在处理完毕数据后又进入阻塞态中等待数据的到来,如此反复。
9.2
内核超时处理
超时处理是可以注册超时事件,超时处理函数和超时时间的
void sys_check_timeouts(void)
:这是用于裸机的函数,用户需要在裸机应用程序中周期
性调用该函数,每次调用的时候
LwIP
都会检查超时链表上第一个
sys_timeo
结构体是否到
期,如果没有到期,直接退出该函数,否则,执行
sys_timeo
结构体中对应的超时回调函数,
并从链表上删除它,然后继续检查下一个
sys_timeo
结构体,直到
sys_timeo
结构体没有超
时才退出。
ARP其实就是MAC地址和IP地址的映射