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

  • 相关阅读:
    半夜被慢查询告警吵醒,limit深度分页的坑
    5款高效率,但是名气不大的小众软件
    基于非局部滤波图像去噪方法
    Python基础知识:运算符详解
    (零)多输入多输出通道
    (pytorch进阶之路三)conv2d
    21天学习挑战赛-静态链表以及一个带头结点的 线性链表类型 的定义
    FTP后门
    TCP 流量控制与拥塞控制
    pandoc安装使用(markdown转换为docx)
  • 原文地址:https://blog.csdn.net/weixin_43593478/article/details/138200117