MIZ702N启动流程与开发流程

启动流程

准备好开发环境后,我们开始正式开发,第一步当然是要让开发板启动起来。之前已经按照硬件供应商给的做好的文件启动过开发板,但是那只是验证开发板是否正常,不过也是可以看到它启动后的效果的。

查阅资料可以看到ZYNQ7000有几种启动模式(由于MIZ702N是属于ZYNQ7000系列,所以以下属于ZYNQ7000的东西也适用于MIZ702N),分别是:

  • QSPI Flash启动
  • Nand Flash启动
  • Nor Flahs启动
  • JTAG启动(调试用)
  • SD卡启动

这些启动方式通过模式引脚来选择。当我们选择SD卡来启动我们Linux系统时,开发板的大致的启动流程如下:

ZYNQ7000启动流程

可以看到,当开发板上电后,它是从片内的Boot Rom开始运行的,这部分启动代码是固化在板上的,它会完成一系列板上默认的启动工作,然后通过检查模式引脚来选择启动模式。

BootRom代码执行完成后就来到FSBL阶段,这部分程序一般主要有两部分工作:

  1. 初始化板上PL部分
  2. 加载uboot或其他应用程序

通过了FSBL阶段,硬件部分就初始化完成,后面的部分就和一般Linux启动一致了。

开发流程

从上面的启动流程可以看到,其实ZYQN7000系列产品虽然是FPGA和SOC的结合体,但是它的启动还是和普通SOC启动很类似的,唯一的一个不同点就是增加了一个FSBL的过程。不过在实际开发中,正式由于FSBL阶段的引入导致ZYQN7000的开发复杂了很多,有很多都是需要软硬件相互交互的东西。

如下,是我概括的ZYQN7000大致的开发步骤的流程图:

ZYQN7000开发步骤流程图

由上图可以看到,我们的FSBL文件是被包含在BOOT.bin文件中的,为了生成BOOT.bin文件并最终启动Linux系统,我们至少需要以下三个文件:

  1. 硬件设计比输出的特流文件
  2. 与硬件设计匹配的FSBL文件
  3. 编译后的uboot

使用Vivada的SDK中的boot制作工具来创建BOOT.bin文件,文件名不能变,启动将以这个文件名的文件启动,除此之外还要根据硬件设计还要输出设备树文件,提供给Linux内核编译时使用。另外新的硬件模块,要在Linux中的应用程序中使用,还需要开发对应的Linux驱动。

根据上面的分析,软硬件模块虽然不够相互独立,但是也没有到牵一发而动全身的地步,当有硬件修改的时候,软件可能只是需要配合硬件输出一些文件即可,整个工程不会有多少改变。

Compartir