目录
一、安装环境
1、ubuntu16.04.2(64bit)
相关的虚拟机配置可参考
2、petalinux-2019.1
二、安装petalinux
官方操作详见ug1144-petalinux-tools-reference-guide,
1、使用非root用户
petalinux的安装必须是普通用户,若为root用户,必须切换为普通用户
2、安装petalinux所需要的库文件
首先更新一下系统应用,并安装所需要的的依赖库包
apt-get update
sudo apt-get install tofrodos iproute2 gawk gcc g++ git make net-tools libncurses5-dev \
tftpd zlib1g:i386 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 screen pax gzip automake
如果在使用过程中发现网络比较慢的话,可以将/etc/apt/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
3、安装tftp服务器(可选)
安装petalinux时会提示到需要tftp服务器, 我们需要安装tftp-hpa和tftpd-hpa软件包,命令如下:
sudo apt-get install tftp-hpa tftpd-hpa
创建一个文件夹来存放交互的文件,并给与权限;
sudo mkdir -p /tftpboot
chmod 777 /tftpboot
最后需要配置 tftp
vim /etc/xinetd.d/tftp
# /etc/xinetd.d/tftp
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
保存文件后启动tftp服务
sudo service tftpd-hpa start
最后打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
4、将.bash修改为dash
使用如下命令后选择no
sudo dpkg-reconfigure dash
5、注意安装目录权限
sudo chown #uname#:#uname# path
其中 #uname# 为你的用户名,可使用命令:users 查看,path为你需要安装的目录
三、使用petalinux
1、启动时,同样适用普通用户打开,不需要root权限,首先要运行petalinux的脚本文件settings.sh
source /opt/pkg/petalinux/2019.1/settings.sh
2、创建petalinux工程
petalinux-create -t project --template zynq -n zynq_petalinux
3、cd到工程目录当中、导入硬件描述文件
petalinux-config --get-hw-description path
其中的 path 为vivado导出的硬件描述文件的地址
4、编译内核
petalinux-config -c kernel
编译内核时,会将内核配置文件保存到 .config 文件当中,petalinux编译完成之后,不会保存,该文件等同于传统方式移植linux下的xxx_defconfig 文件,即进行内核的裁剪工作;
5、配置文件系统
petalinux-config -c rootfs
6、配置设备树,
petalinux-config -c device-tree
设备树文件可以在当前petalinux目录下找
./project-spec/meta-user/recipes-bsp/device-tree/files
当进行 petalinux-buile 编译时,会自动将此处编写的设备树打包,在 ./images/linux 下生成system.dtb 文件,可以使用 dtc -I dtb -O dts -o system.dts system.dtb,反编译设备树文件,查看其中的信息。
7、创建一个驱动模块(可选)
petalinux-create -t modules -n xilinx-axidma --enable
可以在petalinux 阶段将驱动编译到内核当中,执行此命令后,petalinux将在 ./project-spec/meta-user/recipes-modules 目录下创建一个名为xilinx-axidma的驱动文件。
当然,想要避免内核臃肿的话,也可以通过其他方式编译驱动,通过外部添加的方式。
8、编译工程
petalinux-build
9、打包生成启动文件
这里我是将xxx.bit文件一同拷贝到 ./images/linux 目录
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/xxx.bit --u-boot --force
10、SD卡分区和文件拷贝、启动
SD卡分区,在 ./images/linux 目录下,将BOOT.BIN 和image.ub拷贝到SD卡的 FAT 分区,使用以下命令同步跟文件系统。
tar zxvf ./images/linux/rootfs.tar.gz -C /media/zynq/ext/
最后umount你的SD卡,否则,有可能文件系统起不来。