你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

【赛灵思中国通讯】55期:如何将PetaLinux移植到Xilinx FPGA上

发布者:jackzhang 时间:2015-04-18 19:32:59

用户可轻松将这款高稳健操作系统安装到目标FPGA平台上,以供嵌入式设计项目使用。

从最初不起眼的胶合逻辑开始,FPGA已经历了漫长的发展道路。当前FPGA的逻辑容量和灵活性已将其带入了嵌入式设计的中心位置。目前,在单个可编程芯片上可实现一个完整系统,这种架构有助于软硬件的协同设计,并能将软硬件应用进行集成。

这些基于FPGA的嵌入式设计种类需要稳健的操作系统。PetaLinux应运而生,已成为众多嵌入式设计人员青睐的对象。它以开源免费的方式提 供,支持包括赛灵思MicroBlaze® CPU和ARM®处理器在内的多种处理器架构。要将PetaLinux移植到特定的FPGA上,必须针对目标平台定制、配置和构建内核源代码、引导载入程 序、器件树和根文件系统。

对于PES大学和C-DOT的一个设计项目而言,我们的研发团队准备移植PetaLinux并在采用Kintex®-7 XC7K325T FPGA的赛灵思KC705评估板上运行多个PetaLinux用户应用。结果证明整个过程相当便捷。

选择PetaLinux的原因

在详细介绍具体做法之前,有必要花点时间来探讨针对基于FPGA的嵌入式系统提供的操作系统选项。PetaLinux是FPGA上最常用的操作系 统,另外还有μClinux 和Xilkernel。μClinux为Linux发行版,是一款包含小型Linux内核的移植型Linux操作系统,适用于无存储器管理单元(MMU) 的处理器[1]。μClinux配备有各种库、应用和工具链。Xilkernel就其本身而言,是一款小型、高稳健性、模块化内核,能够提供高于 μClinux 的定制性能,有助于用户通过定制内核来优化其设计尺寸与功能[2]。

同时,PetaLinux也是一款完整的Linux发行版及开发环境,适用于基于FPGA的片上系统(SoC)设计。PetaLinux包含预配置 二进制可引导映像、面向赛灵思器件的完全可定制Linux 以及配套提供的PetaLinux软件开发套件(SDK)[3]。其中SDK包括用于自动完成配置、构建和部署过程中各种复杂工作的工具和实用程序。赛灵 思提供可免费下载的PetaLinux开发包,其中包括针对各种赛灵思FGPA开发套件而设计的硬件参考项目。同时包含在内的还有适用于赛灵思FPGA的 内核配置实用程序、交叉编译器等软件工具、硬件设计创建工具以及大量其它设计辅助功能。

据报道,Xilkernel 的性能优于μClinux[4],而PetaLinux的性能又优于Xilkernel [5]。由于这个原因,特别是由于已针对我们赛灵思目标板提供的软件包原因,我们为我们的项目选择了PetaLinux。移植PetaLinux的另一大 优势是用户可以轻松实现远程编程。这就意味着用户可使用远程接入方式,通过远程登录,采用新的配置文件(或比特流文件)加载FPGA目标板。

有两种方法可以创建用于构建PetaLinux系统的软件平台:在Linux终端上使用PetaLinux命令或通过下拉菜单使用GUI。

开始安装

下面详细介绍我们项目团队安装PetaLinux的方法。第一步,我们下载了PetaLinux软件包12.12版以及用于Kintex-7目标板 的电路板支持包(BSP)。然后运行了PetaLinux SDK安装程序,并在控制台上使用下列命令把SDK安装到了/opt/Petalinux-v12.12-final目录下:

@ cd /opt

@ cd /opt/PetaLinux -v12.12-final-full.tar.gz

@ tar zxf PetaLinux-v12.12-final-full.tar.gz

随后,我们把从赛灵思网站获得的PetaLinux SDK许可证复制并拷贝到.xilinx和.Petalogix文件夹中。接下来,我们使用下列命令获取适当设置,设置了SDK的工作环境:

@ cd /opt/PetaLinux-v12.12-final

@ source settings.sh

为验证工作环境是否设置正确,我们使用了以下命令:

@ echo $PETALINUX

如果环境设置正确,将显示PetaLinux的安装路径。在本案例中,PetaLinux的安装路径是 /opt/PetaLinux-v12.12-final。

图1:用于用户设置的Linux终端窗口截屏

接下来的工作是安装BSP,其中包含必要的设计文件、配置文件和预构建软硬件包。这些软硬件包已经通过测试,可随时下载到目标板上。另外软件包还可 用于在快速仿真器(QEMU)系统仿真环境下的引导。为了安装BSP,我们在path /opt中创建了一个名为“bsp”的文件夹,并使用下列命令复制了KC705 BSP的ZIP文件:

@ cd /opt/PetaLinux-v12.12-final-full

@ source settings.sh

@ source /opt/Xilinx/14.4/ISE _DS/settings32.sh

@ PetaLinux-install-bsp /bsp/Xilinx-KC705

-v12.12- final.bsp

构建为新平台定制的PetaLinux系统,有两种创建和配置软件平台的方法。一种方法是使用Linux终端,在PetaLinux命令对应的路径 位置使用PetaLinux命令,如图1所示。第二种方法是通过下拉菜单使用GUI,如图2所示。您可使用其中任何一种方法来选择平台,配置Linux内 核,配置用户应用和构建镜像。在操作系统安装完成后,就可使用PetaLinux控制台。而使用GUI则需要完成PetaLinux SDK插件的安装。完成该插件的安装后,就可使用PetaLinux Eclipse SDK中提供的PetaLinux GUI设置各种配置(图2)。该GUI具有各种特性,如用户应用和库开发,以及PetaLinux及硬件平台的调试、构建和配置等。

硬件构建

我们为项目使用了基于Kintex-7 FPGA的KC705评估板。设计需要的硬件接口有用于监控输出的RS232接口、用于编程FPGA的JTAG接口以及用于远程编程的以太网接口。除了 PetaLinux SDK,所推荐设计需要的其它软件还包括Xil-inx Platform Studio (XPS) [6,7] 和赛灵思软件开发套件(SDK)[7]。

图2:用于用户设置的PetaLinux SDK菜单截屏

在该嵌入式设计的硬件部分,我们的第一项任务就是使用XPS中的基本系统构建器(BSB)设计基于MicroBlaze处理器的硬件平台。BSB允 许选择目标板上提供的一系列外设。您还可根据应用需求添加或删除外设。我们所推荐应用采用的内核或外设集包括带8Mb存储器的外部存储器控制器、在中断情 况下启用的定时器、波特率为115,200Bps的RS232 UART、以太网、非易失性存储器以及

LED。完成选择后,我们就获得了硬件外设及其总线接口(图3)。对于基于MicroBlaze处理器的设计,PetaLinux需要支持MMU的CPU。因此我们在XPS窗口中双击MicroBlaze_0实例,选择了带MMU的低端Linux。

图3:FPGA的硬件配置

此时硬件设计已完成。现在可以使用第一阶段引导载入程序引导该内核。

接下来,我们使用三步转换流程将硬件配置转换为比特流。首先,我们使用XPS生成了代表嵌入式硬件平台的网表。随后,我们将设计映射到FPGA逻辑 中。最后我们将实现的设计转换为能够下载到FPGA上的比特流。XPS的最终输出是system.bit和sys-tem_bd.bmm文件。

生成比特流后,我们将硬件平台描述导出到SDK,以便在SDK中观察目标硬件平台。导出的系统xml文件包含SDK编写应用软件并在目标硬件平台上 对其进行调试所需的信息。我们的下一项任务是使用Xilinx Tools → Repository → New 在SDK中添加一个PetaLinux库,然后选择PetaLinux的安装路径。在本实例中,该路径为$PetaLinux/Hardware /edk_user_repository。

接下来,我们使用File → Board support package → PetaLinux创建了PetaLinux BSP。我们根据所需的应用选择必要的驱动程序,配置了PetaLinux BSP。随后我们通过构建BSP并创建和配置第一阶段的引导载入程序应用(fs-boot),引导了内核。该BSP可建立硬件和引导应用之间的交互。 SDK的输出为fs-boot.elf。可使用数据到存储器转换器命令data2mem

将system.bit、system_bd.bmm和fs-boot.elf 合并为一个名为download.bit的统一比特流文件,用作最终的FPGA比特流。

此时硬件设计已完成,其它方面还包括一个MicroBlaze内核和运行其上的PetaLinux操作系统。现在我们可以使用第一阶段的引导载入程序引导内核。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了