【ZYNQ】zynq启动模式及程序固化

一、前言

由于zynq含有arm cpu ,其启动模式由ps主导,与纯逻辑的fpga不相同,此处做一个记录。

二、zynq启动模式

关于zynq的启动模式详细内容可以参考官方文档:ug585-Zynq 7000 SoC Technical Reference Manual,第六章。

2.1 启动方式配置引脚

一般纯逻辑的fpga主要由bank0的mode0/1/2三个引脚来确定启动方式,zynq则由MIO2-8来确定,具体情况如下表:

2.2 zynq启动流程

  zynq 和大多数 arm 启动过程一样,启动过程也分为 3 个阶段,这三个阶段分别称之为阶段 0、阶段 1 和阶段 2。

  阶段 0:即传统的 BootROM 过程。 ZYNQ 芯片 ROM 里面固化了一段不可修改的程序,只要 ZYNQ 一上电,这段程序就会执行。它将对 ZYNQ 的 NAND、 NOR、 SD 等基本外设控制器进行初始化。把 SD 卡这类易失的存储器件初始化后,就会把其中的程序拷贝到 ZYNQ 的 OCM(On-chip memory)。这个被拷贝到片上 RAM 执行的程序就是程序固化需要制作的文件——BOOT.bin。

  阶段 1: BOOT.bin 加载到 OCM 上开始执行。 BOOT.bin 由 FSBL.elf+该工程.bit+该工程.elf 构成。阶段 1 要做的就是:首先配置 PS 部分, PS 完成初始化后,会去配置 PL 部分,最后去加载阶段 2 的代码。

  阶段 2:这一阶段是可选的,主要是为了完成 Linux 系统启动过程。

整个启动过程如下:

三、程序固化

程序固化的关键就是制作boot.bin文件,简单而言就是: BOOT.bin = FSBL.elf + 该工程.bit(vivado_pl) + 该工程.elf(sdk_ps)。在工程硬件和软件编译后,会产生该工程的 bit 文件和 elf 文件。 FSBL.elf可以用xilinx 的示例工程Zynq FSBL直接生成。凑齐三个文件后,则可以直接创建boot.bin文件。然后将bin文件放到sd卡或者下载到QSPI flash中,并将启动模式选择为对应的方式便可以将其固化。

详细的步骤中文资料可以参考正点原子的sdk开发文档的第7章程序固化内容,其有详细的指导。

相关推荐

  1. xilinx fpga 程序固化(含sdk)

    2024-04-29 10:56:03       14 阅读
  2. DockerFile启动jar程序

    2024-04-29 10:56:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 10:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 10:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 10:56:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 10:56:03       20 阅读

热门阅读

  1. 【c++】【贪心】排队接水

    2024-04-29 10:56:03       13 阅读
  2. 算法:不同的二叉搜索树

    2024-04-29 10:56:03       9 阅读
  3. springboot全局处理sql异常

    2024-04-29 10:56:03       7 阅读
  4. LSTM(Long Short-Term Memory)

    2024-04-29 10:56:03       11 阅读
  5. IO流体系

    2024-04-29 10:56:03       21 阅读
  6. 智商测试:揭秘你的潜在能力与优势

    2024-04-29 10:56:03       13 阅读
  7. 什么是scrum中的3355?

    2024-04-29 10:56:03       11 阅读
  8. 《AI音频类工具之三——Riffusion》

    2024-04-29 10:56:03       15 阅读
  9. 代谢组数据分析三:差异分析

    2024-04-29 10:56:03       16 阅读