首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Linux的SoPC应用系统设计 02

基于Linux的SoPC应用系统设计 02

选择参数时,可以使用默认值,而存储器参数可以选择容量大一些的。使用的PowerPC 405硬核,PPC的工作频率设置为100MHz, 参考时钟和系统的总线频率也分别设置为100MHz;使用的BRAM模块IBRAM和DBRAM速率分别设置为64Kb/s。最终定制的SoPC硬件系统如图4所示。

      2.2  SoPC的Linux系统构建
   
       在SoPC的硬件系统构建完成之后,利用EDK软件生成的板级支持包(BSP)配置编译内核。BSP包含了所选定处理器架构的属性文件以及相关硬件的驱动源文件。将这些文件加入到Linux内核中,然后配置内核选项选择对应的处理器架构、所选硬件的驱动模块以及需要的其他内核模块,之后再对完成配置的内核进行编译,生成Linux的内核image文件。
   
       生成内核image文件之后,还需要生成系统运行所需要的根文件系统。根文件系统中包含了嵌入式Linux系统的所有应用程序、库以及系统配置等相关文件。根文件系统中常用的程序和命令可利用开源软件Busybox构造。构造完成之后,在Busybox生成的目录和文件的基础上再构造根文件系统的目录树,并添加相关设备文件和配置文件以及系统运行时需要的脚本文件,从而形成最终的根文件系统。至此,就可以将文件系统作为映像编译到内核中,也可以通过网络使用NFS文件系统加载根文件系统。

      3  应用举例
   
       以一个多进程的嵌入式Web服务器用于实现控制远程设备的的开发为例,阐述在基于Linux的SoPC系统上开发应用程序的过程。嵌入式Web服务器的开发包括HTTP协议裁减和具体的应用程序实现。用户可以通过向Web服务器发送CGI请求的方式使服务器通过串口和外部设备通信,达到远程控制的目的。

      3.1 HTTP协议裁减
   
       嵌入式Web服务器主要基于HTTP协议进行设计,而HTTP协议的实现又是基于TCP/IP协议栈的。在Linux内核中,由于已经包含了TCP/IP协议栈的完整实现,从而为嵌入式Web服务器的实现提供了很好的基础。相对于在无操作系统环境的SoPC上实现Web服务器来说,基于Linux系统的开发可以节省大量的工作。
   
        HTTP协议是一个属于应用层的面向对象的协议,由于其采用简捷、快速的方式,适用于分布式超媒体信息系统[4]。嵌入式Web服务器根据不同的需要,实现的功能也不同。相对于完整的Web服务器,它需要实现的功能要简单得多[5]。本文的嵌入式Web服务器仅实现协议中最常用的部分。考虑到嵌入式系统的存储空间和处理能力,对HTTP协议进行了裁减。这不仅可以提高Web服务器的效率,也可以减少占用的空间,具有积极的意义。
   
        当客户机与Web服务器进行会话时,客户机首先通过SOCKET与服务器建立连接,连接之后便向服务器提出请求,请求信息包括希望返回的文件名和客户机信息等。客户机以请求头(包括HTTP方法和头字段[6])的形式将信息发送给服务器。HTTP方法常用的有GET、HEAD、POST,因此本文即采用GET、HEAD、POST三种方法。
   
      HTTP头字段包括general-header、request-header、response-header、entity-header四大类,而每一类中又定义了多个类型[6],其中的大部分都是不常用的,所以应根据需要选定几种类型。本文设计的服务器支持以下几种头类型:Date、Host、Server、Accept、Connection、Content-Type、Content-Length、Accept-Charset、 Accept-Language。
   
      服务器收到一个请求,就会立刻解释请求中所用到的方法,并开始处理,处理完成之后会发送应答消息。应答消息包含了状态码、一些头字段以及实体信息(即客户请求的服务器上的资源内容),其中HTTP协议的状态码也有四大类[6]。这些状态码详细说明了服务器的状态、出错信息以及对用户的指示。由于嵌入式Web服务器只需向用户提供服务,而无需向用户反馈具体的状态,因此,本文实现中只保留特定的几种错误信息,而省略了大部分的状态信息。

      3.2 支持多进程的嵌入式Web服务器的实现
   
       本系统的设计对HTTP协议进行了裁减,然后利用Linux系统提供的进程调度功能、网络通信功能(包括SOCKET、TCP连接等),使用C语言编写了一个支持多进程的Web服务器。实现的Web服务器接收客户端的请求,根据需要选择发送文件通过串口和外部设备通信,并将外部设备返回的结果发送给客户端。其功能描述如下:在指定的端口监听用户的HTTP请求,对该请求进行分析解释并执行相应的操作;将用户要求的内容或者出错信息以HTTP应答的方式返回给用户。其中,用户的请求分为CGI请求和非CGI请求,如果是CGI请求,则首先检查用户的权限和文件是否存在,然后新创建一个进程,并在该子进程中通过串口和外部设备通信,最后将串口返回的结果或者出错信息传送给Web服务器返回给用户;如果是非CGI请求,则只进行权限和文件检查,如果检查通过则发送该文件,否则给出出错信息。软件的工作流程如图5所示。
返回列表