0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZYNQ 的启动流程介绍

FPGA技术江湖 来源:FPGA技术江湖 作者:FPGA技术江湖 2022-07-22 10:10 次阅读

一、启动流程介绍

普通的 FPGA 一般是可以从 flash 启动,或者被动加载,但是ZYNQ不行,ZYNQ必须PS端参与

ZYNQ 的启动是由 ARM 主导的,包括 FPGA 程序的加载, ZYNQ 启动一般为3个阶段,最少2个阶段:

1、阶段0:Stage-0 Boot (BootROM

99b8907c-0962-11ed-ba43-dac502259ad0.png

阶段0,主要是运行芯片内部固化的BootROM程序,这个BootROM主要是识别启动模式(spi/sd/nand/nor/)是哪一种?

1)、根据启动模式,设置相应的外设,当然有引脚复用了,还有时钟

2)、将FSBL从启动介质中搬移到OCM(On-Chip Memory)中

3)、跳转到FSBL处执行,将控制权交给FSBL程序

2、阶段1:FSBL(First Stage Bootloader )

FSBL(第一阶段引导加载程序)在BootROM之后启动,这个BootROM将FSBL加载到OCM(On-Chip Memory )

FSBL负责下面的几项工作:

1)、初始化PS端的配置数据(使用Xilinx硬件配置工具提供的);

完成MIO分配、时钟PLL、DDR控制器初始化,SD、QSPI控制器初始化

2)、通过启动模式从启动介质读取bitsttream文件,并用它烧写PL端程序

3)、加载第二阶段BootLoader或者逻辑代码到DDR内存

4)、切换到第二阶段BootLoader或者逻辑代码运行

下图是一个简单的FSBL流程图:

99d5b242-0962-11ed-ba43-dac502259ad0.png

3、第二阶段启动流程:Second Stage Bootloader

第二阶段引导加载程序是可选的,并由用户设计,一般是在跑系统的情况下使用,比如 linux 系统的u-boot(用petalinux 工具制作 linux 系统 )

二、制作FSBL第一阶段的启动代码

1、新建一个名为 fsbl 的 APP,特别注意硬件平台选择我们自己配置的ps_uart_warpper_hw_platform_0 ,点击next

9a034f54-0962-11ed-ba43-dac502259ad0.png

2、在弹出的对话框选择Zynq FSBL,点击Finish

9a213f1e-0962-11ed-ba43-dac502259ad0.png

3、然后软件会自动的进行编译FSBL,时间看电脑的性能

9a36d202-0962-11ed-ba43-dac502259ad0.png

4、等编译完成,修改代码,添加调试宏定义 FSBL_DEBUG_INFO

这个宏可以在启动输出 FSBL 的一些状态信息,有利于调试,但是会导致启动时间变长。

9a4eb05c-0962-11ed-ba43-dac502259ad0.png

5、修改后保存, SDK 默认会自动编译,生成 fsbl.elf 文件。也可以右键点击build project手动编译

6、我们的工程文件夹包含很多外设文件ps7_init.c, nand, nor, qspi, sd 等

9a729986-0962-11ed-ba43-dac502259ad0.png

7、fsbl的 main.c 中,第一个运行的函数就是 ps7_init ,这个fsbl内容也可以根据自己需要进行更改,例如加点自己的打印信息

9a88f1a4-0962-11ed-ba43-dac502259ad0.png

8、创建 BOOT 文件

8.1、选择 APP (就是我们的应用:ps_uart_hello)工程,右键选择 Create Boot Image

9aa6042e-0962-11ed-ba43-dac502259ad0.png

8.2、在弹出的对话框中可以看到BIF文件和BOOT.bin的生成路径

BIF文件是生成BOOT.bin文件的配置文件;

BOOT.bin是我们需要的启动文件,可以烧写到SD卡、QSPI里

8.3、在弹出的对话框,Boot image partitions 列表中有要合成的文件

第一个文件一定是 bootloader 文件,就是上面生成的 fsbl.elf 文件;

第二个文件是 FPGA 配置文件 bitstream,本实验没有PL端程序,所以bitstream,不需要添加;

第三个是应用程序,在本实验中为 ps_uart_hello.elf

8.4、由于没有 bitstream,在本实验中只添加 bootloader 和应用程序。点击 Create Imag

9ac4d336-0962-11ed-ba43-dac502259ad0.png

8.5、在生成的目录下可以找到BOOT.bin文件

9ade44f6-0962-11ed-ba43-dac502259ad0.png

三、SD卡烧写及测试

1、格式化 SD 卡,只能格式化为 FAT32 格式,其他格式无法启动

2、放入 BOOT.bin 文件,放在根目录

3、D 卡插入开发板的 SD 卡插槽

4、启动模式调整为 SD 卡启动

开发板设置拨码为【 101001(1~6 SD卡 模式)】

9afb3278-0962-11ed-ba43-dac502259ad0.png

5、打开串口,开发板上电

6、可以看到SD卡启动成功,红色部分为FSBL打印信息,绿色为我们的APP打印信息

9b153e2a-0962-11ed-ba43-dac502259ad0.png

7、SD卡固化成功

四、QSPI程序固化

QSPI 烧写有2种方式:xSDK软件烧写、或者Vivado软件烧写

五、QSPI烧写及测试(xSDK软件烧写)

首先将开发板设置为JTAG模式【 010101(1~6 JTAG 模式)】

9b47e1a4-0962-11ed-ba43-dac502259ad0.png

1、在 SDK 菜单 Xilinx -》 Program Flash

9b66cbc8-0962-11ed-ba43-dac502259ad0.png

2、参数配置

《1》、Hardware Platform 选择我们自己定制的平台;

《2》、Image FIle 文件选择要烧写的 BOOT.bin;

《3》、FSBL file 选择创龙定制的 fsbl.elf,只有用这个 fsbl 才能烧写(我会另写一篇博客单独写怎么定制fsbl.elf文件);

《4》、选择 Verify after flash,在烧写完成后校验 flash

9b7eddb2-0962-11ed-ba43-dac502259ad0.png

3、注意:第一次固化的时候,里面有uboot在执行,烧写不成功,所以要先在软件点固化,然后快速给开发板上电

9b96974a-0962-11ed-ba43-dac502259ad0.png

4、将启动设置为QSPI【 100101(1~6 QSPI 模式)】,验证固化有没有成功

9bbbf454-0962-11ed-ba43-dac502259ad0.png

5、打印的信息和我们在DUBUG的时候一致,代表我们固化成功

五、QSPI烧写及测试(vivado软件烧写)

1、在 HARDWARE MANGER 下选择器件,右键 Add Configuration Memory Device

9bf01c84-0962-11ed-ba43-dac502259ad0.png

2、选择尝试 Winbond,类型选择 qspi,宽度选择 x4-single,这时候出现 w25q128

选择红框型号,开发板使用 MT25QL256ABA1EW9-0SIT,但是不影响烧录

9c01dece-0962-11ed-ba43-dac502259ad0.png

3、在弹出的对话框,提示我们是否立即烧写,点击OK

选择ps_uart_hello/bootimage/目录的BOOT.bin,选择fsbl/debug/目录下的fsbl.elf文件

9c2cf3d4-0962-11ed-ba43-dac502259ad0.png

4、提示我们当前是处于QSPI模式的,如果编程失败,请更改模式,再次重试

9c4d4382-0962-11ed-ba43-dac502259ad0.png

5、我们将启动模式改为JTAG模式【 010101(1~6 JTAG 模式)】

9b47e1a4-0962-11ed-ba43-dac502259ad0.png

6、断电上电,再次尝试烧写,没有刚才的警告信息了

9c8230c4-0962-11ed-ba43-dac502259ad0.png

7、再将启动模式切换为QSPI模式,QSPI【 100101(1~6 QSPI 模式)】,验证固化有没有成功

9c961a62-0962-11ed-ba43-dac502259ad0.png

六、到此PS端的程序固化成功

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21309

    浏览量

    593133
  • FlaSh
    +关注

    关注

    10

    文章

    1549

    浏览量

    146643
  • 程序
    +关注

    关注

    114

    文章

    3630

    浏览量

    79537
  • Zynq
    +关注

    关注

    9

    文章

    598

    浏览量

    46612

原文标题:学员笔记精选 | ZYNQ7000系列基本开发流程 之 《PS端程序固化》篇

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【Z-turn Board试用体验】+板上资源Zynq7000启动流程的学习

    做一遍也不害怕!Zynq7000,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。所以,它的启动流程自然也和FPGA完全不同,而与传统的ARM处理器类似。Zynq7
    发表于 05-27 20:50

    【Z-turn Board试用体验】+Zynq7000启动流程介绍

    Zynq-7000 Extensible Processing Platform,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。所以,它的启动流程自然也和FPGA完全不同,而与
    发表于 07-22 20:42

    Zynq在非JTAG模式下的启动配置流程

    是怎样实现对自己的配置?  这也是本文将要和大家共同讨论的问题。  Zynq启动流程  在无 JTAG 的模式下,Zynq 是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是
    发表于 01-08 16:33

    ZYNQ芯片开发流程的简介

    PS和PL互联技术ZYNQ芯片开发流程的简介
    发表于 01-26 07:12

    Zynq在非JTAG模式下的启动配置流程

    本文主要与大家分享了Zynq在非JTAG模式下的启动配置流程,旨在让大家对Zynq的三阶段启动模式有一个具体的认识,希望大家多多交流。
    发表于 03-17 07:36

    介绍模拟ARM的启动流程

    的模拟器,如果你想学习嵌入式,但身边没有开发板,这时候你可以尝试使用它来模拟Linux内核的启动,当然它还可以模拟ARM、MIPS等各种CPU架构,本文主要介绍模拟ARM的启动流程(一
    发表于 11-05 06:36

    ZYNQ学习 —— 启动流程分析及各环节文件生成流程(ZedBo

    网络资料收集,关于启动流程的一些注意点,关于开发板ZYNQ系列的包括MIZ702
    发表于 05-11 17:30 3次下载

    启动流程分析及各环节文件生成流程(ZedBoard为例)

    1. ZYNQ启动流程 Zynq7000就如同他的名字一样,Zynq-7000 Extensible Processing Platfor
    发表于 02-09 09:52 1252次阅读

    linux下开发基于zynq的嵌入式操作系统流程

    本文档内容介绍了linux下开发基于zynq的嵌入式操作系统流程,供参考
    发表于 03-15 16:48 17次下载

    详解zynq启动步骤

    本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。
    发表于 10-27 10:47 7032次阅读
    详解<b class='flag-5'>zynq</b>的<b class='flag-5'>启动</b>步骤

    ZYNQ开发双核运行原理及过程

    ZYNQ是一个可扩展平台,就是有FPGA作为外设的A9双核处理器,它的启动流程与FPGA完全不同,而与传统的ARM处理器类似,ZYNQ启动
    的头像 发表于 12-05 10:48 5481次阅读

    ZYNQ启动流程

    ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动的方法。
    的头像 发表于 05-07 09:41 5192次阅读

    Zynq在非JTAG模式下的启动配置流程

    在无 JTAG 的模式下,Zynq 是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是通过 PS 处理器 ARM 核来实现的。需要注意的是,与传统的 Xilinx 7 系列 FPGA 芯片不同,Zynq 是不支持从 PL 端进行直接
    的头像 发表于 10-19 09:11 1025次阅读

    AURIX™ TC3xx启动流程详解

    本文首先介绍整个启动流程的概况,接着分别介绍了firmware启动流程,boot mode的配置
    的头像 发表于 06-06 10:31 2328次阅读
    AURIX™ TC3xx<b class='flag-5'>启动</b><b class='flag-5'>流程</b>详解

    使用JTAG仿真器查看ZYNQ当前启动模式

    本文介绍使用Xilinx SDK软件查看当前Zynq SoC启动模式的步骤
    的头像 发表于 07-07 14:15 1351次阅读
    使用JTAG仿真器查看<b class='flag-5'>ZYNQ</b>当前<b class='flag-5'>启动</b>模式