基于ZC706的BSP的PetaLinux
一、在Xilinx官网下载资源
下载链接如下:https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-design-tools.html
主要下载两个东西:1)PetaLinux的安装包;2)ZC706的板级支持包。
需要注意的是下载的版本要与严格一致,并且需要与使用的Vivado版本一致。这里我下载的是2018.2的版本
下载完成后将资源拖到虚拟上进行安装与编译(本人使用的虚拟机为Ubuntu 16.04,Ubuntu 18.04也用过,后来由于编译OPTEE的包有问题就换了(说是18.04的版本似乎与OPTEE的python3.5有些不兼容))
二、安装PetaLinux
这里可以参考这篇讲解:https://www.cnblogs.com/vacajk/p/6146146.html
根据上述链接安装完这些依赖之后,再安装PetaLinux还是会出错。出错的原因一般是因为还有些依赖没有安装,按照其提示,把未安装的安装了就行了。
这里提一下:根据Xilinx官网的UG1144文档可知,PetaLinux 2015.4之后的版本都不能在ROOT下安装,直接安装到一个有755权限(可写、可读、可访问)的文件夹就行。另外上述链接安装git:i386可能会有问题,我选择的是直接不管它,只安装git就行了
为了防止链接内容无了:我copy一下:
step1: VMware Tools问题
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /tmp
#若/tmp文件夹下有vmware-tools-distrib文件夹,需要删除
tar zxpf /mnt/cdrom/VMwareTools-x.x.x-yyyy.tar.gz
umount /dev/cdrom
cd vmware-tools-distrib
./vmware-install.pl -d
接下来就会安装VMware Tools了,这之中有些选项,能选yes的都选yes。关闭虚拟机,重新启动,这样VMware Tools就安装好了。
终于可以开心的Windows–Linux互拖文件了。
step2. 更换apt-get更新源
默认的美国源下载起来太慢了,超费时间而且不稳定。直接把apt-get的源换成阿里云的,速度超赞。
参考: http://www.cnblogs.com/dtiove/p/5917263.html
sudo su
cd /etc/apt
cp sources.list sources.list1
gedit sources.list
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
保存并退出,运行apt-get update
。
step3. 安装petalinux需要的依赖库
首先是官方手册ug1144的说明,必须安装的一些32位依赖库。
apt-get install tofrodos:i386
apt-get install iproute2:i386
apt-get install gawk:i386
apt-get install gcc:i386
apt-get install git:i386
apt-get install make:i386
apt-get install net-tools:i386
apt-get install libncurses5-dev:i386
apt-get install zlib1g-dev:i386
apt-get install libssl-dev:i386
apt-get install flex:i386
apt-get install bison:i386
apt-get install libselinux1:i386
然后是一些可能会导致不能正常安装petalinux,或是编译时出现问题的依赖库。趁早都直接安装好吧。
#在运行petalinux-config -c kernel出现错误,需要提前安装下面两个库
apt-get install libncurses5 libncurses5-dev
#编译时会出现错误arm-xilinx-linux-gnueabi-gcc: Command not found,需要安装下面三个库
apt-get install libc6:i386
apt-get install libstdc++6:i386
apt-get install zlib1g:i386
#安装petalinux时出现错误,提示缺少zlib和openssl,需要安装下面一个库
apt-get install libssl-dev
#安装petalinux时出现警告,提示No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution,需要安装下面3个库
apt-get install tftpd tftp openbsd-inetd
gedit /etc/inetd.conf
#在文件中增加以下内容
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftproot
#保存并退出
mkdir /tftproot
chmod 777 /tftproot
/etc/init.d/openbsd-inetd restart
netstat -an | more | grep udp
#看到有如下输出,即表示tftp安装成功
#udp 0 0 0.0.0.0:69 0.0.0.0:*
至此,依赖库就安装完成了。
step4. 安装petalinux
前面的都准备好后,同时也从官网下载好petalinux-v2015.4-final-installer-dec.run安装包
mkdir -p /home/xilinx-arm/PetaLinux/package
cd /home/xilinx-arm/PetaLinux/package
从Windows中直接把petalinux-v2015.4-final-installer-dec.run拖拽到Linux的package文件夹。
mkdir -p /opt/pkg/petalinux
./petalinux-v2015.4-final-installer-dec.run /opt/pkg/petalinux
安装过程中有3个许可,都需要同意。
ug1144中说了,所用到的/bin/sh命令都需要是bash的,而Ubuntu默认的/bin/sh是dash的,所以直接把原本的删除,连接/bin/sh到bash。
cp /bin/sh /bin/sh1
rm /bin/sh
ln -s /bin/bash /bin/sh
ls -al /bin/sh
#会看到打印信息
#lrwxrwxrwx 1 root root 9 Dec 8 14:59 /bin/sh -> /bin/bash
PetaLinux就算是安装成功了。每次开机使用petalinux时,要在命令行输入:
source /opt/pkg/petalinux/petalinux-v2015.4-final/settings.sh
echo $PETALINUX
#会看到打印信息
#/opt/pkg/petalinux/petalinux-v2015.4-final
这样就可以在命令行中使用petalinux的各种命令了。
待改进:
每次重新启动系统后都需要重新执行source /opt/pkg/petalinux/petalinux-v2015.4-final/settings.sh,把这个命令直接在系统启动时运行就好了。
这里我再一下哈:我是安装的2018.2的版本,不能安装在ROOT下。
三.根据ZC706的板级支持包创建工程
参考链接:https://www.cnblogs.com/vacajk/p/6148857.html
安装之前先source petaLinux一下:
source <your-path>/petalinux-v2018.2-final/settings.sh
在xilinx-zc706-v2018.2-final.bsp所在文件夹下使用:
petalinux-create -t project -s ./xilinx-zc706-v2018.2-final.bsp
即可完成创建,此时在/pre-build/linux目录下会有一些SD卡启动的镜像什么的,这里将
zynq_fsbl.elf #FSBL可执行文件
system.bit #FPGA配置bit文件
u-boot.elf #SSBL可执行文件
image.ub #linux镜像文件
拷到SD卡,然后将ZC706调成SD卡启动就OK了,用户名和密码都是root
这里为了更谨慎一点,接着往下走
四.配置
在创建的工程下运行如下命令:
petalinux-config
会弹出一个配置界面,根据自己需求进行配置即可。这里我没有管它,直接退出,选默认配置就完事了。
五. Build
在创建的工程下运行如下命令:
petalinux-build
这里可能会出错。推荐的解决方案为:
解决方案
sudo apt-get update
sudo apt-get install -y python tofrodos iproute2 gawk xvfb gcc git net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev
sudo apt-get install zlib1g:i386
sudo apt-get install screen
我是这样解决的,然后就完活了