1.带操作系统移植lwIP——旧版本
lwIP移植整体流程
- 准备OS源码:FreeRTOS官网下载 下载FreeRTOS源码包;
- 添加OS库到工程:把FreeRTOS源码包添加到工程当中;
- 工程中新建分组:添加FreeRTOS配置文件和FreeRTOS核心源码;
- 添加sys_arch.c:内核与操作系统交互的接口文件;
- 修改配置文件:针对操作系统移植,修改相应的文件。
下载OS源码
根据上面的链接进入官网下载即可
FreeRTOS官网下载
具体的配置,可以看正点原子的FreeRTOS的课程。
添加OS库到工程
在之前的裸机移植lwIP的基础上进行配置;
工程中新建分组
这一部分的配置原因,可以去看正点原子的FreeRTOS的课程,我之前也是有笔记的,知乎上面发了,csdn那时候没用markdown写就没发,可以去知乎搜一下,笔记的命名跟我现在这个就是一样的。
具体的话,如果只考虑使用,把例程拖进来也就OK了,FreeRTOS那块我自己学下来其实也就是调几个函数,大概了解也就Ok了。
添加sys_arch.c
修改配置文件
- 修改lwipopts.h:符合带操作系统的配置文件;
- 修改cc.h:注释掉重复变量;
- 修改lwip_comm.c/.h:删除lwip_periodic_handle函数和修改lwip_comm_init 函数;
- 修改ethernetif.c/.h:修改为带操作系统的网卡驱动;
- 修改ethernet.c:修改中断优先级。
- 修改lwipopts.h文件
FW_F4_V1.26.0\Projects\STM32469I_EVAL\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS\Inc
以上路径下的lwipopts.h替换本实验的lwipopts.h文件; - 修改cc.h
注释掉“typedef int sys_prot_t”; - 修改lwip_comm.c/.h
删除lwIP的轮询函数lwip_periodic_handle并修改lwip_comm_init函数;
直接替换成写好的lwip_comm.c/.h就可以了; - 修改ethernetif.c/.h文件
修改low_level_init以及ethernetif_input函数;
直接替换成写好的ethernetif.c/.h就可以了; - 修改ethernet.c
修改中断优先级,必须归FreeRTOS内核管理。
一些错误矫正
工程结构
这个函数是给我们来编写lwIP源码的。
2.带操作系统移植lwIP——新版本
这里的移植的区别,主要是lwIP协议的这一块,也就是之前裸机移植时候的区别点,新版本要添加pcf8574.c/.h文件来控制PHY芯片;带FreeRTOS之后没有什么大的区别,只有一个复制文件,文件夹是1.27.x的固件包里面搞出来的,我把他贴在下面:
- 修改lwipopts.h文件,从FW_F4_V1.27.0\Projects\STM32469I_EVAL\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS\Inc\路径下的lwipopts.h替换本实验的lwipopts.h文件。
总结
带操作系统的移植,新旧版本之间的操作没有什么区别,区别点都在lwIP裸机移植那边讲过了,相当于这里只是移植一下FreeRTOS,1.26和1.27这一方面没有改变。