【详细步骤】
方式1:利用petalinux定制linux环境,并从SD卡启动
(1)在windows下利用vivado进行FPGA部分的硬件开发,编译生成.bit文件,并导出硬件信息.hdf文件,该文件是petalinux要使用的硬件文件;
(2)将vivado工程下的.sdk目录复制到linux主机中;
(3)设置petalinux环境变量和vivado环境变量(在这里之前需要安装Linux版本的vivado和petalinux):
source /opt/pkg/petalinux/settings.sh
source /opt/Xilinx/Vivado/2017.4/settings64.sh
(4)利用petalinux-creat创建一个新的petalinux工程并进入新建的petalinux工程目录中,并设置该petalinux的硬件信息来自于meg_7035.sdk目录下:
petalinux-create --type project --template zynq --name ax7035_meg_qspi
在当前目录下会自动生成一个ax7035_meg_qspi目录:
cd ax7035_meg_qspi
petalinux-config --get-hw-description ../meg_7035.sdk
会跳出配置界面,配置启动方式为从SD卡启动(在 Subsystem AUTO Hardware Settings ---> Advanced bootable images storage Settings ---> boot image settings ---> image storage media 选项中选择 primary sd设置boot从sd卡启动,以及Subsystem AUTO Hardware Settings ---> Advanced bootable images storage Settings ---> kernel image settings ---> image storage media 选项中选择 primary sd,设置内核从sd卡启动,那根文件系统和设备树呢?),保存退出配置界面,等待较长时间:
之后利用命令配置内核和根文件系统:
petalinux-config -c kernel,跳出配置界面默认配置保存退出即可;
petalinux-config -c rootfs,跳出配置界面默认配置保存退出即可;
(5)利用petalinux-build命令编译uboot、内核、根文件系统和设备树;
(7)利用petalinux-package命令打包生成BOOT.bin,打包命令为:
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force
(8)将工程目录 images -> linux 目录中的 BOOT.BIN 和 image.ub 复制到 sd 卡,复制前最好先格 式化一下 sd 卡(格式设置为FAT32),然后插到开发板上,开发板设置到 sd 卡启动:
(9)打开串口,启动开发板:
(10)利用NFS将linux主机的共享目录挂载到板子的linux系统中,在共享目录下放好samp.elf文件,该文件在.sdk/samp/Debug下,利用./samp.elf即可运行arm端的程序。
1)将开发板的网线与Linux主机相连,查看linux主机IP地址
2)在开发板的Linux环境中,利用以下命令临时更改IP地址和掩码:
ifconfig eth0 192.168.4.121 netmask 255.255.255.0
3)在linux主机中ping开发板的IP地址,ping 通后将linux主机的共享目录work挂载到开发板的/mnt目录中:
mount -t nfs -o nolock 192.168.4.10:/home/daiyan/work /mnt
4)将编译好的可执行程序放在共享目录中,在串口终端中进入/mnt目录找到该可执行文件执行即可。
方式2:利用petalinux定制linux环境,并从QSPI启动
前三步与方式1相同。
(4)利用petalinux-creat创建一个新的petalinux工程并进入新建的petalinux工程目录中,并设置该petalinux的硬件信息来自于meg_7035.sdk目录下:
petalinux-create --type project --template zynq --name ax7035_meg_qspi
cd ax7035_meg_qspi
petalinux-config --get-hw-description ../meg_7035.sdk 会跳出配置界面,配置boot和内核启动方式为falsh,保存退出配置界面需要较长时间
(5)利用命令配置内核和根文件系统
petalinux-config -c kernel
petalinux-config -c rootfs
(6)利用petalinux-build编译uboot、内核、根文件系统和设备树;
(7)对于QSPI-FLASH启动方式下,通过petalinux-package打包时将内核一起打包,打包命令为(比上面多一个--kernel):
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --kernel --force
(8)启动开发板,设置启动方式为JTAG,通过vivado或者SDK将生成的BOOT.BIN和zynq_fsbl_flash.elf(官方提供的)文件一起烧写到QSPI FLASH中;烧写后,设置开发板启动方式为QSPI,上电后可以看到Linux环境已启动。
(9)与上述方式1相同的挂载方式将可执行程序进行挂载,并运行程序
另外:
(1)若想要保留之前的petalinux工程,不想新建一个,可以把老的工程复制一份,将老工程中的project-spec、.petalinux、config.project 复制到一个新的目录,做为一个新的 Petalinux 工程;
(2)再把 images/linux 目录下的 bit 文件也复制到新的工程目录下,用于合成带 PL 配置的 BOOT
(3)设置环境变量:
source /opt/pkg/petalinux/settings.sh
source /opt/Xilinx/Vivado/2017.4/settings64.sh
(4)按照上述步骤配置petalinux,包括启动方式、boot、内核、根文件系统和设备树,保存配置退出,编译,最后将BOOT.BIN烧写到QSPI FLASH内即可。
方式3:利用petalinux定制linux环境,并从QSPI和EMMC启动
【相关知识】
1.综上所述,PL端的逻辑在整个linux环境搭建时就确定,硬件信息决定了linux系统的环境搭建,linux移植好后,编写硬件外设驱动程序,在linux主机上进行ARM端的Linux C语言程序开发,最后放在板子上运行。