微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Linux的SoPC开发

基于Linux的SoPC开发

时间:05-28 来源:互联网 点击:

PU、RAM和总线是必须的。由于芯片内部的BRAM只有128kb/s, 而下载Linux内核的.elf文件通常远大于这个容量,因此需要使用外部的存储单元。本文使用opb_sdram存储控制模块实现此功能。本文使用Uart16550控制模块,能方便地通过RS232端口观察测试的结果。为满足本文应用的需要,可以使用Uartlite模块实现RS232的COM2端口和外部设备通信的功能。添加Ethernet_Mac的IP模块,可使用以太网端口将开发板连接到网络上。为了调试的方便,可以加入GPIO模块。通过GPIO控制LED灯,可显示系统状态。若选择应用程序初始化硬件,当bit数据下载到FPGA系统正常运行时,可以观察到LED灯被点亮。另外,根据设计需求,也可以挂载用户定制的IP,以处理用户的特定的需求。

选择参数时,可以使用默认值,而存储器参数可以选择容量大一些的。使用的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协议进行

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top