ZYNQ启动

来源:互联网 发布:阿里云rds数据库导入 编辑:程序博客网 时间:2024/05/21 00:48

当一个Linux 系统上电或重启时发生的第一件事情,是处理器要执行在某个预

定的位置上的代码。(固化代码,存于内部ROM中?)对于桌面计算机,这个位置是位于主板上的闪存中的,这部分

闪存里的是基本输入/ 输出系统(Basic Input/Output System,BIOS)。因为现代

的PC 提供了如此多种多样的启动设备,BIOS 要做的第一件事情是判断从哪个设备

来启动[1]。

一旦决定了启动设备,FSBL 会被加载到RAM 并由处理器执行。FSBL 是一片非常

小的代码——小于512 字节,也就是单个扇区—— 它唯一的作用就是把第二阶段

引导装载程序(Second-StageBootloader,SSBL)装入RAM。

在启动过程中,SSBL 这个阶段是要呈现一个引导菜单的

引导在SSBL阶段进行?因为SSBL阶段程序比较大,没办法在内部RAM运行,所以在内部RAM进行的只有FSBL?

Zynq芯片的引导经历一系列的阶段,起点是上电时初始化的引导ROM。芯片的

引导模式配置引脚的值决定了引导模式[5]。引导模式定义了FSBL 要从哪个接口装

载——JTAG、NAND Flash、NORFlash、QSPI Flash 还是SD 卡[2]。一旦引导模式

被确定了,引导ROM 会读入引导头和给定的配置参数,验证了这个FSBL 映像之后,

把它从指定的接口装载到OCM 中。一旦映像装入到OCM 中,CPU的控制就转交给FSBL

了。

 

 

 

所以引导期间的步骤如下:(注意,只是步骤,并不是STAGE-0,STAGE-1,STAGE-2)

1.       复位期间,执行内部ROM的固化代码,固化代码会判断从哪个引导源引导(这部分判断在固化代码里面执行)

2.       一旦有了启动方式,FSBL会被加载到内部RAM并由处理器执行,FSBL是一片非常小的代码——小于512字节,它唯一的作用就是把第二阶段引导装载程序(SSBL)装到DDR上

3.       U-BOOT,内核,APP启动

引导的3个stage:

Stage-0:引导ROM 的作用是载入第一阶段(stage-1)引导映像。第一阶段引导映像是

由上电/ 重启时读到的BOOT_MODE 信号决定的,这个信号就是施加在某些特定引脚上的弱上拉或下拉[5]。

其实就是读取硬件配置字

找到引导源之后,ZYNQ就会把FSBL装载到OCM(ON-CHIPMEMORY)中,程序跳转到FSBL的起点,接着进行Stage-1.

Stage-1:执行FSBL,负责一些初始化的工作(对于SDS1000X-E来说,加载FPGA也是在这步进行),包括根据PS 配置数据初始化CPU、用位流对PL 编程、把第二阶段引导装载程序或初始的用户应用到存储器中,然后开始执行第二阶段引导装载程序或初始用户应用代码。在CPU 的控制权转交给第二阶段引导装载程序之前,FSBL 关闭了cache和MMU,并清空了指令cache,因为U-boot开始运行的时候认为这些是关闭了的[6]。

Stage-2:这里的SSBL 是U-Boot,它负责把压缩了的Linux 内核映像、系统设备树和ramdisk 映像装载到内存中。一旦这些映像装载到了内存里,U-Boot 会启动Linux 内核的执行


 

JTAG

1.ZYNQ有两个JTAG口,一个叫DAP(PS内部),一个叫TAP(PL内部)

2.DAP允许用户使用第三方调试工具;TAP是标准jtag上添加了支持PL特性的功能(使能了DAP调试ARM的同时用TAP调试PL硬件)

3.JTAG Chain mode, both the TAP and DAP are visible from external JTAG debug

toolor a JTAG tester.这是PS和PL均用一个JTAG接的情况,JTAG可以调试PS也可以调

试PL

4.  如果不用同一个JTAG接口,则PL还是用TAP的JTAG接口,PS用PJTAG接口(该接口可以用PS特有的管脚,也可以通过EMIO拓展到PL),但此时要选择independent JTAG mode,而不是JTAG chain mode

5.  ZYNQ7000的on chip memory包括了256KB的RAM和128KB的ROM(Boot ROM)

xt-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo1;mso-layout-grid-align:none;text-autospace:none'>5.  ZYNQ7000的on chip memory包括了256KB的RAM和128KB的ROM(Boot ROM)
0 0
原创粉丝点击