zynq学习之启动与配置

一、Zynq的启动过程简介

1、zynq有两种启动模式:

从BootROM主动启动,从JTAG被动启动

(1)从JTAG被动启动:通过 JTAG 先下载 bit 流文件,再下载 elf 文件,之后点击Run As 来运行的程序。JTAG 的方法是通过 TCL 脚本来初始化 PS,然后用 JTAG 收发信息,可用于在线调试。但是这样只要一断电,程序就丢失了。还得全部重新来过。

(2)从BootROM主动启动:通过制作镜像文件,将镜像文件拷贝到 SD 卡,然后将拨码开关拨到 SD 启动,那么每次断电之后程序都会自动从 SD 启动,程序就别固化,而不会掉电丢失了。

固化的流程

zynq学习之启动与配置_第1张图片

2、从sd卡启动的过程

和大多数 arm 启动过程一样,这个启动过程也分为 3 个阶段,这三个阶段分别称之为阶段 0、阶段 1 和阶段 2。
(1)阶段 0:即传统的 BootROM 过程,zynq 芯片里有个 rom 里面固化了一段不可修改的程序,只有 zynq 一上电,这段程序就会执行,它将对 zynq 的 NAND、NOR、SD 等基本外设控制器进行初始化。把 SD 卡这类易失的存储器件初始化好了之后,就会把其中的程序拷贝到 zynq 的 OCM(On-chip memory),那么这个被拷贝到片上 RAM 执行的程序就是我们要制作的文件——BOOT.bin。
(2)阶段 1:BOOT.bin 加载到 OCM 上就开始执行了,之前说过 BOOT.bin 其实就是由FSBL.elf+该工程.bit+该工程.elf 构成。而阶段 1 要做的就是:首先配置 PS 部分,PS完成初始化后,会去配置 PL 部分,最后还可以去加载阶段 2 的代码。
(3)阶段 2:这一阶段是可选的,主要是为了完成 Linux 系统启动过程。如果是裸奔,就不需要。 当CPU上电时,操作系统并不在内存中,需要一个叫bootloader的程序初始化CPU,也就是Zynq平台的SSBL(第二阶段引导程序)。对于运行在zynq平台的linux系统而言,U-Boot就是SSBL。

3、BOOT.bin制作过程

先制作FSBL.elf文件

(1)新建一个工程,打开SDK软件

(2)新建一个应用工程

File-Applicatioan Project

(3)填写工程名-next

(4)new project 中工程类型选择Zynq FSBL-Finish

(5)按下ctrl B编译工程,得到FSBL.elf(在工程目录的Debug文件夹下)

(6)将FSBL.elf和工程.elf和工程.bit文件考到一个文件下备用

制作BOOT.bin文件

(7)单击 SDK 的工具栏处的 Xilinx Tool->Creat Zynq Boot Image

(8)依次添加 FBLS.elf,工程.bit,以及 工程.elf,请务必按顺序添加。

(9)三个文件添加完毕之后,点击 Creat Image 生成 BOOT.bin,BOOT.bin是zynq的启动程序。

二、linux启动过程

1、从软件层面共有4个部分:

(1)引导程序:引导程序就是U-Boot,FSBL把U-Boot引导到内存中。U-Boot将为linux内核初始化内存和必要的外设,设置好启动参数。由于zynq平台采用设备树来传递驱动部分的参数,所以U-Boot还将拷贝设备树到内存当中。而后U-Boot将控制权交给linux内核。

U-Boot是XILINX厂家已经为zedboard用户移植好,用户可直接从官网下载。

下载后U-Boot压缩文件在Ubuntu下解压,执行配置和编译两条指令后,可生成u-boot文件,将其改名为u-boot.elf

(2)linux内核

内核是一个操作系统的核心,他负责管理系统的任务调度、内存分配、进度管理、设备驱动程序、文件系统和网络系统等,决定系统的性能和稳定性。

内核拥有控制权之后,将进行初始化,建立起内核的运行环境,内核在完成虚拟地址到物理地址的映射后,再驱动设备的初始化与挂载。

(3)文件系统

文件系统对一个存储设备上的数据和元数据进行组织的机制,文件系统包括文件中的数据还有文件系统的结构。

(4)应用程序

应用程序存放在文件系统中。

你可能感兴趣的:(zynq)