版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash”。就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定;并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性双重保证下,通过选用通用的SPIFlash来减少产品的成本压力。
; W( T) A7 W2 H+ O( g! P0 m& r1 o# x. B, J+ K7 I+ I+ a, `6 I
假设我们正在使用一个普通SPIFlash,打开nios II command shell窗口,使用nios2-flash-programmer命令下载***.flash文件时,会发生如下错误:+ }6 }- d% Z& U2 W1 Q. X
No EPCS layout data --- looking for section [EPCS-1C2017]
) F1 p2 k9 O6 d9 G( i' J7 [" U- J2 C, D% m2 Q
以为不同公司的SPIFlash有不同的ID,并且不同大小的Flash的Sector大小及个数都不一样,所以需要新建一个文档去说明这些数据:
6 a. d/ ^% T( ~. n/ }/ u, j' v' g2 V% T! H7 C/ ~6 ]4 ]: _' p4 d
1、首先在<nios2_install>/bin文件夹下面新建nios2-flash-override.txt文件;
& \- u, W; {3 J% H. _9 ~% m7 ~, ]) T# H
2、输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数;
+ H- g: H+ L: X [EPCS-202011] # EPCS1N (lead-free)3 l' q7 u) C. Q
sector_size = 32768
2 v. Z% z' z" J sector_count = 4; s% _ @8 k" u v" S+ u, J; N1 y* ~
[EPCS-202013] # EPCS4N (lead-free)
! ~& V* |4 T/ m) d2 p+ ~. b+ k1 J sector_size = 65536
( b8 y" n% N+ ~5 W9 T2 u sector_count = 8
2 G$ r! E0 N7 ^, ^' Y [EPCS-202015] # EPCS16N (lead-free)
% @% f8 D/ ?( E+ b sector_size = 65536# Y& w% z: j3 Q! W z% D
sector_count = 32
; I0 M/ b/ X' x: N! G3 Y ~ [EPCS-202017] # EPCS64N (lead-free)
9 d3 {8 d$ R- B' S8 a sector_size = 655362 T. R0 H, M; c% W
sector_count = 128& |- _% I) p8 K2 y
( m% W& ]2 S m3 K5 J5 C4 A: T
3、在上述代码中添加自己选择的通用SPIFlash,例如:
; O% u$ s- I1 I/ k [EPCS-1C2017] # EPCS64N (Eon-lead-free)) C( A! r' _7 L& r! P9 E
sector_size = 655364 |3 D; K7 V% Q* l& Z6 b8 _$ P
sector_count = 128
! s0 u2 E# t* Y; G; J$ y7 d, X! t: k6 |( h4 A e5 t1 U
然后再使用nios2-flash-programmer命令下载***.flash文件,就可以对SPIFlash进行下载了。& z: ^0 m0 L! q, E
# h6 j% o# \! Z' _3 n' u
需要注意的是,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 ...查询。
2 m" J( ?. `8 \$ a& N0 y* w
& T: |3 v1 R! \' }1 ~4 U 以上我选了一种器件进行做说明,大家可以根据自己的器件修改nios2-flash-override.txt文件,只需要更改ID号就行了,保证sector_size,sector_count与EPCS器件一致。 |
|