这个里面要挨个上传图片,比较麻烦,如果感觉只看文字费劲的话,可以点击此链接下载Word文档,这个文档只比下面的内容多图片而已。
http://blog.csdn.net/u013793399/article/details/53054734
按照上面这位大师的流程,自己操作了下,添加了下图片,自己遇到的坑以及修改了下错误
前言
PetalLinux是Xilinx公司推出的嵌入式Linux开发工具,专门针对Xilinx公司的FPGA SoC芯片和开发板,用户可以在PetaLinux工具的帮助下进行完整的开发流程,包括设计,验证,仿真,下载等。
本文将详细介绍PetaLinux的安装流程,虽然实际上基本就是把Xilinx的UG1144翻译一遍。但对于初学者而言,全是英文的Guidance还是很难受的,可能某一步要输入某个命令,但是却并不知道为什么要这么做,这并不好,也容易打击信心。
安装前的准备工作
· 你需要一个运行着Linux操作系统的电脑作为主机。
· 你可以用虚拟机,也可以装双系统,或者你甚至可以直接把系统换成Linux。注意:虚拟机空间如果小于100G,那么重装系统吧,否则通过扩容达到100G的,会遇到各种问题。反正我最后是重装系统的
· 在这里,我用的是VMware虚拟机下的Ubuntu 16.04LTS
· 你需要一个足够大的硬盘空间,一个足够好的CPU,尽量大的内存。
· 毕竟是用来做开发的,对于配置要求还是比较高,Xilinx推荐4GB内存,100GB硬盘,2GHz主频CPU。
· 然则,20GB硬盘远远不够!!我电脑一共就8GB内存,只能分给虚拟机2GB,倒是没出现什么问题,就是安装的时候比较慢,Guidance说只要“few minutes”,实际上这要看电脑分的内存的,分大了比较快,小了就很难说了。
· 以下是Xilinx的推荐配置。
· 安装一系列的支持包。以下是列表,最左边是支持包的名称,右侧是各个操作系统下,该支持包的安装包名称(很绕口,其实就是同一个功能在不同系统下有不同的叫法),只需要关注你所用的操作系统的那一列就可以了。记得在安装之前把这些支持库全部安装好,不然到时候等了好久,结果告诉你缺少库,请少侠重头再来,那就哭晕在厕所了。(注意是在普通用户下,root用户下会安装失败)
说明:安装之前可以用“dpkg –s工具名称”检测一下,如果显示未安装,则用“sudo apt-getinstall工具名称”命令安装下。也可以不检查,直接重装一遍,防止版本过低导致出现问题。(注意,需要在联网情况下才能安装成功)
坑一:安装sudo apt-get install zlib1g:i386,这个根据表格很容易忽略
坑二:检查安装目录(我的是/opt/pkg/petalinux/)的权限,是否是drwxrwxr-x,是否能使用chmod修改权限(不加sudo),如果有一个不对,那就等着重新执行一遍吧
坑三:不要用Guest用户登录
· 把shell设置成bash(这一步你看不懂的话可以忽略,因为Ubuntu默认shell设置为dash),具体设置方法是$ sudo dpkg-reconfigure dash,(命令没有错误)出现提示界面问是否要dash的时候,选No就行了。反馈如下:
。
· 下载安装Vivado for Linux。或者你想在Windows下用Vivado搞完之后把文件扔到虚拟机里也可以,只是比较麻烦,还不如直接装在Linux里,实测界面和Windows下完全一样。推荐WebPack版本,虽说是阉割版,但还是可以用ZYNQ系列和MicroBlaze的全部功能,只是少了UltraScale系列和一些高端的7系列。Vivado软件是用来生产hdf文件的,我们可以使用XiLinx自带的bsp,此步也可以略过……
安装步骤
· 下载PetaLinux包。网址如下:
· 选择7GB的PetaLinux 2017.2Installer
· 下载完之后应该是一个petalinux-v2017.2-final-installer.run文件
· 放到虚拟机里;
· 建立安装路径,比如$ mkdir/opt/pkg/petalinux/(如果创建时说没权限,恭喜你,悲剧了,安装肯定不成功,这应该是你用户的问题,至于解决办法,百度^_^)
· 运行安装文件;
· $ ./petalinux-v2017.2-final-installer.run/opt/pkg/petalinux/
· 如果缺少后面的安装路径参数,则默认会安装在当前路径;
· 经过漫长的等待~~~来到了Agreement部分了,就是一些协议,不同意就不让装,Windows下一般用勾选的方式,Linux终端没有这种条件,只能用Vim展示给你看。
· 按 Enter进入协议文本,按Esc+ : + q退出协议文本(不要按回车,否则重新执行吧),然后就会有问你同不同意,输入 y同意协议,回车,进入下一条协议,按Esc+ : + q退出协议文本,y同意,若干次之后,就进入安装部分了。
· 再次经过漫长的等待,安装完成。
环境配置
装好了工具,接下来就是要配置环境了。
环境配置方法很简单,先确保你的shell是bash,具体设置方法看上面的“安装前准备工作”部分。
然后运行$ source<path-to-installed-PetaLinux>/settings.sh
比如我的安装路径是/opt/pkg/petalinux/,那对应的命令就是$ source/opt/pkg/petalinux/settings.sh
执行$ echo $PETALINUX
如果显示出你的安装路径,那就证明环境变量配置好了
有一个问题是,每次打开一个新的终端,环境变量都会被重置,需要重新source,作为一个强迫症,我觉得这种重复而无聊的工作必然是可以自动化的。解决方案如下:
修改 ~/.bashrc 这个文件
在最后加上 $ source/opt/pkg/petalinux/settings.sh
.bashrc 是终端的初始化配置脚本,每次打开新的终端是的时候,都会执行这个脚本,把环境变量配置脚本加在里面,就能在打开的时候自动配置了。
安装PetaLinux BSP
BSP(Board SupportPackage)板级支持包,是一个文件包,当你使用特定的硬件平台时,可以帮你隔离底层硬件,更方便地进行上层开发。Xilinx的开发板基本上都有对应的BSP,在PetaLinux环境下可以很方便地生成一个基础工程,在基础工程的基础上进行配置和增删修改等,会比从零开始做简单得多。这里详细介绍了BSP的安装流程。
· 下载你需要的板级支持包BSP。
· 把PetaLinux下载列表往下拉,能看到很多的BSP,选择你想要的,比如我这里选的就是ZED BSP。
· 把这个BSP文件放在你喜欢的地方。你可以把BSP文件看做一个种子,通过特定的命令可以让其“成长”为一个工程,一个模板工程,一个基于特定板子的基础工程,让你可以在此基础上直接进行开发而不需要关心板子上的具体电路等。
· 好吧,其实我是骗你的,根本不需要什么安装,下载完放着就可以了;然则Guidance里说这就是Installation,所以也算不上骗吧┑( ̄Д ̄)┍
利用BSP生成一个工程
刚刚说到,BSP相当于一个种子,可以种出一个工程,现在我们就来动手吧。
· 首先 cd到你希望放置工程的路径。比如我的就是:
· $ cd /opt/pkg/project_petalinux
· 创建一个工程
(如果权限不够,换一个权限可以的路径。比如安装petalinux平行的路径下)
· petalinux-create-t project -s ./avnet-digilent-zedboard-v2017.2-final.bsp把上面的路径换成你的BSP放置的路径,文件名也换成你的BSP的文件名(废话…)
· -t表示的是 type,类型是project,-s表示 source,源是你的BSP文件
· 你也可以加一个 -n参数,自定义工程的名称。n for name
· 好的,一个BSP工程建立完毕。
创建一个自定义工程
(如果有特殊需求,执行此步跟下一步,初学者可以跳过这两步)
创建工程肯定不可能只从BSP生成嘛,以下步骤可以创建一个自定义的工程,而不是基于某个特定开发板的工程。
· 先 cd到你希望放置工程的路径。比如我的就是:
· $ cd /opt/pkg/project_petalinux
· 创建一个工程
· petalinux-create -t project --template zynq --name test_proj
· 这样就创建了一个基于zynq芯片模板,名为test_proj的工程了。
· template属性可以选择zynq,zynqMP,microblaze。
将硬件平台从Vivado工程导出
Vivado中,可以通过以下方法导出硬件描述文件(.hdf)
- File -> Export -> Export to hardware
将导出的 hdf 文件放好,待会需要用到。
将工程的硬件配置导入PetaLinux
我们从Vivado中得到了一个硬件,并导出为 .hdf文件,现在可以把它导入PetaLinux平台。
· 首先 cd到你的工程根目录下
· 导入硬件配置文件
· $ petalinux-config--get-hw-description=/opt/pkg/project_petalinux_2017.2/avnet-digilent-zedboard-2017.2/hardware/avnet-digilent-zedboard-2017.2/avnet-digilent-zedboard-2017.2.sdk
· 注意参数是 存有hdf文件的路径,而不是文件本身。
· 然后应该会弹出一个菜单让你配置,配置完之后 save,exit即可。
· 其实一般不用怎么动,尤其是第一次跟着做的话基本一脸懵逼
· 每个细目具体是什么意思,参考UG1144的附录B和附录C
最后又回到了第一次的界面,选择Exit退出即可
未知错误:第一次安装的时候选了2017.3的bsp工程,有个告警提示,最后编译失败。然后把版本更换成petalinux相同的2017.2,还是失败。然后又重新执行了一下2017.2,竟然成功了,成功原因未知(petalinux安装版本为2017.2)如下所示:
生成系统镜像文件
生成一个Linux镜像文件。
· 首先 cd到你的工程根目录下
· 生成系统镜像
· $ petalinux-build
· 生成日志 build.log存放在‘build’子目录中
· 镜像文件存放在 images/linux中
生成引导镜像
我们有了一个系统镜像,有了一个FPGA的比特流文件,还有了一个u-boot。我们就可以生成一个引导镜像BOOT.bin
命令如下:
$ petalinux-package --boot --fpgaxxx.bit --u-boot
其中 xxx.bit 是你在Vivado里生成出来的比特流文件。
然后你就可以看见当前目录下生成了一个BOOT.bin,就是引导镜像文件。
暂且先到这里吧,我就做到这一步
如果还想继续向下做,可以参考大神的下面的步骤^_^
打包Pre-Built镜像
举个栗子,我们成功地做了一个镜像系统,现在需要将其备份,可以通过以下命令将其打包为“Pre-Built镜像”。
首先 cd 到工程根目录。
$ petalinux-package --prebuilt --fpgaxxx.bit
然后就会出现一个prebuilt目录,里面有完整的系统镜像文件。
我们可以用prebuilt的镜像来引导系统,命令如下:
$ petalinux-boot --qemu --prebuilt 3
其中3代表的是 <BOOT_LEVEL >,可以选择为1/2/3,分别代表不同的引导层次,具体请参考UG1144的24页。
在QEMU中启动系统
上面说到的用prebuilt的镜像引导是其中一种方法,也可以直接引导。
在工程根目录下执行如下命令:
· $petalinux-boot --qemu --u-boot
· 这样就可以把u-boot下载到QEMU中;
· 其中 qemu表示在QEMU虚拟环境中启动,可以换成 --jtag,这样就可以通过J-TAG下载到板子上。
· $petalinux-boot --qemu --kernel
· 这样就可以把内核下载到QEMU中;
· 其实还需要一个 --dtb参数的,dtb是device treeblob,设备树文件,用来描述外挂的设备地址,如果缺省此参数,则会自动选用 /images/linux/system.dtb文件