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

 ZedBoard启动需要的文件:

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

2、devicetree.dtb

3、uImage

4、uramdisk.image.gz 

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

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

        至于从哪个外部存储器中加载fsbl镜像,要看ZedBoard上MIO[5:3]引脚选择哪种启动方式。一般是选择从SD卡启动(这就是为什么BootROM要先对SD卡等基本外设控制器进行初始化的原因)。

阶段1:该阶段运行的是fsbl代码。完成的主要工作是

  1. 根据XPS中的配置,完成PS端的初始化(这一部分应该包括对DDR外设控制器的初始化)
  2. 使用比特流文件(Bitstream)对PL进行配置(如果不使用PL,就不需要这一步)
  3. 加载阶段2的代码(ssbl)到内存空间(DDR上),并运行ssbl代码

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

阶段2:该阶段运行的是ssbl(u-boot.elf),ssbl会完成Linux内核启动之前所必需的硬件初始化,例如串口、USB设备等。并设置好启动参数,然后将Linux内核、设备树镜像从SD卡加载到内存中。之后将控制权交给内核。

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

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值