1.准备工具
自行安装linux版本的vivado,和xilinx开发环境。linux版本我选择的是Ubuntu18.04,ubuntu系统下xilinx开发环境我安装的是vivado 2018.3(安装时候要记得勾选SDK),安装好vivado后也就包含了xilinx的ARM部分交叉编译器。
2.Petalinux 工具安装
petalinux 并不是一个特殊 Linux 内核,而是一套开发环境配置的工具,降低 uboot、内核、根文件系统的配置的工作量,可以从 Vivado 的导出硬件信息自动完成相关软件的配置,安装版本为 petalinux-v2018.3
注:vivado配置zynq硬核配置部分参考ZYNQ7045从flash启动linux vivado配置
步骤1:安装必要的库,执行命令
sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax
步骤2:安装Petalinux
1.先下载自己需要的Petalinux版本,Petalinux下载版本选择链接
2.进入PetaLinux - Installation Files - 2018.3 选项界面下
点击PetaLinux 2018.3 Installer(TAR/GZIP-6.17G)下载
需要AMD账号,自行注册完成后,填写必要信息,即可下载
3.将下载的petalinux-v2018.3-final-installer.run文件迁移到ubuntu18.04系统下,执行命令
(注:<your_user_name>就是你ubuntu的用户名)
sudo chmod +x petalinux-v2018.3-final-installer.run
sudo mkdir -p /opt/pkg/petalinux
sudo chown <your_user_name> /opt/pkg/
sudo chgrp <your_user_name> /opt/pkg/
sudo chgrp <your_user_name> /opt/pkg/petalinux/
sudo chown <your_user_name> /opt/pkg/petalinux/
sudo ./petalinux-v2018.3-final-installer.run /opt/pkg/petalinux/
执行上述命令之后,petalinux开始安装,根据提示,按回车查看协议内容后,按 q 退出协议内容,按 y 同意协议内容,在安装过程中会弹出 License,按“q”退出,然后按“y”同意,至此,Petalinux安装完成。
3.使用 Petalinux 定制 Linux 系统
首先FPGA工程师根据Vivado 软件把硬件信息配置完成编译导出(内存,时钟,qspi,需要的基本外设等等)成工程文件,然后 Petalinux 根据这些信息来配置 uboot,内核、文件系统等
步骤1:搭建工程环境
1.在 vivado 导出硬件配置的工程目录下会有一个***.sdk** 的目录,下面有一个“design_1_wrapper_hw_platform_0”文件夹,这个文件夹就包含了 petalinux 使用的文件
2.把“design_1_wrapper_hw_platform_0”目录复制到ubuntu18.04自己的工程目录下
3.设置 petalinux 环境变量,执行命令
source /opt/pkg/petalinux/settings.sh
4.设置 vivado 环境变量,执行命令
source /opt/Xilinx/Vivado/2018.3/settings64.sh
5.创建一个 petalinux 工程,工程名自己命名即可,我自己工程创建一个名为petlinux_config的工程,执行命令
petalinux-create --type project --template zynq --name petalinux_config
步骤2:配置linux系统启动参数
1.进入自己的工程目录下,配置硬件信息,“…/design_1_wrapper_hw_platform_0”目录就是 vivado 导出的硬件信息
cd ./petalinux_config
petalinux-config --get-hw-description ../design_1_wrapper_hw_platform_0
弹出linux配置窗口,进行配置 petalinux 工程,下图的 Subsystem AUTO Hardware Settings 可以设置系统分配大小和启动方式
2.选择进入Subsystem AUTO Hardware Settings 菜单选项,在选择Flash Settings进行分配linux系统boot,kernel的所占空间大小
进入Flash Settings后,根据自己的flash大小和FPGA工程师给分配的boot和kernel大小来填写转换的十六进制数值(我分配的Boot是5Mb,kernel是10Mb: 5x1024x1024转换十六进制为0x500000,10x1024x1024转换十六进制为0xA00000)
3.返回进入Subsystem AUTO Hardware Settings 菜单选项,再选择 Advanced bootable images storage Settings 选项进入配置菜单
分别进入boot image settings 、u-boot env partition settings 和 kernel image settings 选择启动方式为flash
4.全部配置完成之后,保存设置
然后退出配置界面,等待编译完成
步骤3:配置linux内核
1.配置linux内核,执行命令,等待kernel配置界面出现
petalinux-config -c kernel
2.在选项Device Drivers 配置驱动,选择进入配置菜单选项,然后选择 Network device support 进入配置菜单选项,再选择PHY Device support and infrastructure 进入配置菜单选项,选中 Micrel PHYs,按 “Y” 键表示加载此选项
然后保存并退出,等待编译完成
步骤4:配置根文件系统
1.配置linux文件系统,执行命令,等待文件系统配置界面出现
petalinux-config -c rootfs
根据自己需求更改配置,此处我没做修改,保存退出等待编译完成即可
步骤5:编译 uboot、内核、根文件系统、设备树等,执行命令,等待编译完成即可
petalinux-build
步骤6:生成Boot 文件,执行命令
备注:可在自己工程目录下的design_1_wrapper_hw_platform_0文件夹下复制design_1_wrapper.bit文件到petalinux_config/images/linux下
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/design_1_wrapper.bit --u-boot --force
4.烧录linux系统配置文件,启动板卡
编译完成后生成配置文件,将自己工程文件目录下petalinux_config/images/linux的 BOOT.BIN 和 image.ub 和zynq_fsbl.elf发送给FPGA工程师,基于vivado使用JATG连接自己的板卡,将相应的文件烧录到flash即可
烧录完成后,连接rs232调试串口,打开串口终端,重新上电启动自己的zynq7045-ps端linux系统