EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash”。就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定;并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性双重保证下,通过选用通用的SPIFlash来减少产品的成本压力。
4 {/ Y8 E2 {7 \/ Z
假设我们正在使用一个普通SPIFlash,打开nios II command shell窗口,使用nios2-flash-programmer命令下载***.flash文件时,会发生如下错误:
1 i2 T+ q* J% ~' k8 R No EPCS layout data --- looking for section [EPCS-1C2017]
8 h3 r: E) [1 t; g$ s# P( V8 j. X8 T0 y
以为不同公司的SPIFlash有不同的ID,并且不同大小的Flash的Sector大小及个数都不一样,所以需要新建一个文档去说明这些数据:
" B L0 l( r+ S F
1、首先在<nios2_install>/bin文件夹下面新建nios2-flash-override.txt文件;
u7 s8 t6 N' M v! b
2、输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数; 9 s1 C* o$ O! l8 I! g4 Y, [
[EPCS-202011] # EPCS1N (lead-free)
1 Q6 w; c2 ^ v0 a' w# U) N5 I sector_size = 32768( A0 }% i- K ~+ H
sector_count = 41 p' H* q$ t" [( ?
[EPCS-202013] # EPCS4N (lead-free)
. G8 O+ d4 _6 l. ~0 ?: s sector_size = 65536
7 x. ]0 p/ s7 n4 I/ h2 k) O sector_count = 8
! d$ ]; t4 ]& U$ h* @- ` [EPCS-202015] # EPCS16N (lead-free)2 L' o: X! C2 Y I7 J+ B; Z
sector_size = 65536
( F( n7 u8 }/ f' |2 w sector_count = 32
3 {8 R9 t: U4 N; K [EPCS-202017] # EPCS64N (lead-free)
' H# [; U! m9 p* ^# y2 { sector_size = 65536
6 B0 G; E k: S A sector_count = 128 N! @/ z( C/ f. y- Y
3、在上述代码中添加自己选择的通用SPIFlash,例如:
, |+ c, G2 D1 T# z [EPCS-1C2017] # EPCS64N (Eon-lead-free)
, }# f( `' \ q& G$ H( A sector_size = 655360 W& E# y% b% c) ^2 {
sector_count = 128
8 K: J4 e. ]9 C* s
然后再使用nios2-flash-programmer命令下载***.flash文件,就可以对SPIFlash进行下载了。 ! T( f8 {# U- s Y) `1 U7 ^) Y8 E
需要注意的是,FPGA使用的配置芯片的每个Sector大小都是定的,现在有些器件专门对Boot那部分代码进行了优化,及最开始的部分Sector会比较一般的Sector要小,从而达到提高Sector利用率的目的,比如Eon 64M的SPIFlash就分为两种,一种是每个Sector大小都是64K*128(EN25P64),还有一种就是(4+4+8+16)K+64K*127(EN25B64),而我们选用的是前面那类器件,器件ID为1C2017,器件ID可以通过nios2-flash-programmer --debug ...查询。 1 U0 Z! }& i; O5 F5 @- p
以上我选了一种器件进行做说明,大家可以根据自己的器件修改nios2-flash-override.txt文件,只需要更改ID号就行了,保证sector_size,sector_count与EPCS器件一致
0 M6 s; e8 s, K5 N, H# Y
. d' E4 S1 I2 `, E+ H U
: z! i$ J. f! z- U. q& j
- c" }! H W$ K: ` |