王亚丁+徐俊臣++李冠宇++邱文博++胡轶群++杨子原



摘 要 嵌入式设备常采用实时操作系统和网络协议栈的组合来实现网络通讯功能,本文基于FreeRTOS操作系统和LwIP协议栈为一款转发模块实现网络通讯功能。FreeRTOS和LwIP开源免费,移植简单,功能完善,配置灵活。本文介绍了FreeRTOS和LwIP的移植过程和配置方法,并给出了DHCP服务器和TCP协议的软件设计流程,验证了基于FreeRTOs和LwIP协议栈实现网络通讯的可行性。
【关键词】FreeRTOS LwIP 网络通讯 移植 TCP
当前主流的嵌入式网络设备所使用的操作系统有Linux、UCOSII、FreeRTOS、RTX等。Linux的网络协议栈完备,但内核移植裁剪较为复杂,开发难度较大;UCOSII参考资料多,但系统商用需付费;RTX(Keil开发)简单好用,自带RL_TCPnet协议栈,但是协议栈不开源,不便于调试和研究。本文基于FreeRTOS实时操作系统,采用第三方LwIP网络协议栈,实现网络通讯功能,为嵌入式网络设备提供了一种新的设计思路。
FreeRTOS具备良好的实时性、多任务功能,可移植裁剪,可灵活配置调度策略,RAM占用小,对系统资源要求低。最重要的是FreeRTOS完全开源免费,而且移植方法简单,在当前小型嵌入式操作系统市场使用率很高。LwIP是由瑞典计算机学院开发的一个开源的轻量级TCP/IP协议栈。LwIP的特点是在有无操作系统环境下都可以运行,提供完备的API接口,RAM消耗低。本文基于市面上的网络转发模块,进行FreeRTOS操作系统和LwIP协议栈的移植,并在移植好的工程上测试DHCP服务器、TCP通讯功能等,验证这种可靠实用的网络通讯解决方案。
1 硬件平台
本文采用的设备是一种能够将RS232串口数据转成网络数据的转发模块,模块的单片机采用ARM架构的STM32F429芯片,STM32F429基于Cortex-M4架构,具有浮点运算单元,2MB容量的FLASH,256KB的RAM,系统时钟频率能达到180MHz,外设丰富,最主要的是它具有以太网MAC接口,通过外接PHY芯片可以实现网络通讯功能。该模块的PHY芯片采用的是LAN8720,LAN8720是低功耗的10/100M以太网PHY芯片,支持通过RMII接口与以太网MAC层通信,内置10/100M全双工传输模块,支持HP Auto-MDIX自动翻转功能。转发模块网络部分硬件连接图如图1所示。
2 移植FreeRTOS操作系统
首先从官网下载FreeRTOS -8.2.3版本源码;然后在已有的工程模板(keil软件)上创建 FreeRTOS相关文件夹,添加源码文件到相应目录,添加后的工程目录如图2所示,红框内的文件就是添加的FreeRTOS源码,Source目录下主要是任务调度、消息队列、定时器等操作系统基本功能的实现,Ports目录下是操作系统与处理器平台架构相关的接口文件,Port.c是支持Cortex-M4架构的,Heap_4.c是一种动态内存使用方法。
FreeRTOSConfig.h是操作系统的配置文件,配置选项至关重要,决定了系统的功能和性能。移植后主要的配置功能有:使能抢占式调度器;系统主频 180MHz;系统时钟节拍 1KHz,即 1ms;系统最大优先级号;定义堆大小,用于动态内存申请,任务栈;定义系统可以使用信号量。除此之外,移植中需要注意的地方是要加入三个宏定义,将STM32F429原本的SVC_Handler,PendSV_Handler,SysTick_Handler中断函数定义为FreeRTOS内部定义的三个函数,因为FreeRTOS对这三个系统中断有特殊的处理过程。至此,FreeRTOS移植基本完成,可以在后续软件工程中使用创建线程,创建信号量、消息队列等API函数来实现任务间的调度和通信了。lwip freertos
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35742-1.html
我们有理由加大军费投入
才能具备基本的判断分析能力
函数加油