目录

1 vivado配置:

​​​​​​​2 导入硬件后配置petalinux

​​​​​​​3内核配置:  

4​​​​​​​编译petalinux启动文件

5生成启动文件

6将petalinux启动文件烧写到flash中:

6.1方法一-SD卡

​​​​​​​6.2方法二-JTAG 和 串口

​​​​​​​6.3方法三-从裸机SDK下载petalinux启动文件

​​​​7自动运行程序。

​​​​​​​8跟新系统文件(可忽略)

​​​​​​​9启动系统


        petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH中。

​​​​​​​1 vivado配置:

配置QSPI外设。

 

​​​​​​​2 导入硬件后配置petalinux

创建工程请参考 :

进入menuconfig配置固件编译(不用改)

$petalinux-config --get-hw-description   /路径/     ((存放  *.hdf文件的地方)  )

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

Subsystem AUTO Hardware Settings --->

#    Advanced bootable images storage Settings --->

#        boot image settings --->

#            image storage media ---> <*> primary flash

 

 

#Subsystem AUTO Hardware Settings --->

#    Advanced bootable images storage Settings --->

#        kernel image settings --->

#            image storage media ---> <*> primary flash

 

 

附录:如果板子没有SD卡硬件,就不能通过简单的SD卡烧写boot.bin到flash,必须通过JTAG下载BOOT.bin。

          烧录完成BOOT.bin之后,可以通过JTAG或者串口或者网线tftp烧录image.ub文件到flash。

​​​​​​​3内核配置:  

  petalinux-config -c kernel   

参考博文.

4​​​​​​​编译petalinux启动文件

petalinux-build  

  时间很慢

5生成启动文件

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

  fsbl.elf,download.bit,u-boot.elf  (三个文件用来在SDK中生成BOOT.mcs文件);

  mage.ub(petalinux工具生成的image文件,包含kernel,devicetree和ramdisk

6将petalinux启动文件烧写到flash中:

6.1方法一-SD卡

        先用SD卡在板子上启动petalinux系统,系统起来后使用指令烧写

 

 

(1)flash_eraseall /dev/mtd0    先擦除

         用于存放BOOT.bin  : flashcp BOOT.bin  /dev/mtd0

(2)flash_eraseall /dev/mtd2    先擦除

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

(3)将板卡设置为flash启动,就能看到petalinux在串口启动起来;

​​​​​​​6.2方法二-JTAG 和 串口

使用 jtag 烧写BOOT.bin,使用SecureCRT 串口烧写image.ub

(1)    Zynq> sf probe 0 0 0

      SF: Detected n25q128 with page size 256 Bytes, erase size 64 KiB, total 16 MiB

(2) Zynq> sf erase 0x520000 0xa00000                            //擦除

      SF: 10485760 bytes @ 0x520000 Erased: OK

 (3) Zynq> sf read 10000000 0x520000 0xa00000              //这是清空存放image.ub的flash地址段里面的内容

       device 0 offset 0x520000, size 0xa00000

        SF: 10485760 bytes @ 0x520000 Read: OK

 (4)Zynq> loadx 0x10000000              //xmodem下载image文件到DDR

       //等待ScureCRT传递数据;选择Transfer->SendXmodem->目录对话框中选择image.ub文件,串口波特率115200

 (5)Zynq>  sf write 0x10000000    0x520000   0xa67604($filesize)          (image.ub大概16M,需要持续好几分钟)

  //将DDR中的image拷贝到QSPI flash中,0x10000000 RAM中暂存image起始地址,

  //0x520000 flash中存放image的偏移地址 offset,0xa67604   image文件大小(size)

 (6)将板卡设置为QSPI启动,就能看到petalinux在板子上启动起来;串口有打印输出。

​​​​​​​6.3方法三-从裸机SDK下载petalinux启动文件

(1)将板卡设置为JTAG模式,在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。

 

 

烧写完成。

 断电重启。可以看到u-boot的打印信息了。

(2)将板卡设置为JTAG模式,烧录image.ub文件,因为Image file只能选择.bin或者.mcs文件,

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

Offset需要填写偏移地址,可以通道查看uboot启动信息。查看地址

 这个地址也可以通过petalinux-config配置,或者可以通过system-config.dtsi文件查看。内容如下:

&qspi {

    #address-cells = <1>;

    #size-cells = <0>;

    flash0: flash@0 {

        compatible = "micron,n25q128";

        reg = <0x0>;

        #address-cells = <1>;

        #size-cells = <1>;

        spi-max-frequency = <50000000>;

        partition@0x00000000 {

            label = "boot";

            reg = <0x00000000 0x00500000>;

        };

        partition@0x00500000 {

            label = "bootenv";

            reg = <0x00500000 0x00020000>;

        };

        partition@0x00520000 {

            label = "kernel";

            reg = <0x00520000 0x00a80000>;

        };

        partition@0x00fa0000 {

            label = "spare";

            reg = <0x00fa0000 0x00000000>;

        };

    };

};

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

 

由于image.ub.bin总共10.4M,这个过程有点漫长;

(3)将板卡设置为QSPI启动模式,先关闭再打开电源,可以看到有启动打印信息。系统固化成功。

​​​​7自动运行程序。

将自动运行脚本,放置在/run/media/mmcblk1p2/autorun.sh

脚本内容为:

 

​​​​​​​8跟新系统文件(可忽略)

​​​​​​​9启动系统

板卡设为qspi启动
pc和板卡连上串口,打开secureCRT(或putty等)串口工具,配置如图,断电重启,系统登录名和密码都默认为:root

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐