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

  • 相关阅读:
    OpenCV——图像细化算法
    怎么在电脑桌面上添加待办事项?
    CubeMX+VSCode+Ozone的STM32开发工作流(二)VSCode环境配置
    OpenCV的Mat对象如何定义数组?
    LC-3机器码编程实验 求成绩等级
    FruitJuice for Mac:智能优化电池寿命,Mac持久续航不再难!
    红日靶机vulnstack第二关
    【Atcoder】 [ARC150D] Removing Gacha
    idea Springboot 高校科研资源共享系统VS开发mysql数据库web结构java编程计算机网页源码maven项目
    「Verilog学习笔记」边沿检测
  • 原文地址:https://blog.csdn.net/weixin_43593478/article/details/138200117