SDK烧Flash

启动CPU1

在CPU0处需要加入一下代码以启动CPU1

void start_cpu1()
{
	Xil_Out32(0Xfffffff0, 0x1000000);
	dmb();
	sev();
}

其中0x1000000需要和CPU1的ddr地址保持一致,该地址可以在CPU1的lscript.ld文件中找到。

7

创建FSBL工程

选择file->new->application project,创建新工程命名FSBL。

5

然后点击next,选择最后一项Zynq FSBL,点击Finish即可。

6

创建Boot Image

在Project Explorer空白处或CPU0的工程文件夹右键,选择Create Boot Image,如图所示。

1

选择create new BIF file,如果这个SDK工程之前没有创建过Boot Image,默认就是创建新的BIF,然后两个output文件夹选择默认即可。最下面的文件路径框需要按顺序放入FSBL的elf文件,工程的bit文件,SDK的elf文件,如果是双核SDK,就依次选择cortex0和cortex1的elf文件,然后点击create image即可。然后在刚刚的output路径下就会生成两个文件,一个bin文件,一个bif文件。

烧写Flash

点击SDK上方导航栏的Program Flash按钮,然后选择刚刚生成的bin文件和FSBL的elf文件,勾选verify after flash,其它默认即可,点击Program。

2

3

特殊情况

一般情况下按照上述步骤就可以顺利烧写Flash,但是如果这片FPGA在之前烧写到一半被强行终止,上述步骤就会出现失败的情况。此时需要在FSBL工程中强制启动模式为JTAG模式,但是生成的bin文件还是需要在默认模式下生成,因此,按照上述步骤失败再来执行该步骤不需要重新生成bin文件。

打开FSBL工程的main.c文件,找到Read bootmode register代码段,强制BootModeRegister为JTAG_MODE。然后重新执行烧写Flash步骤即可。

4