芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 4550|回复: 0

【Zynq】zynq固化原理

[复制链接]

该用户从未签到

59

主题

81

帖子

1336

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1336
发表于 2021-8-30 10:17:22 | 显示全部楼层 |阅读模式

Zynq中有五种可能的启动源:NAND、NOR、SD卡、Quad-SPI和JTAG。前四个启动源用于主启动方法,在主启动方法中,CPU将外部启动映像从非易失性内存加载到PS中。而JTAG是从引导模式,仅支持非安全引导。外部主机作为主机,通过JTAG连接将引导映像加载到OCM中。通常为了使开发板在断电重新上电后自动运行某个程序,我们需要对其进行固化,也就是通过前四种方式。




  zynq芯片在上电后,首先会运行PS端,随后PS端加载.bit文件至PL端,配置相应寄存器。zynq在启动时大致分为以下三个流程:


阶段0:BOOT ROM
  该阶段会自动运行一段厂家预定好的代码BOOT ROM,主要通过读取启动引脚寄存器完成对启动方式的判定。该阶段用户不可编辑,在上电后,zynq会自动运行该部分代码。在确定好了启动方式后,便会加载First Stage Bootloader (FSBL)或用户代码到On ChipMemory(OCM)RAM上,进行下一步。
阶段1:FSBL(First Stage Bootloader)
  第一阶段引导程序(First Stage Boot Loader,FSBL)启动,开始执行BOOT.bin文件:首先继续配置PS,PS初始化好后,再配置PL,最后还可以加载阶段2的代码。BOOT.bin 其实就是由FSBL.elf+该工程.bit+该工程.elf 构成(其中该工程.bit和该工程.elf在程序编译完成后便已产生 )。在这一阶段用户需要使用SDK工具一步步生成FSBL代码和可执行文件。该阶段完全由用户控制,.elf文件为连接文件,参与程序的连接与执行;.bit文件则是我们较为熟悉的配置文件,该阶段在配置PL时,也是依靠该文件。该阶段主要完成如下工作:
  • 初始化CPU,初始化串口;
  • Processor System (PS) 一些控制器的初始化,如 MIO, PLL, CLK,DDR;
  • 使用比特流文件对PL进行配置;
  • 将应用程序加载到DDR或者加载 Second-Stage Boot Loader(SSBL);

阶段2完成Linux系统启动过程(U-BOOT)
  该阶段为可选阶段,通常是系统软件。该阶段可以直接运行基于BSP的裸机程序(不带任何操作系统),也可以读取第二阶段引导加载程序(second Stage Boot Loader,SSBL),对于Linux而言该阶段运行的就是uboot。该阶段完全由用户控制,在不使用到操作系统的场合一般会跳过该阶段。
  在实际工程应用时,用户只需在SDK中一步步生成好工程代码和可执行文件后固化到开发板即可,在系统断电重启后便会自动运行固化好的程序。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-4-24 11:07 , Processed in 0.105068 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表