基于Xilinx Zynq的嵌入式系统的BOOT方式探究

作者:曹英培,徐文波,林家儒 北京邮电大学信息与通信工程学院

摘要:论文以Xilinx Zynq-7000 系列的ARM 与FPGA 结合的开发板为对象,对嵌入式开发的引导启动方式进行研究与实现。相对于传统嵌入式系统而言,Zynq-7000 可扩展处理平台将双核ARM Cortex-A9,可编程逻辑单元和硬IP 外设紧密集成在一起,提供了灵活性、可配置性和高性能的结合。这款 ARM与 FPGA相结合的 SOC(System On Chip)不仅包含了典型的嵌入式的启动方式,同时又增添了Xilinx 公司独有的FPGA 启动方式加载模式。论文以传统嵌入式系统的加载启动方式为基础,阐述了Zynq7000 系列的各种启动方式,这些启动方式已经在Zynq7000 系列的SOC上进行了实现。同时也对这款芯片上一些冗余的加载步骤进行了删减和优化。

0 引言
传统的ARM 通常分为引导加载程序(Bootloader),嵌入式操作系统内核,文件系统以及应用程序加载4 个步骤,FPGA 通常有JTAG 配置和FLASH 配置两种模式。Xilinx Zynq-7000 系列是一种打破传统巧妙地将ARM 与FPGA 两种不同架构的芯片相结合的全新SOC(System On Chip)。在这种SOC 上其启动引导方式更加多元化,不仅仅包含了传统的嵌入式中 ARM 的启动方式,更是增添了多种启动 FPGA的方式,整个系统可以单独引导启动ARM 与FPGA 的任一模块,也可以两者结合起来运行,并且可以使用高速AXI 接口进行交互,这种灵活的架构配置可以进行各种各样的包含通信算法、视频加速、视频压缩和工业控制的使用[1]。

Zynq启动方式通常包含有JTAG的情况和无JTAG的情况两种[2],在有JTAG的情况下,启动方式又分为3个阶段[3],BootROM、FSBL和SSBL[4],JTAG口通常只是用来进行开发和调试[5];非JTAG启动的情况下又包含了NAND、NOR、SD和Quad-SPI的启动方式,这些启动方式又包含了安全的和非安全的两种情况,在这些启动阶段中,有用户操作的阶段和系统自动加载的阶段。

本文着重介绍非JTAG启动的步骤,并具体分析每一个启动步骤的作用,同时设计两种种通过ARM来加载FPGA的方法。这两种方法具体为只加载可编程逻辑的比特流的启动和带Linux操作系统的启动方式。点击“阅读更多精彩内容