boot.bin 流程

U-BOOT流程:

   1.内核由U-Boot引导。

   2.U-Boot由FSBL引导、启动。

   3.FSBL由ZYNQ片内BootROM引导、启动。

  

启动设置:

   MIO3-5 引脚设置启动方式 SD、qpsi、nor flash、nand flash等。

  

QSPI 启动流程:

      1. 初始化MIO引脚

      2. 初始化QSPI设备, 驱动QSPI设备

      3. 对QSPI读写测试

      4. 从QSPI中读取BOOT.bin文件,并解析BOOT.bin文件。

      5. 得到FSBL代码地址、偏移和大小. 从QSPI中读取FSBL代码到SRAM中,

然后启动FSBL。

     

BOOT.bin解析: 文档 6.3

   BotROM从QSPI的0x00 - 0x1000000(间隔0x8000) 地址查找BOOT.bin文件

                                                       图 1 Boot.bin 头信息

0x00-0x8FF 定义:

      1. 0x000 中断向量表

      2. 0x020 固定值0xAA995566

      3. 0x024 固定值0x584C4E58 ASCSII:XLNX

      4. 0x028 如果是0xA5C3C5A3 OR 0x3A5C3C5A 为加密

      5. 0x02C 版本号

      6. 0x030 FSBL用户代码的地址偏移量

      7. 0x034 FSBL的长度

      8. 0x038 将FSBL拷贝到OCM的位置,

                     BootRAM代码拷贝FABL到SRAM内存中的位置,一般为0x00

      9. 0x03C FBSL在SRAM中的运行地址,

                      BootRAM代码跳转到SRAM内存中的位置去运行FSBL, 一般为0x00

      10. 同7

      11. 0x044 固定值 0x01

      12. 0x048 校验和(0x20-0x47之间的数据按32bit长度相加并取反)

      13. 0x04C-0x97 FSBL/用户代码自定义。

      14. 0x098 image header table 位置偏移

      15. 0x09C partition header table 的位置

      16. 0x0A0 - 0x89C 寄存器初始化参数

      17. 0x8C0 FSBL/用户代码必须大于等于此地址

                                                             图 2 Image header table

                                                        图 3 Image header

                                                         图 4 Partition header table

FSBL分析

   FSBL工程 main函数:

      1. ps7_init() 对ps端配置信息进行初始化, 包括MIO、 PLL、 CLK 和DDR

      2. 刷新DCache缓存、 禁用DCache缓存

      3. 注册异常处理

      4. DDR读写测试

      5. PCAP初始化, (处理器配置访问端口)

      6. 读取BOOT_MODE寄存器 获取ZYNQ的启动方式

      7. 根据启动方式初始化启动设备

      8. LoadBootImage() 加载启动镜像, FSBL启动U-Boot并加载bitstream到PL端

      9. 跳转到U-Boot地址,启动U-Boot。 FSBL完成

     

 参考:

        ug1283-bootgen-user-guide.pdf

       ug585-Zynq-7000-TRM.pdf

 

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值