logo资料库

很实用的系统应用软件总体框架图,包括当前基本软件构架.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
1软件总体架构图
2 MicroBlaze IP核设计
3 移植uclinux
4.1 移植工业以太网协议
4.2 移植BOA
4.3 CGI网关接口程序
4.4 动态网页技术
5 MicroBlaze uClinux Networking
6 ADC数据采集
1 软件总体架构图 软件结构如图 1.1 所示: 图 1.1 FPGA 数据采集软件架构图 以上是系统的软件结构框图,我们下面将就具体每一个步骤的设计进行一个简要的描 述: 2 MicroBlaze IP 核设计 IP 字面意思是知识产权,在微电子领域,具有知识产权的功能模块成为 IP Core 或 IP 核。IP 可以用来生成 ASIC 和 PLD 逻辑功能块,又称为虚拟器件 VC。 IP 核可以有很多种,比如 UART 、CPU、以太网控制器、PCI 接口等。根据 IP 核描述的所在集成电路的设计层次,IP 可以分为硬 IP、软 IP、固 IP。硬 IP 的芯 片中物理掩膜布局已经得到证明,所有的验证和仿真工作都已经完成,用它可以 直接生产硅片,系统设计者不能再对它进行修改。而软 IP 是以行为级和 RTL 级 的 Verilog 或 VHDL 代码的形式存在,它要经过逻辑综合和版图综合才能最终实 现在硅片上。固 IP 则介于两者之间。 Xilinx 公司的MicroBlaze32位软处理器核是支持CoreConnect总线的标准 外设集合。MicroBlaze处理器运行在150MHz时钟下,可提供125 D-MIPS 的性能, 非常适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。 1.MicroBlaze 的体系结构 MicroBlaze是基于Xilinx公司FPGA的微处理器IP核,和其它外设IP核一起, 可以完成可编程系统芯片(SOPC)的设计。MicroBlaze处理器采用RISC架构和哈佛 结构的32位指令和数据总线, 可以全速执行存储在片上存储器和外部存储器中 的程序, 并访问其中的数据, 如图4.1所示
图2.1 MicroBlaze 内核结构框图 (1)内部结构 MicroBlaze 内部有32个32位通用寄存器和2个32位特殊寄存器—— PC指针 和MSR状态标志寄存器。为了提高性能,MicroBlaze还具有指令和数据缓存。所 有的指令字长都是32位,有3个操作数和2 种寻址模式。指令按功能划分有逻辑 运算、算术运算、分支、存储器读/写和特殊指令等。指令执行的流水线是并行 流水线, 它分为3级流水:取指、译码和执行,如图4.2所示。 (2)存储结构 图2.2 MicroBlaze 的流水线 MicroBlaze是一种大端存储系统处理器,使用如图4.3所式的格式来访问存 储器。 (3)中断控制和调试接口 图2.3 大端数据格式 MicroBlaze 可以响应软件和硬件中断,进行异常处理, 通过外加控制逻 辑, 可以扩展外部中断。利用微处理器调试模块(MDM)IP核,可通过JTAG接口来 调试处理器系统。多个MicroBlaze处理器可以用1个MDM来完成多处理器调试。 (4)快速单一链路接口 MicroBlaze处理器具有8个输入和8个输出快速单一链路接口(FSL)。FSL通 道是专用于单一方向的点到点的数据流传输口。FLS和MicroBlaze的接口宽度是 32位。每一个FSL通道都可以发送和接收控制或数据字。 2. CoreConnect 技术
CoreConnect是由IBM开发的片上总线通信链,它使多个芯片核相互连接成为 一个完整的新芯片成为可能。CoreConnect技术使整合变得更为容易,而且在标 准产品平台设计中, 处理器、系统以及外围的核可以重复使用, 以达到更高的 整体系统性能。 Xilinx将为所有嵌入式处理器用户提供IBM CoreConnect许可,因为它是所 有Xilinx 嵌入式处理器设计的基础。MicroBlaze处理器使用了与IBM PowerPC 相同的总线,用作外设。虽然MicroBlaze软处理器完全独立于PowerPC,但它让设 计者可以选择芯片上的运行方式,包括一个嵌入式PowerPC,并共享它的外设。 CoreConnect总线架构如图4.4所示。它包括片上外围总线(OPB),处理器本 机总线(PLB),设备控制寄存器(DCR)总线以及1个总线桥和2个判优器。 图2.4 CoreConnect 总线架构 (1)片上外设总线(OPB) 内核通过片上外设总线(OPB)来访问低速和低性能的系统资源。OPB是一种 完全同步总线, 它的功能处于一个单独的总线层级。它不是直接连接到处理器 内核的。OPB接口提供分离的32 位地址总线和32位数据总线。处理器内核可以借 助“PLB to OPB”桥,通过OPB访问从外设。作为OPB总线控制器的外设可以借助“OPB to PLB”桥,通过PLB访问存储器。 (2)处理器本机总线(PLB) PLB接口为指令和数据一侧提供独立的32位地址和64位数据总线。PLB支持 具有PLB总线接口的主机和从机通过PLB信号连接来进行读写数据的传输。总线架 构支持多主从设备。每一个PLB主机通过独立的地址总线、读数据总线和写数据 总线与PLB连接。PLB从机通过共享但分离的地址总线、读数据总线和写数据总线 与PLB连接, 对于每一个数据总线都有一个复杂的传输控制和状态信号。为了允 许主机通过竞争来获得总线的所有权, 有一个中央判决机构来授权对PLB的访 问。 (3)设备控制寄存器总线(DCR) 设备控制寄存器总线(DCR)是为在CPU通用寄存器(GPRs)和DCR的从逻辑设
备控制寄存器(DCRs)之间传输数据而设计的。 3.MicroBlaze 的开发 应用 EDK(嵌入式开发套件)可以进行 MicroBlaze IP 核的开发。工具包中集 成了硬件平台产生器、软件平台产生器、仿真模型生成器、软件编译器和软件调 试工具等。EDK 中提供一个集成开发环境 XPS(Xilinx Platform Studio),以便使 用系统提供的所有工具,完成嵌入式系统开发的整个流程。EDK 中还带有一些外 设接口的 IP 核,如 LMB、OPB 总线接口、外部存储控制器、SDRAM 控制器、UART、 中断控制器、定时器等。利用这些资源,可以构建一个较为完善的嵌入式微处理 器系统。在 FPGA 上设计的嵌入式系统层次结构为 5 级,可在最低层硬件资源上 开发 IP 核,或利用已开发的 IP 核搭建嵌入式系统,这是硬件开发部分;开发 IP 核的设备驱动、应用接口(API)和应用层(算法),属软件开发内容。 利用 MicroBlaze 构建基本的嵌入式系统如图 4.5 所示。通过标准总线接口 ——LMB 总线和 OPB 总线的 IP 核,MicroBlaze 就可以和各种外设 IP 核相连。 图 2.5 MicroBlaze 系统架构图 EDK 中提供的 IP 核均有相应的设备驱动和应用接口,使用者只需利用相应 的函数库, 就可以编写自己的应用软件和算法程序。对于用户自己开发的 IP 核,需要自己编写相应的驱动和接口函数。软件设计流程如图 4.6 所示。 图 2.6 软件开发流程 3 移植 uclinux 首先不管什么平台,移植 uclinux,整个流程都遵从于: Kernel preparation —> isntall BSP —> Build hardware platform —> Memory test —> Build kernel image —> Download 具体来说,如下图 4.7 所示:
图 3.1 uclinux 移植流程 1.搭建开发环境 操作系统:Redhat Hat Linux 9,安装的时候添加开发和编译环境。(编译内 核)Windows(安装 EDK) 交叉编译工具:针对不同的 CPU 系列,有不同的编译环境,通常,程序是在一 台计算机上编译,然后再分布到将要使用的其他计算机上。当主机系统(运行编 译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程 就叫做交叉编译。建立一个交叉编译工具链是一个相当复杂的过程,网上有一些 编译好的可用的交叉编译工具链可以下载。下载并安装好,我们的编译环境就搭 建好了。 (1) 下载并创建 BSP 从 petalogix 站点下载 BSP,并安装到电脑上。 把在 EDK 下生成的包含硬件系统信息的“auto-config.in”文件复制到 linux 的 /home/devel/src\uClinux-2.4.x\arch\microblaze\platform\uclinux-auto 路径下。编译 器需要从 auto-config.in 文件里知道“the address map and the processor system”以 及其它相关信息。 (2) 配置内核 在网站上下载源代码包,并安装在系统的任意目录。此时,就可以使用命令来进 行内核的配置了: $cd~/uClinux-dist $make menuconfig 这里,我们需要进行一系列内核配置的选择。
(3) 编译内核生成 image 文件 $cd ~/uClinux-dist $ make dep $ make clean $ make 这个过程期间将完成下面的内容: (Build kernel) 编译内核 编译 uclinux 的 C 库 (C libraries ) 编译用户程序 (user applications) 转换成二进制文件 编译内核文件系统 合并内核和文件系统为一个二进制文件 编译成功,你就会在 uClinux-dist 的目录下发现一个新的目录 images。里面 就包含了你编译成功的系统文件,image.elf 和 image.bin 两个文件。 (4) 下载内核文件到目标板 将在上面编译生成的内核文件 image.bin 下载到目标板上去并运行. 4.1 移植工业以太网协议 由于 Spartan-3E 只提供了物理层(PHY)的网络控制器,所以对于处理本装 置的物理层以上的网络设备,需要重新制定适合本系统的网络协议。 工业以太网 EtherNet/IP,是一种适用于工业环境的通讯体系,能够在广阔 的区域中支持大量现场设备的连接。它采用通用工业协议(CIP)作为其应用层 协议。CIP 协议支持各种控制、配置和信息处理服务,包括显式报文(用于信息 传输,灵活的报文交换)以及隐式报文(用于控制和实时 I/O 数据的传输),支 持轮询、周期和状态改变数据传输触发机制,点对点单播和广播数据传输方式[3]。 OE 服务的设计简化了 EtherNet/IP 的移植,只需要修改操作环境文件来适合 FPGA 操作体系。 4.2 移植 BOA 从 www.boa.org 下 载 一 个 主 流 版 本 的 BOA 源 码 包 , 本 系 统 用 的 是 boa-0.94.13.tar.gz。 第一步:修改 Makefile 文件,编译 BOA 源码,生成 BOA 可执行文件。 修改 Makefile 文件,因为我们要编译的是二进制代码,所以必须修改 Makefile 中的 CC 和 CPP, 然后运行 make 进行编译,得到可执行程序 BOA。 第二步:配置 BOA。 BOA 启动时将加载一个配置文件 boa.conf,在 boa 程序运行前,必须首先编 辑该文件。在 Boa 源码目录下已有一个示例 boa.conf,可以在其基础上修改。
配置好的主要内容如下: User nobody Group 0 ServerName XilinxFPGA ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log DocumentRoot /var/www MimeTypes /etc/mime.types ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 据此 配置, 需要 创建日志 文件目录 /var/log/boa, HTML 文档 的主目录 /var/www,将静态网页存入该目录下,CGI 脚本所在目录/var/www/cgi-bin,将 cgi 的脚本存放在该目录下。 4.3 CGI 网关接口程序 CGI(通用网关接口)提供 Web 服务器一个执行外部程序的通道,这种服务 端技术建立了 Web 浏览器与 Web 服务器之间的交互。首先,浏览器将远程客户端 发送的请求送到 Web 服务器,Web 服务器将数据使用 STDIN 送给 CGI 程序,执行 CGI 程序后获得缓冲区中的设备信息,最后,使用 STDOUT 输出包含工业设备信 息的 HTML 形式的结构文件,经 Web 服务器送回浏览器,显示给远程客户端。 CGI 程序可以用 C 语言编写,并且能够嵌入 HTML 脚本。经过编译器编译以 后,CGI 程序可以使用 GET、POST 或直接的 URL 参数传递方法与远程客户端通信。 以下是将采集到的设备数据显示到网页上的一段 CGI 程序,其中用到的数据库是 SQLite。SQLite 是用一个小型 C 库实现的一种强有力的嵌入式关系数据库管理 体制,它在体积与功能之间做到了较好的平衡,是理想的嵌入式数据库。 #include #include "sqlite3.h" main(){ … sqlite3* p_db; sqlite3_open("mydb", &p_db);/*打开数据库*/ /*执行 SQL 语句选择 alarm 表中的所有记录,并在查询结果的每一行上执行回调函*/ ret=sqlite3_exec(p_db, "select * from alarm;", callback,0, &errmsg); … sqlite3_close(p_db); /* 关闭数据库*/ } int callback(void *p_data, int n_columns, char **column_names, char **column_values){ /*回调函数*/
int i; for(i=0; i < n_columns; i++) printf("%s=%s\n",column_names[i],column_values[i]? column_values[i]:"NULL");/*打印出查询结果*/ return 0; } 4.4 动态网页技术 通过后期的软件设计和界面设计,实现服务器端和客户端间的通信的B/S结 构,用户不需要在客户机一端安装数据检测的客户端即可以在远程进行设备的数 据采集并进行故障的诊断,从而形成一个开放式的远程监测与故障诊断系统。 系统动态页面效果如图 3.4 所示: 图 4.1 系统动态页面效果图 5 MicroBlaze uClinux Networking uClinux 最突出的一个地方就是它配套的网络协议以及工具。这里我们说明 怎样将 TCP/IP 协议配置起来,并让它在我们的目标板上运行起来。 (1)准备工作: 1. 确定 uClinux 源码包是最新版本,并且与 uClinux CVS 合成。 2. 下载并使用了必要的补丁。 3. 确定使用最新的 gcc toolchain。 (2)内核配置: 在 uClinux-dist 文件夹下运行“make menuconfig”,并按照下面的示意选 择: Target Platform Selection [*] Customize Kernel Settings Processor type and features [*] Ethernet driver General Setup [*] Networking support Networking Options
分享到:
收藏