基于SOPC 的嵌入式Web 服务器设计与实现
I 软件完成管脚的分配。最后生成配置文件,下载到开发板上。软件开发流程:在用SOPC Builder 进行硬件设计的同时,就可以开始编写独立于器件的C/C++软件,用户可以使用现成的软件库和开放的操作系统内核来加快开发进程。在NiosII IDE 中建立新的软件工程时,IDE 会根据SOPC Builder 对系统的硬件配置自动生成一个定制HAL(硬件抽象层)系统库。这个库能为程序和底层硬件的通信提供接口驱动程序,之后进行编译、调试、下载软件到开发板上。
5、软件实现
软件设计主要包括嵌入式操作系统的移植、网络协议栈的实现、应用级代码编写等部分。软件结构框图如3所示。
图3 SOPC系统软件结构框图
5.1、uC/OS-II 操作系统的应用
根据Web服务器的特点,设计必须满足实时性和并发性的要求,以便更好地支持TCP/IP运行时的多任务环境的调度,所以应用软件应该基于嵌入式实时操作系统。目前比较流行的嵌入式操作系统主要有VxWorks、Windows CE、uCLinux、uC/OS-II 等。考虑到uC/OS-II的规模较小、实时性和可靠性较高,Nios II IDE 开发环境对uC/OS-II的良好支持,故操作系统选择uC/OS-II[4]。它是一种可移植、可固化、可裁减、占先式的多任务实时操作系统内核。它通过为每个任务分配单独的任务堆栈来保存任务工作环境,提供任务管理与调度,任务间的同步、互斥与通信,时间和中断管理、内存的动态分配等多种系统服务。在程序设计时,将网络协议栈在其中一个任务中运行,而用户程序在另外的任务中运行。通过调用协议栈提供的API函数进行通信。
在本设计中uC/OS-II主要完成任务的管理与调度,在网络协议栈初始化后,使用标准套接字API创建新任务访问网络协议栈。在本设计中使用函数sys_thread_new()创建DHCP超时任务dhcp_timeout_task()来动态分配IP地址,创建HTTP任务http_task()管理HTTP连接并调用相关的子程序来为HTTP请求服务。这里使用的sys_thread_new()位于LwIP的操作系统封装层,实际上是调用uC/OS-II的OSTaskCteate()函数。通过创建消息邮箱、信号量实现任务与任务之间、任务与中断服务程序之间的同步与互斥,以保证它们协调运行。
5.2、LwIP网络协议栈的实现
LwIP(轻量级网络协议)是TCP/IP协议栈的一个实现。LwIP是一种专门针对嵌入式系统应用而设计的网络通信协议,由于LwIP实现的关键在于削减代码大小和内存消耗,但可以完成传统的TCP/IP协议的大部分功能,通常只需要大约40K的ROM和数十K的RAM即可运行。在保持协议分层体系结构的前提下,通过采用“零拷贝”技术提高实时性。
Nios II支持LwIP使用如下的3个基本任务[2]。这些任务在程序创建时添加后连续运行:首先,被协议栈使用的主任务。这个任务用来接收包,任务模块的主函数用于等待消息邮箱。当一个新的包到来时,产生一个中断请求,中断服务程序清除IRQ并且向消息邮箱发送一个消息。其次,新的消息激活接收任务。这一设计可以使中断服务程序尽可能快的执行,从而减少系统延时的影响。最后,实时器任务在于周期性地调用各种任务所需的时间。上述这些任务将在初始化成功后自动运行。系统初始化后,进入主程序部分。主程序包括两大部分:对接收到的以太网数据帧进行解包和对欲发送的数据进行封装并发送。图4为Web服务器软件框图。
图4 软件框架图
6、结语
经测试,本设计可以正常工作,达到了预期的效果。基于SOPC的嵌入式Web服务器,其功能可根据需要定制,非常灵活。该Web服务器不仅可以广泛应用于工业控制领域,实现小型工业监测系统网络化,具有良好的应用前景。
作者创新点:本文介绍了基于软核处理器的Web服务器实现方法,使设计变得灵活,嵌入式操作系统的引入,满足了设计对实时性的要求。
设计 实现 服务器 Web SOPC 嵌入式 基于 相关文章:
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)