一,安装板级支持包
PetaLinux默认支持多个开发板子,在UG1144里面有列出来,如下
这些板子直接可以从官方下载到板级支持包,有了板级支持包,我们就可以直接从板级支持包生成PetaLinux项目。
下载下来的文件名是avnet-digilent-zedboard-v2019.1-final.bsp.如果从官方下载有困难,可以直接从我网盘下载
链接:https://pan.baidu.com/s/1kjARyVn8aJIDXnu_uqxuKg
提取码:llzi
下载下来放到虚拟机里面。之后我们就就根据这个BSP(板级支持包的简写,下同),来创建PetaLinux项目。UG1144给出的简洁的流程如下图:
二,建立PetaLinux项目
建立PetaLinux用到的命令是petalinux-create。有两种方式可以建立PetaLinux项目。
A,可以hdf(硬件描述文件Hardware Define File )文件来建立,这里要做各种设置比较多。
B,可以直接指定BSP来建立项目,这样可以几乎不做任何设置(所以建议学习买官方认可的学习板,做项目建议基于开发板的配置以及外设来做,可以直接用上BSP,也可以直接在VIVADO里建立硬件项目时候直接选择官方支持的开发板子,比如zedboard。其实好处还不止这些,在这里不详细列举)。
petalinux-create --type project -s ~/PetaLinux2019.1/bsp/avnet-digilent-zedboard-v2019.1-final.bsp -n my_zed
这里我们设置文件名是my_zed,之后生成一个my_zed的文件夹,cd my_zed 进入这个文件夹,之后进行的一个petalinux的一些cofigure,build,packdge,都是基于这个这个项目目录的。也就说在这个目录下的操作就是操作my_zed这个项目。
三,基本配置
petalinux-config
之后弹出界面
比如启动方式,以及板子名称,终端所采用的串口通讯波特率,以及内核启动参数等等,都在这里设置。我们使用BSP方式建立的项目,所以这些配置都默认设置好了。如果采用 HDF文件方式建立项目,一些必要的设置必须写对,否则可能编译不过。
这里我们看看官方文档的对petalinux-config 的解释:
说的是petalinux-config 如果不加参数就是对板级的特性进行配置。另外可以有三个-c参数分别是 u-boot,kernel,rootfs.
四,配置linux内核
在这里linux的内核英文叫做kernel,使用命令:
petalinux-config -c kernel
基本操作还是传统的menuconbfig那套,Y表示选中,ESC表示返回上级菜单,TAB切换焦点。这里可以对内核进行剪裁的有很多,比如我们可以增加/删除内核对网络文件系统的支持,对信号量通讯的支持等等。我们这里不做任何配置的改变,直接退出。
五,配置文件系统
petalinux-config -c rootfs
文件系统包含了很多可用的工具软件,我们这里对这些备选的文件进行增删。也是采用menuconfig的菜单样式。这里也不做任何配置。
六,配置U-BOOT
petalinux-config -c u-boot
这里也不做任何配置退出。
七,最终编译构筑
传统方式我们做好各种参数配置后,就要make来最终编译。petalinux对应的命令是petalinux-build 。
上述配置完成后就用下面的命令来构筑我们最终需要的内核,文件系统,甚至fsbl,以及官方所提供的BITSTREAM(PL配置用的比特流)文件。
petalinux-build
经过几十分钟的等待后,会出现成功提示。
构筑成功后可以进去image/linux目录看看,那里有生成的u-boot, kernel,rootfs.
当然还有默认的fsbl和system.bit,这两个文件是可选的,我们可以用自己在VIVADO和sdk下生成的bit配置文件和FSBL文件来替代这两个默认生成的文件。
八,生成BOOT.BIN
petalinux-package --boot --format BIN --fsbl images/linux/zynq_fsbl.elf --u-boot images/linux/u-boot.elf --fpga images/linux/*.bit
在项目目录下的image/linux目录下生成了boot.bin,连同image.ub都拷贝到FAT32格式的SD卡里。
九,下板运行
(待续)