• Zynq启动流程


    前言

    Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯片引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯片。如下表Boot Devices条目所示,其中黄色代表该条目下的默认设置,比如Boot Devices默认设置是SD Card,默认从SD卡启动芯片

    下图中的JP7-JP11的5个条线帽就是用于设置设备模式引脚电平的

    启动步骤

    PS确定好从什么设备启动后,接着的启动过程分为以下三个阶段
    0. Stage-0 执行BootROM代码,不可修改

    1. Stage-1 执行FSBL(first boot loader)代码,用户可修改。 如果是裸机程序也可以不需要这个阶段直接跳到下一阶段。
    2. Stage-2 执行用户裸机程序或者操作系统的启动引导程序SSBL(second boot loader)

    关于BootROM:位于Zynq片内,功能是初始化L1 cache和基本的总线系统,以及从指定的外部存储器加载Stage-1的FSBL代码到片内存储器(OCM)。但是要使Stage-0之后的代码被Stage-0的BootROM识别,还需要为Stage-0之后的代码(可能是Stage-1的FSBL,也可能是Stage-2的裸机程序,因为没有调用BSP函数的裸机程序是可以不需要FSBL的)添加一个头部,制作成引导镜像。可以使用SDK的BootGen工具为裸机程序elf文件创建引导镜像Boot.bin,将其复制到SD卡中,并且设置板子从SD卡启动就可以执行程序。

    使用SDK工具创建SD卡启动镜像

    BOOT.BIN= f(FSBL.elf+PL.bit+PS.elf)

    PL.bit和PS.elf

    采用vivado 创建PS工程中生成的PL.bit和PS.elf。

    制作FSBL.elf

    新建Zynq FSBL工程


    等待工程建立完毕,FSBL.elf就在工程文件夹的Debug文件夹下

    制作BOOT.BIN

    使用SDK的Create Boot Image

    选择好output路径放置生成的BOOT.BIN和output.bif。依次添加FSBL.elf、PL.bit、PS.elf,FSBL.elf文件的Partition type选择bootloader,其余两个文件选择datafile。最后Create image

    启动

    将BOOT.BIN复制到SD卡,设备模式引脚设为SD卡启动,板子上电之后就可以观察到程序运行
    下图没有接usb线,只接了电源线,这是从SD卡启动了

  • 相关阅读:
    自制凉皮
    牛人
    史记
    阅读detection
    最近的购书清单
    不要轻易挑战用户的习惯,否则会被用户打脸!
    INVEST原则的应用
    谈谈Backlog梳理活动
    要写封闭式的用户故事
    敏捷教练的八种失败角色
  • 原文地址:https://www.cnblogs.com/uestcman/p/10337965.html
Copyright © 2020-2023  润新知