ZYNQ启动流程分析之BootROM

一、FSBL由谁启动?
1.背景
在静态情况下,BOOT.BIN启动文件存放在SD卡或QSPI等存储介质中,
然后BOOt.BIN文件中已经包含了FSBL代码,也就是说FSBL代码已经集成
在了BOOT.BIN文件中,所以FSBL代码也是存放在BOOt.BIn文件中。
2.需要做的事情
如果要启动FSBL代码,就需要完成以下几件事情:
1.找到BOOT.BIN文件所在的位置
2.就是从BOOT.BIN文件中找到FSBL代码
3.找到之后将其拷贝到内存当中(SRAM,ZYNQ片内RAM 256K字节大小)。
4.之后再去运行FSBL代码
3.谁来做这些事?
问题:那么这些事情由“谁”来做?
BootROM

二、何为BootROM?
1.何为BootROM?
BootROM它是一个程序/代码,并且已经固话在ZYNQ芯片内部。
2.BootROM存放在哪?
BootROM代码存放片内RoM当中
因为ZYNQ内部包含256K RAM(SRAM)以及128K RoM(SROM)
所以BootROM代码可以固话在SRoM当中,并且在掉电情况下不会丢失,所以才可以用于保存程序。
一般都是Nor Flash,XIP
NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中
3.BootROM的作用
BootROM的主要作用用于引导、启动FSBL代码
它要完成引导、启动FSBL代码的这个任务需要完成以下几件事情:
1.找到BOOT.BIN文件所在的位置
2.就是从BOOT.BIN文件中找到FSBL代码
3.找到之后将其拷贝到内存当中(SRAM,ZYNQ片内RAM 256K字节大小)。
4.之后再去运行FSBL代码
4.BootROM支持哪些功能
1.包含了SD卡或者QSPI等存储设置的驱动程序
2.BootROM代码支持文件系统操作,至少支持Fat 32这个文件系统
5.总结
对于ZYNQ平台、对于嵌入式Linux系统
Linux内核由U-Boot引导、启动
U-Boot由FSBL引导、启动
FSBL由ZYNQ片内BootROM引导、启动

三、SD卡启动方式
1.对SD卡的要求
1.标准的SD或SDHC设备
2.包含FAT 16/32文件系统
3.SD卡的容量可以高达32GB
2.SD卡方式启动流程
在Sd卡启动方式下,BootROM代码的运行流程:
1.初始化MIO引脚
主要就是配置MIO引脚的物理特性配置寄存器
重点就是讲MIO40~MIO45复用为SD0外设所对应的CLK/CMD/DATA引脚
如果自己设计硬件,想要通过SD卡方式启动开发板,那么就必须将
SD卡连接到ZYNQ的MIO40~MIO45这一组引脚。
2.初始化SD卡外设,驱动SD卡,可以实现SD卡读写操作
3.对SD卡读写进行测试
4.从SD卡文件系统当中读取BOOT.BIN文件,并对BootROM头进行解析
BOOT.BIN头
在BOOT.BIN文件前面有一段头部信息(BOOT.BIN头),这个头部信息是按照一定的
格式组组织在一起,在这个头部信息当中就包括了fsbl的加载地址、fsbl的大小以及
fsbl在BOOT.BIN文件中的位置偏移量。
BootROM代码能够解析这个头部信息
5.得到fsbl代码的大小和位置偏移量以及加载地址之后,BootROM代码就会从BOOT.BIN文件中
将fsbl代码拷贝到SRAM内存中,并且跳转到fsbl代码的运行地址去启动fsbl
这样BootROM就成功启动Fsbl代码了

四、QSPI启动方式
1.对QSPI的要求
• x1, x2, and x4 single device configuration.
• Dual SS, 8-bit parallel I/O device configuration.
• Dual SS, 4-bit stacked I/O configuration.
• Execute-in-place option.
2.QSPI启动方式流程
在QSPI启动方式下,BootROM代码的运行流程:
1.初始化MIO引脚
将相关的MIo引脚复用为QSPI外设所需的引脚功能
2.初始化QSPI外设,驱动QSPI Flash设备,可以实现QSPI读写操作
3.对QSPI进行读写测试
4.从QSPI存储介质中读取BOOT.BIN文件,并对BootROM头进行解析
5.得到fsbl代码的大小和位置偏移量以及fsbl的加载地址这些信息之后,
再去从QSPI中拷贝fsbl代码到SRAM内存中,然后启动fsbl
3.头部搜索的方式
在QSPI启动方式下,BootROM代码是如何找到BOOT.BIN文件
BootROM代码首先会从QSPI的0x00地址去找BOOT.BIN文件,如果找不到
那么就去下一个地址0x8000,如果还找不到他又会跳转到下一个地址0x10000
但是搜索范围不能超出QSPI的前面16MB地址空间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值