版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash”。就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定;并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性双重保证下,通过选用通用的SPIFlash来减少产品的成本压力。
8 T1 q( c! B# p+ w" O7 W @0 N2 `1 b* O( M; ~
假设我们正在使用一个普通SPIFlash,打开nios II command shell窗口,使用nios2-flash-programmer命令下载***.flash文件时,会发生如下错误: m. w% A3 u7 G, p% @" {1 _
No EPCS layout data --- looking for section [EPCS-1C2017]2 N4 c; w8 t3 {% X' Q
( e4 A% J- ~* c3 | 以为不同公司的SPIFlash有不同的ID,并且不同大小的Flash的Sector大小及个数都不一样,所以需要新建一个文档去说明这些数据:! j4 Y7 [' ~% Z9 k. R0 I
5 C5 J0 N# \1 P( j$ H6 G 1、首先在<nios2_install>/bin文件夹下面新建nios2-flash-override.txt文件;
7 r% h4 ?: t7 H. f) _: i! E& b7 u7 x2 g3 o
2、输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数;
" y. ]1 K$ l! I- ~! @( O P' v3 ^8 l [EPCS-202011] # EPCS1N (lead-free)
( `7 W2 d0 b5 g/ f* j: ^! @( }0 M sector_size = 32768
, w2 X$ O x5 B" f6 C, @/ s" Z7 i sector_count = 4
8 b% w4 r/ r; G( J5 } [EPCS-202013] # EPCS4N (lead-free)/ }. u3 S5 V/ K
sector_size = 65536$ _4 q w! I6 r0 X# w, P
sector_count = 86 O9 H9 |8 d8 r! l) k
[EPCS-202015] # EPCS16N (lead-free)
, r0 o- g8 ^2 X+ D: t0 l0 I W sector_size = 65536) G$ ~3 Z% m2 f1 ]3 e
sector_count = 32# L# j. Y# F1 a0 C$ f! d+ F+ T
[EPCS-202017] # EPCS64N (lead-free)' z/ E7 p4 y. l1 l5 N) t5 M
sector_size = 65536# A9 e0 G( h1 r" O3 Q
sector_count = 128- ~1 u/ F& J$ G5 }8 e ^ P! y
. B9 r7 s* J# k 3、在上述代码中添加自己选择的通用SPIFlash,例如:# S/ z0 t& j" g+ Q
[EPCS-1C2017] # EPCS64N (Eon-lead-free)
0 C9 o. \% l& i' r/ d7 A0 I1 } sector_size = 65536; y# t6 V) F, z [- ~
sector_count = 128 N* I* ~# ~2 F! y2 P/ v, t
* T- A$ \( X6 M7 ]9 x7 X) ?
然后再使用nios2-flash-programmer命令下载***.flash文件,就可以对SPIFlash进行下载了。
7 p3 N, i( J! H- M0 _1 j, }9 z) u5 K0 q! T
需要注意的是,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 ...查询。
% [5 Y9 `% E6 B, k- V7 q+ u- E/ \- |
以上我选了一种器件进行做说明,大家可以根据自己的器件修改nios2-flash-override.txt文件,只需要更改ID号就行了,保证sector_size,sector_count与EPCS器件一致。 |
|