背景
公司一款数据采集板用到了xilinx的zynq系列芯片,选择PetaLinux 2020.2来为PS端生成linux系统。
板子硬件启动有2种模式,一种是从SD卡直接启动linux系统,另一种是从QSPI Flash启动linux内核,linux内核再从eMMC挂载root并进入系统。

为什么搞2套启动机制?因为想兼顾硬件稳定性、经济效益和灵活性:
SD卡是可插拔的,QSPI Flash和eMMC是贴片安装的(可靠性高但不可插拔,属于沉没成本),在产品调试阶段用SD卡启动,在产品稳定后用QSPI+eMMC启动,SD卡就可以省下来了
zynq启动流程
SD卡启动
SD卡启动比较简单
- zynq上电后先检查boot_pin,看是从SD卡启动还是QSPI flash启动
- 如果是SD卡,则BootRom会读取SD卡的第一个分区(仅支持FAT格式),从根目录下读取并解析BOOT.bin,加载其中的FSBL。
- FSBL运行后,首先将boot.bin的FPGA bit文件写入PL,然后加载boot.bin中的u-boot
- uboot读取boot.scr,根据其内容加载linux内核文件image.ub到合适位置,然后跳转执行,linux内核就启动了
- linux内核启动后根据boot.scr的root分区信息,挂载SD上的root分区,执行rootfs里的init,系统就可用了
QSPI Flash启动流程
QSPI Flash启动大同小异
- zynq上电后先检查boot_pin,看是从SD卡启动还是QS

最低0.47元/天 解锁文章
3711

被折叠的 条评论
为什么被折叠?



