文章目录
1. 概述
在进行Zynq-7000的Linux系统开发时,Xilinx官方提供了一个名为petalinux的工具。该工具运行在pc端的linux环境下,使用这个工具可以为目标板有量身定制kernel、rootfs等。该工具可与vivado设计工具一起配合使用,旨在简化 Zynq-7000 的Linux系统开发过程,提高设计生产力。本文将介绍petalinux定制Linux过程,给广大初学者提供参考。
2. 安装及环境设置
2.1 安装petalinux
PC端开发环境:ubuntu 16.04 LTS
petalinux版本:2018.3;安装文件:petalinux-v2018.3-final-installer.run
将安装文件petalinux-v2018.3-final-installer.run拷贝到ubuntu系统中,打开命令行终端并运行
./petalinux-v2018.3-final-installer.run,安装过程和window上软件的安装过程相同,在这里不做赘述。安装位置选择在/opt/petalinux/v2018_3。
安装完成后,在安装根目录/opt/petalinux/v2018_3下有如下文件

在tools/linux-i386/gcc-arm-linux-gnueabi/目录下,有xilinx-linux的交叉编译器arm-linux-gnueabihf-gcc、arm-linux-gnueabihf-g++等。后期进行程序开发时可以使用这些编译器进行编译。这样编译出来的应用程序就可以在目标板的linux系统上正常使用。

网络上有好多文章提到了安装xilinx-2012.03-79-arm-xilinx-linux-gnueabi交叉编译器,实际操作中发现,利用xilinx-2012.03-79-arm-xilinx-linux-gnueabi编译器编译出来的程序在petalinux定制的操作系统中并不能正常使用。主要原因是xilinx-2012.03-79-arm-xilinx-linux-gnueabi采用的库和petalinux自带交叉编译器采用的库有差别。
2.2 配置环境变量
petalinux安装成功后,每次PC重新开机使用petalinux都需要对其所需的运行环境进行配置,运行命令如下
source /opt/petalinux/v2018_3/settings.sh
为了方便使用,可以设置别名
alias sptl='source /opt/petalinux/v2018_3/settings.sh',添加该行命令到~/.bashrc最后一行,以后设置运行环境只需要输入sptl即可;
3.定制linux系统
3.1 导入
在利用petalinux定制zynq的linux系统,首先需要导入hdf文件,hdf文件由vivado生成。hdf位于vivado工程文件下,以“工程名.sdk”为名的文件夹中。将该文件夹整体拷贝到linux系统中。
在linux系统下,新建petalinux工程,运行命令
petalinux-create -t project --template zynq -n ZYNQ_Linux_Test
该命令表示新建一个名为ZYNQ_Linux_Test的工程,并以zynq平台为模板。
运行后,会在当前位置生成一个名为ZYNQ_Linux_Test的文件夹。
进入该文件夹,并运行命令petalinux-config --get-hw-description ~/hdf/ZYNQ_Linux_Test.sdk/。笔者在vivado上建立的工程名为ZYNQ_Linux_Test,并将生成的ZYNQ_Linux_Test.sdk复制到的~/hdf中。命令运行之后,出现如下界面。

petalinux会根据hdf文件所描述的硬件组成来配置petalinux,上图所示的各个项保持默认值即可。这里需要提醒的一个是,在Image Packaging Configuration下面Packaging Root filesystem type选择SD卡。原来默认是选择INITRAMFS,如果选用默认选项,编译后目标板上的文件系统是建立在zynq的内存上的,在该文件系统上新建的文件在目标板掉电后不能保存。如果选择SD卡选项,文件系统是建立在SD卡中,掉电后仍然保存。

其他选项在这里就不赘述了,感兴趣可以在网上查下相关资料。最后保存,退出。
3.2 配置内核及rootfs
配置好硬件之后,接下来是就是配置linux内核和rootfs,首先是配置linux内核。
运行指令petalinux-config -c kernel,出现如下界面 。

可见Linux内核版本是4.14.0,这里所有项目保持默认即可,不用修改,退出。
接着配置rootfs,运行petalinux-config -c rootfs,出现如下界面。

在Petalinux Package Groups中可以选择需要编译进去的软件,笔者利用这个系统主要是为了利用Opencv做图像处理,所以将Opencv和QT都编译进去。如下图所示:


在这里提一下,petalinux编译进去的QT版本是5.9.6,OPENCV的版本是3.3.0。也可以自己下载熟悉版本的代码进行交叉编译、安装。
在Petalinux RootFS Settings下面可以设置Linux系统root用户的登录密码。

可以看到,笔者Linux的root用户的登录密码同样为root。设置完成后,保存并退出。
3.3 编译
至此,所有设置已经都设置完成,运行指令petalinux-build对系统进行编译。
由于需要编译QT和OPENCV两个软件,编译过程中系统会自动从git上面下载需要的工具,所以在编译的过程中要保持联网状态。
编译成功后,运行指令petalinux-package --boot --fsbl --fpga --u-boot --force,petalinux将生成目标板所需要引导文件、系统运行文件及文件系统。
所生成的文件位于ZYNQ_Linux_Test/images/linux中,BOOT.BIN和image.ub分别为引导文件和系统运行文件,rootfs.tar.gz为文件系统。
3. 制作启动盘及文件系统
将SD卡分为两个分区,一个名为boot分区,大小为100MB左右并格式化为FAT32分区。剩下空间建立rootfs分区,并格式化为ext4分区。这里在PC端Linux环境下,采用fdisk工具进行分区,具体过程可查阅相关文档。
将BOOT.BIN和image.ub复制到boot分区里面;
rootfs.tar.gz利用指令sudo tar -zxvf rootfs.tar.gz -C /media/用户名/rootfs/解压到相应的目标位置。
至此,目标板Linux系统的启动盘制完毕。
4. 运行
将SD卡插入zynq板卡的SD卡槽中,通过拨码开关设置zynq板卡的启动设备为SD卡,上电,从串口终端可以看到Linux启动的打印信息。如下图。

在目标板/usr/lib中可以看到QT和OPENCV的库文件,如下图。

本文介绍了如何使用Xilinx的petalinux工具为Zynq-7000 FPGA定制Linux操作系统,包括petalinux的安装、环境配置、Linux系统定制的步骤,如导入HDF文件、配置内核和rootfs,以及编译和制作启动盘的过程。通过此教程,读者可以学会如何为Zynq平台构建基于SD卡的可持久保存文件系统的Linux系统。
2256

被折叠的 条评论
为什么被折叠?



