• 【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章程序固化内容,其有详细的指导。

  • 相关阅读:
    【第二章:Java开发岗:MySQL篇】
    Linux命令行解释程序
    网工内推 | base郑州,上市公司,最高15薪,五险一金全额缴
    vue+elementui实现el-input动画效果
    JMeter处理接口签名sign
    前端学习开发之【Vue】-中
    QT点击事情实现图片切换
    Angular 应用开发里使用 ForRoot 解决 Lazy Loaded Module 里单例行为丢失的问题
    学习笔记-ThinkPHP 之 SQLI审计分析(三)
    3D打印CLI文件格式的读取
  • 原文地址:https://blog.csdn.net/weixin_43593478/article/details/138200117