版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash”。就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定;并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性双重保证下,通过选用通用的SPIFlash来减少产品的成本压力。7 q; D7 p9 w5 [
9 @5 k' q% W" v |" n
假设我们正在使用一个普通SPIFlash,打开nios II command shell窗口,使用nios2-flash-programmer命令下载***.flash文件时,会发生如下错误:
, z: E1 }2 ]/ Y3 M" z- w, y No EPCS layout data --- looking for section [EPCS-1C2017]
6 {7 k4 t% b' k( u- Z9 p
" x& M% e- l6 C& }! R8 Z 以为不同公司的SPIFlash有不同的ID,并且不同大小的Flash的Sector大小及个数都不一样,所以需要新建一个文档去说明这些数据:
- R; {+ N2 D& R6 K ?1 Z' X1 Q, r: K: L" u
1、首先在<nios2_install>/bin文件夹下面新建nios2-flash-override.txt文件;
* a7 n/ K2 T9 ~) S$ |! ]& L Y" A6 V# V( R1 G+ g- u9 M+ ]7 r
2、输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数;+ @* n/ D' v2 Z. m) l8 f
[EPCS-202011] # EPCS1N (lead-free); Y8 ~9 F0 }/ w% Z' M; S
sector_size = 32768
7 w2 V0 @, C( ^ sector_count = 4
+ `* m5 m) K; V! x [EPCS-202013] # EPCS4N (lead-free)
/ S" m6 {1 m m- U, P sector_size = 65536
7 F' n t x7 X% g0 u/ e sector_count = 86 A& M5 ]! z8 E7 x
[EPCS-202015] # EPCS16N (lead-free)
- y# E, p7 `, ^3 l: b* C1 d% P sector_size = 655363 H: F* U2 v/ z6 F. S; B
sector_count = 32* i# Z- [, n7 P0 N6 W
[EPCS-202017] # EPCS64N (lead-free)' X( r( R+ _3 z% p+ G# J% Q" |8 |
sector_size = 65536
5 r9 ^/ W/ h- o sector_count = 128+ j- p5 }& N8 ?, f3 u3 b6 d8 P$ K
5 y0 m; k2 Y' \4 [
3、在上述代码中添加自己选择的通用SPIFlash,例如:. Z( d" i5 X5 c& |3 F/ b
[EPCS-1C2017] # EPCS64N (Eon-lead-free)
* O& C, Y: P: C/ [ sector_size = 655363 \7 m9 C; A# p; D& I. ^. h' z
sector_count = 128) K4 X. w5 W1 g R. b7 i& s7 g( d
$ S2 H2 l" ^! v% @& q4 V9 | 然后再使用nios2-flash-programmer命令下载***.flash文件,就可以对SPIFlash进行下载了。
/ i# x8 J; X) v& E4 B: V0 p( ~" T- A6 s4 g$ D# @
需要注意的是,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 ...查询。9 a2 ^/ A, a3 F$ H
- d$ `) J0 r/ I" |8 I6 d 以上我选了一种器件进行做说明,大家可以根据自己的器件修改nios2-flash-override.txt文件,只需要更改ID号就行了,保证sector_size,sector_count与EPCS器件一致。 |
|