固化程序和配置到SD卡和 QSPI FLASH

固化程序就是PS部分产生的二进制代码,配置是PL部分产生的比特流文件   
ZYNQ7启动的三个阶段:
BOOTROM(处理器固化的引导程序,初始化基本的处理器硬件,PLL,处理器等,判断跳线设置的模式MIO2 - MIO8 ,从指定的位置调入First Stage BootLoader(第一阶段加载文件);识别启动文件头部并调用FSBL到OCM(只有192K ) , 开始执行BOOTLOADER) ->
FSBL(初始化特定的片内外硬件,比如DDR2(内存)以及以太网外设等,这部分代码长度限制在192K可以由用户修改,之后将用户程序用通讯介质或者存储介质调入DDR2存储器,运行) ->
用户程序或者SSBL(比如LINUX 引导程序,有此二级引导程序的原因是:FSML限制了192K的大小)。
2,图形化生成启动文件:First Stage BootLoader、比特流文件、用户实际代码。

实例:把上一个程序固化到SD卡和QFLASH里面
先打开路径E:\FPGA\Example\pl_ps_led_sw_guhua\project_1\project_1.sdk
再打开SDK软件(路径在Xilink里面)-把路径粘贴到上面-工具栏下Create Boot Image(启动映像)

在上一行路径下新建一个文件boot_img-把比特流配置文件拷进去(路径E:\FPGA\Example\pl_ps_led_sw_guhua\project_1\project_1.runs\impl_1里面的.bit文件)-把二进制执行文件拷进去(路径E:\FPGA\Example\pl_ps_led_sw_guhua\project_1\project_1.sdk\LED_SW_TEST\Debug下的.elf文件)-把启动文件拷进去(官方自带,路径E:\FPGA\教学视频\6,固化程序和配置到SD卡和 QSPI FLASH\ZedBoard_OOB_Design6\ZedBoard_OOB_Design\boot_image下的zynq_fsbl.elf)
固化程序和配置到SD卡和 QSPI FLASH_第1张图片

接着上面启动映像
固化程序和配置到SD卡和 QSPI FLASH_第2张图片

上面不是.elf是.bif
固化程序和配置到SD卡和 QSPI FLASH_第3张图片
同样的方式把另外两个文件添加进去,它们的文件格式都选datafile-然后下图

固化程序和配置到SD卡和 QSPI FLASH_第4张图片

后缀如果是.mcs就是16进制文件,可以直接向spi-flash里面调用烧写
同样的步骤生成一个16进制文件,下图是有变动的地方:

固化程序和配置到SD卡和 QSPI FLASH_第5张图片
现在路径下有这些文件

固化程序和配置到SD卡和 QSPI FLASH_第6张图片
把BOOT.bin拷到SD卡,从SD卡启动就可以了

下一种四线SPI配置烧录过程:工具-Program flash
固化程序和配置到SD卡和 QSPI FLASH_第7张图片
接下来就下载进去了,然后把启动方式改成QSPI启动(跳线帽下上下下下),再开关一下电源就可以看见运行效果(用开关控制LED状态)

大体流程是先给ZYNQ处理器下一个程序,然后这个程序通过JTAG口和上位机通讯,把要写的数读到处理器上,然后处理器再把程序写到QSPI里面
 

3,命令行生成启动文件。

上面添加三个文件也可以用下图方式:
固化程序和配置到SD卡和 QSPI FLASH_第8张图片
上面这些操作也可以用命令行实现:

固化程序和配置到SD卡和 QSPI FLASH_第9张图片
把从别处找到的makeboot.bat和bootgen.exe复制到上面路径下, makeboot更改里面的内容为上图,然后双击 makeboot就会生成BIN和mcs文件(不需要SDK直接生成),以下是剩余完整脱机操作:
固化程序和配置到SD卡和 QSPI FLASH_第10张图片
剩下的是总结:

4,PL配置的时机由PS来决定。 PS不用到PL外设之前可以先不配置PL(例如这个例子的Flash Loader用到了SD卡和QSPI,但是没用到PL所以会在合适的时候再配置比特流文件),PS及其专属的外设可以独立运行。并且FSBL我们可以不用来做引导,可以直接运行小的程序(比如把bootloader换成别的文件也会执行,但是不加载下面的比特流文件和用户代码,加不加载取决于程序怎么写)。

5,启动文件本身就集合了多个文件,需要被BOOTROM识别,必须按照BOOTROM的头部格式来组织,其实这个启动文件本身内部就相当于有了文件系统,这点尤其是在没有文件系统的QSPI FLASH 上必须需要的。
6,BOOTGEN 生成的启动文件BOOT.BIN或者BOOT.MCS有两部分基本作用:包含了可以被BOOTROM和官方FSL识别的ROM头。前者是必须的,后者可选的。FSBL是用户可选配置,所以可以采用任何具体的方式进行配置了,可以不从BOOT.BIN文件里面要PL配置的配置和SSBL。

通过看FSBL的程序可以看到关于SD卡的程序都是灰色的,所以即使FSBL能编译过也不会从SD卡中加载程序(这是不可用的),如果用到了SD卡需要把SD卡的接口打开    

通过以下方法查看FSBL程序:
固化程序和配置到SD卡和 QSPI FLASH_第11张图片
固化程序和配置到SD卡和 QSPI FLASH_第12张图片
这样生成的FSBL不能直接用,还是用官方的zynq_fsbl.elf

你可能感兴趣的:(FPGA)