基于MicroBlaze软核处理器的嵌入式Web服务器设计详解
扫描二维码
随时随地手机看文章
由于Internet技术的渗透,嵌入式系统正变得越来越智能化并具有越来越多的网络友好特性。Web技术的飞速发展,给嵌入式系统进入Internet提供绝佳的途径。在现场仪表和企业设备层应用嵌入式技术是企业监控系统的发展趋势。与现场总线技术相比,嵌入式技术不仅为开发者提供了大量的工具和函数库,而且减少了传统的客户端,减少了二次开发的工作量;而把嵌入式技术和Internet技术结合起来,使得整个工控网络易于和Internet实现无缝连接;现在多数企业控制网络是通过专用线路进行数据通信,其通信介质、通信协议都是专用的,而Internet技术的渗透使嵌入式设备的远程控制和管理方式都有了改变,不再需要专用的通信线路,传输的信息也不再局限于数据信息。Web技术的发展、通信协议的公开、HTML语言的标准统一性,使得只要在嵌入式设备中有一个微型服务器,通过用任意一种Web浏览器,用户就可以监控现场数据和设备。
2 嵌入式软核处理器MicroBlaze
MicroBlaze是基于Xilinx公司FPGA的微处理器IP核,和其他外设IP核一起,可以完成可编程系统芯片(SoPc)的设计。MicroBlaze 32位软处理芯核运行速度为150 MHz,性能达100 D-MIPS。采用RISC架构和哈佛结构的独立32位指令和数据总线,可以全速度执行存储在片上存储器和外部存储器中的程序并访问其中的数据。支持CoreConnect总线的标准外设集合为MicroBlaze设计人员提供了兼容性和重利用能力。MicroBlaze内部有32个32位通用寄存器和2个32位特殊寄存器PC指针和MSR状态标志寄存器。为了提高性能,MicroBlaze还具有指令和数据缓存。所有的指令字长都是32位,有3个操作数和2种寻址模式。指令按功能划分有逻辑运算、算术运算、分支、存储器读/写和特殊指令等。指令执行的流水线是并行流水线,他分为3级流水:取指、译码和执行。
MicroBlaze软处理器可为您提供不同方法的灵活性。首先可以从处理器内核开始,构建能够准确满足设计需要的外设集合。由于只需要实现自己所需要的部分,因此避免了芯片资源浪费。因为不需要编写代码关闭/禁止不需要的处理器功能,因此降低了软件设计复杂性。创建专用处理器配置的工作也成为一项简单的任务,而为了满足技术规格的变化专用处理器配置随时可能需要改变。即使在实际应用5~6年后,连FPGA硬件本身可能也已经接近其生命期的终点时,只需要简单的利用同样的C代码将软处理器内核移植到新的FPGA硬件中就可以。硬件平台或许需要一定的PCB修改,但遗留下的代码仍然是可用的,不需要修改。
3 系统结构
在系统结构设计上,考虑现有的各种嵌入式网络实现方案,绝大多数嵌入式Internet都使用微控制器和相应的软件来实现。本文介绍的嵌入式Web服务器的设计则是采用基于FPGA的MicroBlaze软核处理器,其灵活性大大提高,而成本则可以大大降低,充分体现了可编程片上系统(SoPc)的优势。系统主要支持CoreConnect总线的标准外设集合,DDR SDRAM主要用来存放软件代码以及一些需要保存的参数,BRAM用来在系统运行时的代码和数据存储;网络接口芯片采用SMSC公司的IAN91C111芯片作为网络接口。该器件是一个以太网控制器,实现了网络7层协议栈中的物理层和MAC层的功能。他具有10 M/100 M自适应、双工/半工自适应等功能,非常适合嵌入式网络开发。LCD用来指示系统运行状态。整个系统的结构如图1所示。
4 硬件设计
本文在进行硬件设计的时候采用基于IP核的设计方法,并将大部分功能在单个FPGA芯片上予以实现。设计电路原理图之前,必须根据系统需求选择合适的IP核。所谓IP核,是指那些以硬件形式(硅片版图)或者软件形式(用Verilog、VHDL描述的RTL或者门级模型)存在的、具有特定功能的硬件电路。IP核通常分为硬核、固核与软核3种。根据系统的硬件开发环境以及性能需求,本文选择Xilinx公司开发的一系列软核产品,他们是用VHDL语言所描述的硬件模块,允许用户根据需要对各种参数进行配置,如数据通路带宽、优先进行速度优化还是资源优化等,因而应用非常灵活。系统所用到的软IP核产品有MicroBlaze,BRAM、定时器、通用异步收发器UART,以及用于外部功能扩展的OPB总线模块。
硬件设计使用的是ISE可编程逻辑器件集成开发环境。提供从设计输入到器件编程的全部功能。采用Xilinx公司的EDK开发工具可大大提高系统设计效率,他能够在图形化界面内定制一个从硬件到软件的完整系统。在EDK中包含了外设与MicroBlaze的接口,所以只需定义CPU与外设的接口即可。设计采用的CPU为MicroBlaze仅占用900个逻辑单元。在EDK下添加对应接口模块。然后生成对应的VHDL文件。同时,EDK还根据定制的结果,自动的生成针对特定硬件环境的C语言的头文件以及函数库,这在软件设计中会极大地减少软件开发人员的工作量。
本文采用的是Xilinx公司Virtex4系列FPGA芯片,最多能提供200 000个逻辑单元和多达64 kB的BRAM存储空间。由于FPGA芯片具有可反复更改的特性,因此有助于硬件系统的改进和不断升级。
由于在FPGA芯片上构造以太网物理层、MAC层电路较困难,本文将这些功能放到FPGA芯片的外面,使用LAN91C111芯片来实现以太网硬件接口功能。SMSC公司的LAN91C111是为了方便嵌入式应用系统连接到快速以太网而专门设计的,他实现CSMA/CD协议的物理层和媒体访问控制层(MAC)两个部分,并可以很方便地与许多嵌入式处理器进行数据交换。
5 软件设计
软件设计包括:操作系统移植、网络协议栈设计、文件系统生成、应用级代码编写等部分。
5.1 操作系统
为了简化设计,本文中的Web服务器采用单一线程,无需RTOS(实时操作系统)的支持。故采用EDK提供的仅支持单进程的standalone板支持包即可。
5.2 协议栈
系统采用的是EDK中包含针对MicroBlaze的网络协议栈,隐藏了低层硬件细节,以类似于Unix套接字的方式实现一个精简的网络协议栈Xilnet。他支持以下一些网络协议:IP,ARP,ICMP,UDP,TCP。调用如下函数初始化栈以及MAC地址和IP地址。
5.3 文件系统
为了支持HTTP协议,一个文件系统是必不可少的。本设计使用EDK提供的xilmfs文件系统对网页的静态页面和图片进行组织和存储。
调用mfs_file_open()和mfs_file_wrire()函数打开和创建文件系统。考虑到有限的系统资源,文件存放在DDR SDRAM中。
5.4 HTTP协议及其实现
嵌入式Web服务器技术的核心是HTTP(超文本传送协议)引擎。HTTP是WWW上的协议。HTTP协议使Web服务器和浏览器可以通过Web交换数据。他是一种请求/响应协议,即服务器等待并响应客户方请求。当用户要浏览服务器上的一个网页时,一个HTTP请求就会从用户的浏览器发到HTTP服务器。服务器响应这个请求,把指定的网页传送回来,用户才看到了网页。HTTP协议不维护与客户方的连接,他使用可靠的TCP连接,通常采用TCP的80端口。客户/服务器传输过程可分为4个基本步骤:浏览器与服务器建立连接;浏览器向服务器请求文档;服务器响应浏览器请求;断开连接。
服务器程序开始运行时,主进程就创建一个套接字,并与主机地址绑定到一起,随后置为被动*状态,等待客户端连接请求的到来,分别有xilsock_socket()创建一个套接字,xilsock_bind()绑定,xilsock_listen()*,xilsock_accept()接收来完成。一旦接收一个连接,xilsock_acept()会返回一个新的套接字描述符,主程序则开辟一个新的子程序来处理这个新的连接。这样系统可以同时接收多个客户端的请求。
如图2所示,首先创建套接字,将套接字与本地地址和端口绑定,并设置套接字处于*状态。Web服务器在接收一个连接请求后,读取用户的请求,根据用户的请求进行相应的处理。
当请求位静态文本时,文档直接提交输出,当请求位动态文本时,请求模块自动调用脚本引擎,将脚本替换位现场数据,再提交输出,当请求为带参数的执行命令时,请求解析器调用命令执行模块分析命令并控制监控前端。
这里并没有采用通常的CGI(Common Gateway Interface)技术对请求信息进行处理,而是将活动页面由加载进Web服务器的模块处理,因此处理速度比CGI程序更快、更高效。活动页面还可以处理表单、HTTP会话和方便的访问数据库。因此,活动页面对动态Web页面提供完整的服务器端支持。
6 结 语
本文介绍的基于MicroBlaze的嵌入式Web服务器可以实现预期功能,用户可以通过IE浏览器浏览存储到FLASH芯片中的网页。
CPU本身是以软核的方式实现,其功能可根据需要进行定制,非常灵活。EDK不但在硬件设计上提供了支持,在软件上也为设计者提供了较好的支持,提供了现成的网络协议栈。加上EDK提供的集成开发环境使得软件开发更加便利。采用这种方式的控制系统具有控制分散、开放性好、使用简单、稳定性好等优点,而且可以通过浏览器进行远程多点监控和远程支持,是未来控制系统发展的一个趋势。