本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。

硬件启动过程

1. 重新上电或POR复位后进行硬件启动过程

2. 扫描“启动引脚”设置,并存入只读寄存器slcr.BOOT_MODE中

3. 若使能pll,则等到pll输出时钟;若旁路pll,则直接使用ps_clk时钟

更详细硬件启动过程可以参考下图

BootROM

BootROM在POR复位后经过硬件启动后自动运行,也可在非POR复位后直接运行(不经过硬件启动),其内容固化在内部ROM中,不能修改,主要初始化MMU和一些系统资源(以使其满足BootROM执行的要求)以及加载FSBL程序段等。BootROM在CPU 0执行,而CPU 1执行WFE指令

主要过程如下:

1. 硬件启动后BootROM将初始化MMU、NAND、NOR、QSPI、SD和PCAP等基本外设

2. 判断启动设备(决定于硬件启动过程时扫描的“启动模式”引脚,即寄存器slcr.BOOT_MODE)并搜索boot镜像头信息,各启动模式搜索范围:

① Quad-SPI,头16 MB空间搜索

② NAND,头128MB空间搜索

③ NOR,头32MB

④ SD卡中只加载一次,不会搜索

3. BootROM会根据启动模式配置MIO,还会根据读取的boot镜像头信息的“寄存器初始化参数”部分配置时间优化寄存器

4. 从指定启动设备中加载SFBL到OCM(加载时也会读取头部信息确定加密状态,文件长度等,若加密则还需解密后加载到OCM,BootROM头信息都不会加密),另外还支持直接在QSPI或NOR中执行(从头部信息中文件长度为0时,这时就不用加载到OCM了)

5. 跳转到SFBL中执行,BootROM关闭

其它说明:

•  如果已经为加密模式,经过非POR复位后,读取BootROM头信息检测到一个非加密的boot,系统将会被锁定

•  如果检测到BootROM中有错误,系统也会被锁定

•  如果为加密模式则需要等待PL上电才能继续加载,因为解密验证模块(AES and HMAC)在PL部分;而无论时加密模式还是非加密模式再配置.bit文件时都要等待PL部分准备好(通过检查寄存器devcfg.STATUS

[PCFG_INIT])

FSBL

FSBL主要初始化更多的外设(如DDR)、初始化PL部分和加载SSBL或裸机程序等。

主要过程如下:

① 初始化MIO、PLL、CLK等,ps7_init()中所做

② 根据vivado(或XPS)中设置完成PS端初始化

③ 判断启动设备(决定于寄存器slcr.BOOT_MODE)并从中扫描并加载.bit和SSBL或裸机程序

④ 用.bit配置PL部分(FSBL通过PCAP控制器配置PL部分)

⑤ 加载SSBL或裸机程序到DDR中

⑥ 跳转到SSBL或裸机程序中执行

对于FSBL程序通常使用SDK中自带模板,但是不同于BootROM不可改变,FSBL可以手动修改实现一些自定义的内容。而且可以像裸机程序一样调试排错(在fsbl_debug.h中定义宏FSBL_DEBUG_INFO(#define FSBL_DEBUG_INFO)可以查看FSBL打印的调试信息)

注意:由于OCM大小为256KB,而在BootROM阶段OCM高64KB(OCM 从0x0000_0000开始192KB,从0xffff_0000开始64KB)用于存储BootROM头信息和变量,在BootROM执行完成后才可用于FSBL,所以FSBL大小要小于192KB。

其它说明:

•  当从外部器件中启动为非加密模式时,才能使用JTAG进入调试模式

•  直接在NOR or Quad-SPI中运行的FSBL必须为非加密模式

•  FSBL大小要小于192KB,但是直接在flash器件(NOR or Quad-SPI)中直接运行的情况没有这个限制

•  AES一次只能解密1Byte,所以PCAP在4个时钟周期内只能发送一个32bit数据(加密配置时)

SSBL

通常SSBL就是裸机程序,对于linux启动来说就是u-boot之类的bootloader。

对于没有使用PL部分的设计,即只把zynq当做普通ARM来使用,则完全可以不用FSBL,而通过BootROM直接加载裸机程序并运行(使用方式和注意事项请看“zynq的三种启动方式(JTAG,SD,QSPI)”)。

以上内容主要来源为UG585

Zynq linux启动过程,详解zynq的启动步骤相关推荐

  1. android 启动过程详解,Activity的启动过程详解(基于Android10.0)

    一.概述 话说Android中有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.咱们最常接触也是用户直接感受到的便是Activity了, ...

  2. Linux开启动过程详解

    Linux开启动过程详解 Linux启动过程 前言: Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布.在加上用户空间的应用程序之后 ...

  3. linux efi 启动原理,Linux(RHEL6)启动过程详解

    Linux(RHEL6)启动过程详解 Linux(红帽RHEL6)启动过程详解: RHEL的一个重要和强大的方面是它是开源的,并且系统的启动过程是用户可配置的.用户可以自由的配置启动过程的许多方面,包 ...

  4. 嵌入式linux的u-boot系统启动过程,【站友投递】U-boot启动过程详解

    [站友投递]U-boot启动过程详解 来源:互联网 作者:denny 时间:2009-03-18 Tag:点击: 一.U-BOOT的目录结构 u-boot目录下有18个子目录,分别存放管理不通的源程序 ...

  5. centos7 启动流程图_Linux启动过程详解

    Linux启动过程详解 作者:江远航 一.启动流程图如下 图1 Linux启动流程图 BIOS ---> MBR ---> Kernel---> Init 二.Linux启动顺序 一 ...

  6. Delta3d框架学习--程序启动过程详解

    一个Delta3d程序启动过程详解 一.初始化一个dtGame::GameApplication的实例,dtGame::GameApplication* app = new dtGame::GameA ...

  7. 朱老师ARM裸机学习笔记(四):S5PV210启动过程详解

    常用器件特性 内存: SRAM 静态内存 特点就是容量小.价格高,优点是不需要软件初始化直接上电就能用 DRAM 动态内存 特点就是容量大.价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使 ...

  8. Spring启动过程详解

    Spring启动过程详解 前言 spring容器启动过程 AnnotationConfigApplicationContext 有参数构造方法 无参数构造 AnnotatedBeanDefinitio ...

  9. 家用计算机启动过程 装载主引导记录,计算机启动过程详解

    综述: 计算机启动时经过了哪些过程: 计算机接通电源后,第一步要进行加电自检,也就是POST(Power On Self Test),检查RAM.驱动器等:第二步BIOS会读取活动分区主引导记录的启动 ...

最新文章

  1. mysql group by取条数最多_mysql获取group by总记录行数的方法
  2. mysql打包备份数据到_thinkPHP使用pclzip打包备份mysql数据库的方法
  3. 为什么要实现序列化接口
  4. c语言 文件f指针,C语言文件选择题
  5. Spring 源码分析之AbstractApplicationContext源码分析
  6. 我是如何 2 个月拿到 4 份 Offer 并收入翻倍的?
  7. jquery 弹出层插件
  8. 【学习笔记】函数高级使用技巧:建立函数队列
  9. linux挂载ipsan存储,centos系统ISCSI挂载IPSAN存储
  10. Kafka集群搭建配置
  11. discuz文件结构详解,discuz模板文件介绍
  12. 今天小暑是什么时间_2020年小暑具体时间是几点几分?小暑是什么意思?
  13. 手把手教你画架构图,看一次就会了!
  14. 记一次流量分析实战——安恒科技(八月ctf)
  15. Java中Switch选择语句的用法
  16. Sql Server服务远程过程调用失败
  17. C#汉字转拼音(npinyin)
  18. 选择排序法和冒泡排序法
  19. 数美科技荣获《银行家》“十佳智能风控管理创新奖”
  20. linux 内存管理之kmalloc、vmalloc、malloc、get_gree_pages的区别

热门文章

  1. canvas实现动态点线背景,鼠标画点连线。
  2. Linux内核异常调试工具与方法
  3. JackKnife开发专题-方便快捷的IOC框架
  4. 用matlab代码写一下jackknife方法的校正步骤?、
  5. URL Scheme 简介
  6. Windows系统提示“telnet不是内部或外部命令,也不是可运行的程序或批处理文件”怎么办
  7. Opengl绘制网格模型
  8. Warmup 原理与实现
  9. SQL Server中,备份数据表
  10. web高德地图路线规划(多条)