Xilinx Petalinux2019.1开发—程序固化(三)

该文详细介绍了如何配置Vivado以支持QSPI外设,然后使用Petalinux进行硬件导入和固件编译,重点讲解了如何将启动文件烧写到FLASH中,包括通过SD卡、JTAG和SDK的三种方法,并提到了自动运行程序和更新系统文件的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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文件的地方)  )

这里我们仅需要修改两个启动方式选项即可。bootkernel的存储位置,都选到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.binflash,必须通过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文件,包含kerneldevicetreeramdisk

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

6.1方法一-SD

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

 

 

1flash_eraseall /dev/mtd0    先擦除

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

2flash_eraseall /dev/mtd2    先擦除

 用于存放image.ubflashcp 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.ubflash地址段里面的内容

       device 0 offset 0x520000, size 0xa00000

        SF: 10485760 bytes @ 0x520000 Read: OK

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

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

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

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

  //0x520000 flash中存放image的偏移地址 offset0xa67604   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

 

### 使用 Vivado 2019.1 进行 FPGA 烧录教程 #### 准备工作 为了成功完成FPGA烧录,确保已经正确安装并配置好Vivado 2019.1开发套件。需要注意的是,在某些情况下,特定版本可能会存在兼容性问题或未解决的bug,这可能导致操作失败[^3]。 #### 创建项目与设计输入 打开Vivado集成开发环境(IDE),通过`File -> New Project...`创建一个新的工程。按照向导提示选择合适的器件型号,并导入预先准备好的HDL源文件或其他形式的设计描述文档。 #### 编译综合与实现流程 利用工具链中的综合器将高级语言描述转换成门级网表表示;之后执行布局布线阶段来确定逻辑单元的具体物理位置及其互连关系。此过程中需注意任何警告信息和错误报告以便及时调整优化策略以满足时序约束条件的要求。 #### 生成比特流文件(Bitstream Generation) 当上述步骤均顺利完成之后,则可以着手于最终目标——即产生用于编程的目标设备所需的.bit格式二进制映像数据。具体路径为菜单栏里的`Implement -> Write Bitstream`选项卡内找到对应按钮点击运行即可触发该任务处理机制。 对于ZYNQ系列SoC而言,如果打算把程序固化至内部存储介质比如NAND Flash当中去的话,还需要额外调用Bootgen实用程序来自定义启动镜像结构体(.bif)从而封装操作系统内核、根文件系统以及其他必要的引导组件等资源项一并打包进去形成完整的可加载映像包供后续部署环节使用。 #### 配置硬件管理器(Hardware Manager) 进入Hardware Manager界面之前先连接调试接口(JTAG/SPI/etc.)到主机端口之上并与之建立通信会话链接。接着依照界面上指示逐步选定待操作的目标板子类型及其实例编号,再上传先前制作完毕后的bitstream文件实施在线刷新动作或者直接写入非易失性记忆体内作为默认启动源之一。 值得注意的是,针对部分特殊应用场景下的确有可能遭遇诸如"NAND write to offset xxxx failed -12"这样的异常状况发生,此时建议尝试更换其他稳定可靠的Vivado发行版如2018.3来进行替代测试看能否绕过此类障碍达成预期目的。 ```bash open_hw_manager connect_hw_server current_hw_target [get_hw_targets */xilinx_tcf/Digilent/*] set_property PARAM.FREQUENCY 6000000 [get_hw_targets */ open_hw_target current_hw_device [lindex [get_hw_devices] 0] refresh_hw_device -update_hw_probes false [current_hw_device] create_hw_bitstream -hw_device [current_hw_device] [get_property PROGRAM.HW_BITSTREAM [current_design]] program_hw_devices [current_hw_device] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值