微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 如何将PetaLinux移植到Xilinx FPGA上

如何将PetaLinux移植到Xilinx FPGA上

时间:04-13 来源:互联网 点击:
硬件构建

我们为项目使用了基于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操作系统。现在我们可以使用第一阶段的引导载入程序引导内核。

构建软件

完成硬件平台的构建后,我们使用下列命令创建了针对硬件的定制PetaLinux软件平台:

$ cd/opt/PetaLinuxv12.12

$ PetaLinux-new-platform –c <CPU-ARCH> –v <VENDOR> –p <PLATFORM>

其中–c <cpu-arch>为支持的CPU类型(这里是MicroBlaze处理器)、–v <vendor>为厂商名称(这里是赛灵思),而–p <platform>则为产品名称(这里是KC705)。软件平台的配置文件在安装PetaLinux的目录下生成,即/opt/PetaLi-nuxv12.12/software/ PetaLinux-dist/vendors/Xilinx/ KC705。


图4:内核配置菜单

为定制与硬件匹配的软件平台模板,我们使用PetaLinux-copy-autoconfig命令将现有平台配置与内核配置进行了合并。该命令可生成硬件配置文件Xilinx-KC705.dts、xparame-ters.h 和 config.mk。

我们使用GUI(PetaLinux SDK → Kernel Configuration)打开内核配置菜单,配置了Linux内核。此外,您也可以在Linux终端上使用下列命令完成该工作:

$ cd /opt/PetaLinux_v12.12 $ PetaLinux-config-kernel

我们在内核配置弹出窗口中启用该应用的驱动程序(如图4所示)。为通过用户空间输入/输出(UIO)接口访问设备,完成所提出的工作,我们在内核配置菜单中启用了UIO驱动程序。

内核配置完成后,我们设计了一些应用。PetaLinux可提供用于C语言和C++编程的用户应用模板[8]。这些模板包括应用源代码和Makefile文件,方便为目标芯片配置和编译应用并将其安装在根文件系统中。创建新的PetaLinux用户应用,既可使用GUI(File → PetaLinux New Application),也可在Linux终端上输入下列命令:

$ cd /opt/PetaLinux_v12.12 $ PetaLinux-config-apps

随后我们为该用户应用起了个文件名。在本实例中,我们创建了gpio-dev-mem-test和gpio-uio-test用户应用,并根据应用要求修改了模板源代码。

接下来我们使用GUI构建了PetaLinux系统映像(如图2所示)。此外,您还可以在Linux终端上使用make命令完成该任务,如下图所示:

$ cd $PETALINUX/software/ PetaLinux-dist $ make

支持操作系统(OS)和定制用户应用的软件平台以及我们前文讨论过的硬件设计现已可供使用。

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

网站地图

Top