如何为zynq-7000创建BOOT.bin文件

如何为zynq-7000创建BOOT.bin文件,第1张

1、用于创建BOOT.bin需要的文件

(1)u-boot.elf:在Linux下编译后生成u-boot文件,再强制改名为u-boot.elf文件,得到之。

(2)zynq_fsbl_0.elf:在EDk下创建得到之。

(3)system.bit::在PlanAhead中生成的bit文件;该文件不是必须的,没有该文件时,相当于把Zynq只当ARM来用。

2、创建BOOT.bin文件

(1)只含有PS部分的设计

在SDk下,Xilinx Tools ->Craete Boot

Image得到如下图所示:

(2)同时包含有PS和PL设计

在(1)中所述生成的BOOT.bin文件不含有给PL部分配置的*.bit文件,即只是ARM部分的运行代码。要使PL部分也能运行,需要在创建BOOT.bin文件时,加入PL部分的设计生成system.bit文件

相比而言,由于(1)中生成的BOOT.bin文件没有PL部分的设计,也就无需对PL进行配置,所以启动时会快一些,而(2)中的BOOT.bin文件启动要慢一些,大概有30s~40s不等(依赖于system.bit文件的大小)。

步骤:

1. 首先在vivado SDK中分别建立两个工程

注意:如上图所示,Core0 工程建立时选择ps7_cortexa9_0, Core1 工程建立时选择ps7_cortexa9_1

完成后如下图所示:

2.配置Core1即从核中的BSP文件

在下图中画圈处,配置:-DUSE_AMP=1

3 配置Core0和Core1的DDR空间分配

通过修改lscript.ld文件中的内容,可以改变在存储器中的执行位置,

因为ELF文件是加载到DDR中执行的,所以两个DDR地址不能重合

Core0的配置 :画圈处 栈空间也要分配,防止溢出

Core1配置

4 建立FSBL文件,并配置mian()文件

配置main() 跟第三步中的DDR空间配置有关

在FSBL的src中找到main.c文件打开,在里面添加下面一段代码,用于启动CPU1:

#define sev() __asm__("sev")

#define CPU1STARTADR 0xFFFFFFF0 //Core1 DDR配置中的SIZE大小

#define CPU1STARTMEM 0x10000000 //Core1 DDR配置中的起始地址

void StartCpu1(void)

{

#if 1

Xil_Out32(CPU1STARTADR, CPU1STARTMEM)

dmb()//waits until write has finished

sev()

#endif

}

将上面的代码在main()中添加到:

Load boot image的位置,将CPU1的启动函数,放置于此位置,改动后的代码段如下:

5 生成mcs文件和烧写mcs文件到QSPI Flash

单击‘Core1’,选择Xilinx Tools –>Create zynq boot image,选择Add,选择文件…/ Core1/Debug/ Core1.elf,点击打开。然后选择Core1.elf, Core0.elf在Core1.elf上面。然后在Output pach后面把boot.bin修改为Boot.mcs。然后点击 Create Image

选择Core0

选择文件生成存储地址

选择MCS

画圈处是添加的文件

顺序为:FSBL.elf.bit文件 Core0.elf Core1.elf

点击Create Image 生成.mcs文件

6 完成 *** 作 将 .MCS 文件烧写进板子里

bin文件用来烧写到SD卡,mcs文件用来烧写到QSPI flash中 ,

选择Xilinx Tools –>Program Flash,在Image File后面选择刚才生成的Boot.mcs文件,Offset为0x0,Flash Type为qsip_single。勾选Blank check after erase和Verify after flash。检查开发板上电和连线状况,然后点击Program

1、创建硬件工程

启动XPS,创建Lab3工程。因为PS系统和FPGA连接是采用AXI接口,因而选择内部互联类型(Interconnect Type) 为AXI。

选择设计平台为Zynq ZC702

到外设配置界面,系统会默认有GPIO_SW 和 LEDs_4bits 这两个外设,我们不需要,remove之

2、添加AXI GPIO外设

工程建立后,在IP Catalog中,找到General Purpose IO,找到 AXI GPIO,双击添加到系统中。

修改元件实例化名称为axi_LDs,这个名称就是将要实例化连接到PS的元件。将长度改为8,其他默认。

点开Bus Interfaces标签,可以看到系统汇总现在有PS(这里是processing_systems7_0) 、添加的外设axi_LDs 和AXI内部互联总线axi_interconnet_1。可以看到对于 axi_interconnet_1来说,PS是AXI主设备,外设是AXI从设备。

在Port标签,将IO_IF中的GPIO_IO_O(output)设置为External Ports,将Port名称改为LD。LD就是顶层对外的引脚名称

3、设定引脚约束

在project标签中,找到system.ucf约束文件,

将其内容改为

4、点击Generate BitStream,生成bitstream

如果没有错题,控制台会提示信息如下,表明成功生成了FPGA的配置bitstream文件

5、将硬件配置导入到SDK,启动SDK。这里需要将bitstream和BMM文件同时包括到SDK中。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11554498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存