ZedBoard的启动流程(以运行linux操作系统为例)

来源:
导读 大家好,我是本期栏目编辑小友,现在为大家讲解ZedBoard的启动流程(以运行linux操作系统为例)问题。 ZedBoar

大家好,我是本期栏目编辑小友,现在为大家讲解ZedBoard的启动流程(以运行linux操作系统为例)问题。

ZedBoard启动所需的文件:

1.BOOT.bin(由fsbl.elf、system.bit和u-boot.elf组成)。

2、devicetree.dtb

3、图像

4、uramdisk.image.gz

ZedBoard的启动过程通常可以分为三个步骤:

阶段0:设备上电后,处理器会自动执行片内BootROM中的代码,BootROM中的代码是固化的,不能修改。BootROM中的代码将初始化基本的外设控制器,如zynq的NAND、NOR和SD,这样ARM内核就可以访问和使用这些外设。DDR等其他外设将在第1阶段后初始化。同时,BootROM的代码还负责将第一阶段的引导镜像(fsbl镜像)加载到OCM(有一个256K RAM的OCM(zynq芯片,但是在fsbl运行之前只能使用其中的192K,所以fsbl应该小于192K),然后运行fsbl。

至于加载fsbl映像的外部存储器,取决于ZedBoard上的MIO[5:3]引脚选择的启动模式。一般选择从SD卡引导(这也是BootROM应该先初始化SD卡等基本外设控制器的原因)。

阶段1: fsbl代码在此阶段运行。主要工作是根据XPS中的配置完成PS终端的初始化(这部分应该包括DDR外设控制器的初始化)。

使用比特流文件配置PL(如果不使用PL,则不需要此步骤)。

将阶段2 (ssbl)的代码加载到内存空间(DDR)中,并运行ssbl代码。

注意:fsbl的代码可以直接使用xilinx SDK软件自动生成(也可以根据需要修改),步骤简单。

第二阶段:在这个阶段,ssbl(u-boot.elf)正在运行,ssbl会在Linux内核启动前完成必要的硬件初始化,比如串口和USB设备。设置启动参数,然后将Linux内核和设备树镜像从SD卡加载到内存中。然后把控制权交给内核。

当Linux内核拥有系统的控制权时,会先进行初始化,建立内核的运行环境,比如将虚拟地址映射到物理地址。另一个主要任务是通过设备树传输的信息初始化和挂载驱动设备。Linux内核会根据ssbl传递的参数信息选择挂载文件系统的格式和挂载点。然后Linux内核运行init()函数,这是内核引导的终点,也是系统中所有进程的起点。

标签:

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。