当前位置: 首页 > news >正文

ZYNQ程序固化

文章目录

  • 一、简介
  • 二、固化操作
    • 2.1 生成固化文件
    • 2.2 固化到SD卡
    • 2.3 固化到Flash
  • 参考

将程序存储在非易失性存储器中,在上电或者复位时让程序自动加载运行。
这个过程需要启动引导程序( Boot Loader)参与,Boot Loader会加载FPGA配置文件,以及运行在ARM中的软件应用。

一、简介

ZYNQ Soc的启动和配置过程中,既需要PS的配置信息,又需要PL的配置信息。
ZYNQ系列是没有办法只固化PL的程序的(NorFlash、SD卡等是连接在PS端的)。

PS 支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash 或 SD 卡)。
ZYNQ SoC 的启动由片上的 BootROM 开始。
片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器, 它包含了 ZYNQ 所支持的配置器件的驱动,里面的代码是不可修改的。

BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置 BootROM 的运行。
BootROM 执行之后,下一个配置阶段被称为 First-Stage Boot Loader(FSBL),它是由设计者所创建的。 FSBL 可以配置 DDR 存储器和硬件设计过程中所定义的一些外设。这些器件需要在加载软件应用及配置 PL 之前就初始化完毕。
FSBL 的工作内容:

  1. 初始化 PS
  2. 如果提供了 BIT 文件,则配置 PL
  3. 加载裸机应用程序到 DDR 中
  4. 开始执行裸机应用程序

PL 的配置是通过处理器配置访问接口(Processor Configuration Access Port,PCAP)进行的,它允许对 PL 进行部分配置或者完全配置。

ZYNQ 的启动镜像需要如下文件:

  1. Boot ROM 头文件,控制 Boot ROM的设置
  2. First-Stage Boot Loader,FSBL文件
  3. PL 配置文件,即 BIT 文件
  4. PS软件应用程序,即ELF文件

Boot ROM Header文件是自动生成的。
ZYNQ SoC 使用多个模式引脚来决定配置器件的类型、软件的存储位置以及其他的系统设置,这些引脚共享PS 端的MIO 引脚。
总共有 7 个模式引脚,分别为 MIO[8:2],前四个引脚定义启动模式,第五个引脚定义是否使用 PLL,第六个和第七个引脚定义上电过程中 MIO bank0 和 bank1 的 bank 电压。
在这里插入图片描述
通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL:

  • ARM PLL,产生时钟用于CPU和互联
  • IO PLL,产生时钟用于IO外围设备
  • DDR PL,产生时钟用于DDR、DRAM 控制器和AXI-HP接口

在上电复位(Power On Reset,POR)之后,硬件会采集模式引脚的状态,禁用器件内部的模块,并根据模式引脚的设置选择是否使能 PS 的时钟锁相环。

整个系统的启动过程如下图
在这里插入图片描述

二、固化操作

2.1 生成固化文件

在Block Design 的ZYNQ Processing System模块中要使能SD外设和QSPI外设。

  • 使能SD外设,将程序固化到SD卡中。
  • 使能QSPI外设,将程序固化到Flash中。

在这里插入图片描述

在创建platform的步骤中需要勾选Generate boot components (生成启动组件)选项,勾选之后,软件会自动在硬件平台工程里生成 fsbl 的相关文件。
在这里插入图片描述

工程编译后,在系统工程和应用工程下会各自生成一个Debug文件夹。

  • 系统工程下的 Debug 文 件里包含的是 BOOT.BIN(固化文件)
  • 应用工程下的 Debug 文件里包含的是 elf文件(应用工程烧录文件)

同时,硬件平台工程文件夹下也生成了 fsbl.elf(启动引导文件)

也可以手动生成BOOT.BIN文件
在这里插入图片描述
在这里插入图片描述
bif文件是BOOT.BIN文件的参数描述。
3个文件的添加顺序不能乱。

2.2 固化到SD卡

将生成的 BOOT.bin 文件拷贝到 SD 卡根目录下。(SD卡文件系统为FAT32格式)。
将板卡启动模式设置为从SD卡启动。

2.3 固化到Flash

将程序固化到 QSPI Flash 需要使用 JTAG 下载器。( 此时要设置为从JTAG启动 )
Vitis 软件的菜单栏中点击"Xilinx->Program Flash"。
在这里插入图片描述
在弹出的 Program Flash Memory 界面中中配置BOOT.BIN文件路径和FSBL文件路径。
在这里插入图片描述
点击"Program",开始对 Flash 进行编程。
Flash编程完成后,将板卡启动模式设置为从QSPI Flash启动。
在这里插入图片描述

参考

【正点原子】启明星ZYNQ之嵌入式Vitis开发指南v1_2

相关文章:

  • AIGC:让生成式AI成为自己的外脑(文末送书)
  • 操作无法完成,因为文件已在Windows资源管理器中打开,如何解决?以及如何将哔哩哔哩下载好的视频导出到电脑中播放?— 以vivo手机为例
  • 8.多折线图(MuliLineChart)
  • Win10 中 通过脚本弹出TF卡
  • Linux 下查看端口以及释放端口
  • 【51单片机系列】proteus中的LCD12864液晶屏
  • Unity之Cinemachine教程
  • Vue好看的组件库:Element
  • 7.FPR/TNR-机器学习模型性能的常用的评估指标
  • 【2024】新建mysql数据库,如何选择字符集和排序规则
  • Spring Security放行Knife4j静态资源
  • uniapp canvas做的刮刮乐解决蒙层能自定义图片
  • macOS Sonoma 14.3(23D56)发布(附黑/白苹果系统镜像)
  • 【AI大模型】WikiChat超越GPT-4:在模拟对话中事实准确率提升55%终极秘密
  • python三数之和
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • es6--symbol
  • ES6系列(二)变量的解构赋值
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Python十分钟制作属于你自己的个性logo
  • tensorflow学习笔记3——MNIST应用篇
  • Vue2.x学习三:事件处理生命周期钩子
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 详解移动APP与web APP的区别
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #162 (Div. 2)
  • #DBA杂记1
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Note)C++中的继承方式
  • (三) diretfbrc详解
  • (十六)一篇文章学会Java的常用API
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)Dubbo快速入门、介绍、使用
  • (转) 深度模型优化性能 调参
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)大型网站架构演变和知识体系
  • (转载)Google Chrome调试JS
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ./configure,make,make install的作用
  • .NET 5种线程安全集合
  • .NET CORE Aws S3 使用
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET值类型变量“活”在哪?
  • .project文件
  • @KafkaListener注解详解(一)| 常用参数详解
  • @ModelAttribute 注解
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • []error LNK2001: unresolved external symbol _m