在电子系统设计中,无任是用CPU作为系统的主要器件,还是用FPGA作为系统的主要器件,系统设计中首先要考虑到的问题就是处理器的启动加载问题。 XILINX推出的ZYNQ可扩展处理平台,片内包括两个高性能的ARM Cortex A9硬核(称为处理系统processing system (PS))和FPGA(称为可编程逻辑programmable logic (PL)),在基于该平台的系统设计时具有极大的灵活性,本文就ZYNQ系统设计时都会遇到启动加载问题作一个抛砖引玉的描述,如有不当之处还请高手斧正。
一、器件配置单元
ZYNQ器件都带有一个器件配置单元(device configuration unit (DEVCFG) ),该模块由PS控制,提供软件控制下的PS和PL的初始化和配置功能。以前单个FPGA器件提供的下载方法已经不在适用,PL的配置下载必须在PS的参与下进行。
Zynq-7000的器件配置单元包括下面的PS单元:
① CPU
② OCM(引导ROM和共享RAM)
③ 部分顶层总线和外设
④ PS器件配置模块
在PL侧,下面的单元也将参与:
① PLS器件配置逻辑和接口
② 解密/鉴权硬件
③存储在eFUSE单元或者电池备份RAM(BBRAM)内的解密密钥
下图为PS器件配置子系统框图:
提供的关键特性如下:
A.提供3种不同的PS配置方法,包括2种主模式和1种从模式。
① 加密主模式
② 非加密主模式
③ 非加密从模式
B.3种不同的主模式启动源
① NOR FLASH
② NAND FLASH
③ QSPI FLASH
C:JTAG非加密从模式
D:用AES-256和HMAC (SHA-256)进行PS/PL的加密下载
E:高速配置用的主DMA接口
F:100 MHz 32-bit PCAP流接口
H:SoC加密调试功能
在系统上电复位时,PS采样专用bootstrapping signals引脚电平来决定从什么方式引导器件。这个引导过程是由一个Cortex A9核执行片内的ROM code实现的,ROM code的功能是初始化L1 cache和基本的总线系统,加载相应的NAND, NOR, Quad-SPI, and PCAP驱动,从指定接口加载第一级BOOTLOADER(the first stage boot loader (FSBL))到片内执行。由于OCM RAM大小有限制,第一级BOOTLOADER大小最大为256KB。用户只需要按要求提供启动映像和设置正确的bootstrapping signals引脚电平,系统上电复位时由ROM code自动加载到片内并且程序调转到启动映像,此时系统的全部控制功能交由用户的启动映像控制,用户如要实现的第二级BOOTLOADER功能由启动映像的程序实现。
对于加密配置方法,需要用到AES-256解密代码和SHA-256签定(签名)算法, PS需要用PL内硬连线的AES-256 和SHA-256模块,这时就要求在加密配置情况下PL就必须上着电,既使系统并不配置PL部分也需上电。器件的加密密钥可以由用户选择是存储在片内的eFUSE单元(具有掉电非易失性)或者内部电池供电的BBRAM内(具有掉电易失性,适用于安全级别要求更高的场合), 下表总结了配置模式和相关信息: