ZYNQ7000 petalinux系统启动文件固化到FLASH

首先明确:petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH中。

1,vivado配置:

ZYNQ7000 petalinux系统启动文件固化到FLASH

2,导入硬件后配置petalinux

  source /opt/Xilinx/Vivado/2017.4/settings64.sh  
  source /opt/pkg/petalinux/settings.sh

  petalinux-create --type project --template zynq --name ax_peta

  petalinux-config --get-hw-description ../linux_base.sdk  (存放  *.hdf文件的地方)  

这里我们仅需要修改两个启动方式选项即可。boot和kernel的存储位置,都选到QSPI Flash即可

Subsystem AUTO Hardware Settings --->
#    Advanced bootable images storage Settings --->
#        boot image settings --->
#            image storage media ---> <*> primary flash

ZYNQ7000 petalinux系统启动文件固化到FLASH

ZYNQ7000 petalinux系统启动文件固化到FLASH

#Subsystem AUTO Hardware Settings --->
#    Advanced bootable images storage Settings --->
#        kernel image settings --->
#            image storage media ---> <*> primary flash

ZYNQ7000 petalinux系统启动文件固化到FLASH

ZYNQ7000 petalinux系统启动文件固化到FLASH

附录:如果板子没有SD卡硬件,就不能通过简单的SD卡烧写boot.bin到flash,必须通过JTAG下载BOOT.bin和image.ub文件,下载两个文件时间很慢。

3,内核配置:    petalinux-config -c kernel     //设置驱动

      配置完成后,ESC并保存。

4,编译petalinux启动文件

       petalinux-build    时间很慢

       petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force   生成启动文件

5,将启动文件烧写到flash中:

方法一:先用SD卡在板子上启动petalinux系统,系统起来后执行

(1)flash_erashall /dev/mtd0    先擦除

用于存放BOOT.bin  : flashcp BOOT.bin  /dev/mtd0
(2)flash_erashall /dev/mtd2    先擦除

用于存放image.ub:flashcp image.ub /dev/mtd2

方法二:从裸机SDK下载petalinux启动文件

(1)在Xilinx SDK中选择 Xilinx Tools->Program Flash。

Image File选择刚才生成的BOOT.bin文件,Flash Type选择qspi_single,Offset填写0,点击Program按钮。烧录完成后,我们的FSBL,bit,FSBL就下载到QSPI Flash中去了,已经可以实现u-boot的启动了,但是要烧录完uImage后才能引导kernel。
ZYNQ7000 petalinux系统启动文件固化到FLASH

(2)烧录image.ub文件,因为Image File只能选择.bin或者.mcs文件,

       所以需要把image.ub重新命名为image.ub.bin,然后再烧录( Xilinx Tools->Program Flash)

Offset需要填写偏移地址,这个地址可以通过petalinux-config配置,或者可以通过system-config.dtsi文件查看。内容如下:

&qspi {
    #address-cells = <1>;
    #size-cells = <0>;
    flash0: [email protected] {
        compatible = "micron,n25q128";
        reg = <0x0>;
        #address-cells = <1>;
        #size-cells = <1>;
        spi-max-frequency = <50000000>;
        [email protected] {
            label = "boot";
            reg = <0x00000000 0x00500000>;
        };
        [email protected] {
            label = "bootenv";
            reg = <0x00500000 0x00020000>;
        };
        [email protected] {
            label = "kernel";
            reg = <0x00520000 0x00a80000>;
        };
        [email protected] {
            label = "spare";
            reg = <0x00fa0000 0x00000000>;
        };
    };
};

我们kernel的偏移地址是0x00520000,因此Offset就填写这个数值,点击烧录。

6,将拨码开关设置为flash启动,就能看到petalinux在putty启动起来;