6 W# k* q7 m7 o7 L* a 1 P$ W4 J7 p. Q. w1 _" S3 N, l, VAltera的SoC FPGA启动过程总体可以使用上图来概括,fpga和ARM的配置和启动又可以分为3种不同情况(Xilinx似乎只有一种情况)。分别是fpga和arm彼此独立配置和启动、FPGA先配置然后通过fpga启动arm,第三种情况是HPS先启动然后通过arm来配置fpga逻辑。下面分别对此进行简单介绍。 $ t% R2 \. }$ n& q* y" W/ s5 N; W1 E9 c+ n+ H0 G* l* i
1、fpga和hps单独配置和启动8 s% Q z$ e0 L* r- J
这种情况fpga从非HPS源配置,属于标准的fpga配置模式。同样,HPS获取Preloader也与fpga无关。如下图所示: ; v0 Y8 Q; ~& q0 L$ c. D, b 0 C5 w8 I0 `2 y, c1 @6 Y! V- k8 g7 c# g
! a$ R# K6 y8 Y1 V8 {
2、fpga首先配置# f( f6 U% F0 C6 U. Z
fpga通过传统的方式进行配置,然后HPS通过FPGA逻辑进行启动。 _$ W7 R% b5 ~" ^. J2 @
1)、首先需要等待init_done信号: s& h O [6 Q- X
2)、HPS的BootROM代码透过HPStoFPGA桥执行Preloader+ J, d& E5 S. A9 F6 n$ H0 X
3)、Preloader可以存放在FPGA内部RAM或者存放在外部存储器/ Q0 ]- z/ y: U6 k2 p
下图展示了此过程: ) v6 M% s& ~6 m 0 v# M5 Y' O) D5 {% l2 t% q9 N* I9 t! R
& p7 s. F9 ^& g3 y% I w3、HPS先启动,然后通过HPS配置fpga逻辑 $ ~. v7 o2 |0 n, O 9 s& H2 S8 Y' [1 ^+ g, o HPS从与fpga无关的启动源启动,然后HPS的软件通过fpga管理器来配置fpga逻辑。注意,fpga的配置信息存储在Flash存储器或者其他可访问的通信接口处。下图展示了这种配置启动模式: ! z, |1 q3 v/ W s3 m, S' A( S( k; `# {