ZYNQ Linux 开发之Petaliunx的SD卡启动的设计流程

1、创建Vivado硬件平台

①在Windows系统下使用Vivado生成项目工程,生成.SDK后缀的文件

②创建了一个名为petalinux的目录,并在petalinux目录下创建了hdf目录用于存放这个sdk文件夹,将sdk文件夹拷贝到用户节目路下的petalinux/hdf目录

2、设置Petalinux环境变量

指令:source /opt/pkg/petalinux/2018.3/settings.sh

或者 指令: sptl (echo "alias sptl='source $PETALINUX/settings.sh'" >> ~/.bashrc)

//输入sptl就可以设置Petalinux的环境变量

3、创建petalinux工程

指令:petalinux-create -t project --template zynq -n Linuxclass1_ZYNQ

创建一个名为“Linuxclass1_ZYNQ”的Petalinux工程,

template参数表明创建的petalinux工程使用的平台模板,

此处的zynq表明使用的是zynq平台模板的petalinux工程,用于zynq-7000系列的芯片。

name参数(此处简写为“-n”)后接的是petalinux工程名,如此处的“Linuxclass1_ZYNQ”。

4、配置petalinux工程

4.1 petealinux-config

指令:cd ALIENTEK-ZYNQ /进入到petalinux工程目录下

指令:petalinux-config --get-hw-description ../hdf/Navigator_7020.sdk/ //导入hdf文件

4.2 Linux Components Selection

括号里的“*”表示为已使能配置。

第一项是程序固化实验中的fsbl.elf文件。

第二项是自动更新ps_init。

第三项是配置u-boot的来源。

第四项是linux-kernel的来源。

4.3 Auto Config Settings

Auto Config Settings指的是:选择是否使能fsbl、Devicetree、Kernel和u-boot的自动配置

4.4 Subsystem AUTO Hardware Settings

据hdf文件的信息自动配置的各个外设,基本上为默认设置。

“Serial Settings”配置项用于配置开发板的调试串口和串口波特率等参数。

4.5 Advanced bootable images storage Settings

配置启动引导镜像和内核镜像的存储媒介

5、配置Linux内核

指令:petalinux-config -c kernel

6、配置Linux根文件系统

指令:petalinux-config -c rootfs

7、配置设备树文件

//使用vi命令打开system-user.dtsi文件,如下所示:

指令:vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

8、编译Petalinux工程

指令:petalinux-build

//该命令将生成设备树DTB文件、fsbl文件、U-Boot文件,Linux内核和根文件系统映像。

编译完成后,生成的映像将位于工程的images目录下

9、制作BOOT.BIN启动文件

petalinux-package --boot命令生成可引导映像,该映像可直接与Zynq系列设备(包括Zynq-7000和Zynq UltraScale + MPSoC)或基于MicroBlaze的FPGA设计一起使用。对于Zynq系列设备,可引导格式为BOOT.BIN,可以从SD卡引导。对于基于MicroBlaze的设计,默认格式为MCS PROM文件,适用于通过Vivado或其他PROM编程器进行编程

ZYNQ的启动文件BOOT.BIN一般包含fsbl文件、bitstream文件和uboot文件。

使用下面命令可生成BOOT.BIN文件:

指令:petalinux-package --boot --fsbl --fpga --u-boot --force

petalinux-package命令将PetaLinux项目打包为适合部署的格式,

其中“petalinux-package --boot”命令生成可引导映像

选项“--fsbl”用于指定fsbl镜像文件所在位置,后面接收文件对应的路径信息,

如果不指定文件位置,默认对应的是images/linux/zynq_fsbl.elf;

选项“--fpga”用于指定bitstream文件所在位置,后面接该文件对应的路径信息,

默认对应的是images/linux/system.bit;

选项“--u-boot”用于指定U-Boot镜像所在位置,后面接该文件所在路径信息,

默认为images/linux/u-boot.elf。

10、制作SD启动卡

SD卡引导linux系统启动,一般需要在SD卡上有2个分区。一个分区使用FAT32文件系统,用于放置启动镜像文件(如BOOT.BIN,linux镜像等),另一分区使用EXT4文件系统,用于存放根文件系统

格式化SD卡

sudo mkfs.ext3 /dev/sdb -L LABEL2

将SD卡插入到读卡器中、并将读卡器插入电脑并连接到Ubuntu系统

指令:umount /dev/sdb*

指令:sudo fdisk /dev/sdb

输入“p”执行

新分区之前需要将以前的分区删除,键入“d”,删除该分区

开始新建分区。输入“n”创建一个新分区

通过选择'p'使其为主,使用默认分区号1和第一个扇区2048

设置最后一个扇区,通过输入“+100M”,为该分区预留100MB

设置分区类型,输入“t”,然后输入“c”,设置为“W95 FAT32 (LBA)”

输入“a”,设为引导分区

通过键入“n”来创建根文件系统分区,重复上述动作

输入“p”检查分区表,会看到刚刚创建的2个分区

如果没问题,键入“w”以写入到SD卡并退出

格式化分区:

指令:sudo mkfs.vfat -F 32 -n BOOT /dev/sdb1 //第一个分区格式化成FAT32分区并命名为BOOT

指令:sudo mkfs.ext4 -L rootfs /dev/sdb2 //将第二个分区格式化成ext4分区并命名为rootfs

将生成的BOOt.BIN文件和image.ub文件拷贝到SD卡的boot引导分区

举报
评论 0