Vivado下固化 FLASH的技巧

文章转自:http://xilinx.eetrend.com/content/2019/100042185.html

 

今天发布一个Vivado 下固化 FLASH的压缩和提高加载速度的技巧和方法。这个方法对于需要快速加载程序的场合特别有用比如PCIE 需要满足200MS的加载时间才能实现上电后系统能够识别到开发板。

对于XILINX FPGA 如何缩小 bit文件或者MCS或者bin文件大大小,以及如何配置QSPI FLASH的加载速度,对于很多初学者来说还不知道,有必要推广下。

1、纯FPGA

#bit compress spix4 speed up

#当 CFGBVS 连接至 Bank 0 的 VCCO 时,Bank 0 的 VCCO 必须为 2.5V 或 3.3V

set_property CFGBVS VCCO [current_design]

#设置CONFIG_VOLTAGE 也要配置为3.3V

set_property CONFIG_VOLTAGE 3.3 [current_design]

#设置bit是否压缩

set_property BITSTREAM.GENERAL.COMPRESS true [current_design]

#设置QSPI的加载时钟

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

#设置QSPI的位宽

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

#设置QPSI的数据加载时钟边沿

set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]

2、ZYNQ

zynq芯片加载速度比较慢,那么压缩bit后可以显著提高加载速度

#bit compress

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

set_property CFGBVS VCCO [current_design]

set_property CONFIG_VOLTAGE 3.3 [current_design]

对于ZYNQ芯片至少得有fsbl和bit一起产生boot.bin才可以正常启动,这个和纯FPGA不一样。

相信这个技巧对于初学者来说一定很有用。

### 回答1: 要将Vivado SDK中的程序固化Flash中,需要执行以下步骤: 1. 在Vivado中生成比特流文件和硬件描述文件(.hdf)。 2. 在Vivado SDK中创建一个新的应用程序项目,并将比特流文件和.hdf文件导入到该项目中。 3. 在应用程序项目中添加一个Bootloader,以便在启动时从Flash中加载程序。 4. 在应用程序项目中添加一个Flash驱动程序,并将其配置为与目标Flash芯片兼容。 5. 在应用程序项目中编写程序,并将其编译为可执行文件。 6. 将可执行文件下载到目标板上,并使用Bootloader将其固化Flash中。 以上是将Vivado SDK中的程序固化Flash的基本步骤,具体操作细节可以参考Vivado SDK的官方文档或相关教程。 ### 回答2: Vivado 是 FPGA 设计中的工具软件,它提供了硬件设计、综合、布局和调试等方面的支持。在 Vivado 中,使用 SDK 开发板上的处理器系统,可以将程序编译成 .elf 文件,然后将这个文件固化到板子上的 flash 中,使得程序可以永久存储。下面将介绍如何将程序固化flash 中。 一、生成 .elf 文件 首先,在 Vivado 上完成处理器系统的设计、综合和实现,然后使用 SDK 编写好程序代码。编译代码之后,将生成一个 .elf 文件,就可以使用这个文件进行后续的步骤。 二、设置 Flash 的参数 1. 选择 Flash 板子的型号,并打开其官方提供的 data sheet。 2. 打开 Vivado,进入 SDK 界面,找到 “xilinx/flash” 示例工程,根据需要修改占用的 Flash 资源,以及需要设置的端口地址和大小。 3. 修改 Flash 板子的参数。在工程左侧的 C 文件栏中,找到配置 Flash 的 C 文件,根据官方 data sheet 修改 Flash 的参数。之后就可以进行下一步的操作。 三、配置 U-boot 1. 制作 U-boot。将 Scratchpad 段地址设置为 0xfff00000,可运行 .bin 文件的所在地址为 0xff800000。制作 U-boot 时,要根据处理器架构选择合适的交叉编译器,生成可执行的 .bin 文件。 2. 编辑 U-boot。使用 Vivado SDK 中的 “Xilinx System Debugger” 工具,进入到 U-boot 的汇编代码中。在这部分代码中,需要修改部分关键参数,如启动时同步存储器和 HPS CoreSight Trace Control 端口的目标地址、启动处理器架构的配置信息等。修改完成之后保存文件。 四、编译程序代码 修改完成之后,将 U-boot 的汇编代码与程序代码进行编译,生成 .elf 文件。在生成的 .elf 文件中,U-boot 和程序代码都将被包含在内。 五、固化程序到 FLASH 1. 打开 SDK 操作命令窗口,使用命令将 U-boot 和程序 .elf 文件复制到 TFTP 服务器目录中。具体命令如下: TFTP PLOAD 0x10800000 u-boot.bin TFTP PLOAD 0x10C00000 fit-it.so.1.0.0 2. 设置 FLASH 芯片的操作方式,并使用“bootcmd”命令将存储在 TFTP 服务器目录中的 U-boot 程序和应用程序分别存储到存储器中,代码如下: setenv interface_type 4 tftpboot 0x10800000 u-boot.bin;sf probe 1;sf erase 0 0x80000;sf write 0x10800000 0 0x80000; tftpboot 0x10C00000 fit-it.so.1.0.0;sf write 0x10C00000 0x80000 0xC00000; 3. 重启开发板。这时候 U-boot 已经被成功固化Flash 中了。 通过以上步骤,实现了 Vivado SDK 中程序的固化flash 的操作。在开发 FPGA 设计时,这样的操作十分重要,能够让程序永久保存,并保证更换芯片不受影响。 ### 回答3: Vivado SDK是一款全面的开发工具,配合Xilinx FPGA完成设计、验证、集成和部署。固化程序到flashVivado SDK中的重要功能之一,可以使得FPGA启动时自动运行预先设定的程序。 固化程序到Flash有以下三个步骤: 1.生成比特流文件:Vivado生成的比特流文件是FPGA的二进制文件,也就是携带着初始化和逻辑的文件。在Vivado的“File”->“Export”->“Export Bitstream”中可以生成这个文件。 2.生成FSBL(First Stage Bootloader):在Vivado的“Project”->“Export Hardware”中,可以生成FSBL文件。该文件是启动FPGA的引导程序,作为FPGA启动的第一阶段被载入到系统内存中,其主要功能是初始化PLL、DDR、时钟等硬件资源。 3.生成Boot.bin文件:在Vivado SDK中,通过将应用程序和FSBL文件合并生成Boot.bin文件,这个文件将被固化Flash中。 生成Boot.bin文件的具体步骤如下: (1)打开Vivado SDK,点击“File”->“New”->“Application Project”。 (2)填写项目名称和存储路径,选择“Create new project from”中的“Hello World”模板,点击下一步。 (3)在设置页面中,选择勾选“FSBL”和“Create Boot Image”,点击下一步。 (4)在Boot Image Configuration页面中,填写Boot Image文件名,选择对应的“FSBL”,再添加自己编写的应用程序(ELF文件),点击Generate。 (5)在Vivado SDK Console的输出中,可以查看Boot.bin文件生成的位置。 (6)将Boot.bin文件固化Flash中,需要使用第三方工具,如Xilinx提供的XMD。运行XMD,连接调试器,输入“flash program c:/path/boot.bin"(未考虑路径问题),即可完成固化。 总之,Vivado SDK固化程序到Flash需要生成比特流文件、FSBL文件和Boot.bin文件,然后使用XMD等第三方工具进行固化。同时还需要注意一些细节问题,如路径与文件名设置、调试器的连接与命令输入等问题,在操作时需要仔细确认,确保固化过程顺利完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值