你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何理解 RAMECC FAR 寄存器的值

[复制链接]
STMCU小助手 发布时间:2023-2-18 16:00
1. 问题原因
8 w1 O5 |: U4 [+ R

) m; _0 a/ r6 B, u$ t, W. _7 A某客户测试 STM32H753xi 板子上的 ECC 功能,用于监控 AXI-SRAM 区域,但不是很明白 RAMECC FAR 寄存器在 RM0433 中的描述, “Bits 31:0 FADD[31:0]: ECC error failing address”。比如在 AXI-SRAM 中,如果客户示例显示的是 FAR = 0x2004,但是这个地址值 0x2004 并不在 AXI-SRAM 范围之内,客户该如何理解 FAR 寄存器?希望能够有详尽的描述,这个 FAR 寄存器的偏移地址是 Word 地址还是 Byte 地址或其他?我们先来看看相关参考手册中关于 RAMECC 的介绍去寻找答案。% ?$ ?8 x: v! n1 N9 u$ q
7 E0 ?. |1 q$ z- }; {

2 K( B; U7 O) t1 R 2. RAMECC 控制单元
" K8 m; E$ e+ W4 B RAM ECC 控制单元的数量取决于不同的 STM32H7 系列。比如,对于STM32H74x/5x 和 STM32H72x/3x 它们的每一个域都有一个 RAMECC 的控制器单元,为了描述简单,表述如下:
( Y% g. D* n* V* e Domain 1 (D1) RAMECC unit = RAMECC1
8 l5 ~" `% @. eDomain 2 (D2) RAMECC unit = RAMECC2
5 B3 R8 ]. d2 T& R: x! I4 r: C; e/ \Domain 3 (D3) RAMECC unit = RAMECC3 $ p" F2 T% P; W: k5 m

7 e2 @: K; k3 {" ~0 I0 o% C$ ?1 K9 i

: _% Y- d7 V( j" [& ^详细的说明请参考 RM0433 参考手册 rev7 中的截图: $ Y! u& P$ ]( h8 t! ]* [
3 F8 {2 F, Q0 r# u# c4 L$ e" G

  C: H, a. G) K+ U! `4 }" p1 w1 f
4 B+ T& k% c1 W0 q5 l( l' }
1 A. i  l2 C7 @) Q, u: ?% A& `$ S& p5 U
B5EF$FTK67N_HFY@]E$Y03V.png
; ~& h3 [+ k* _: ^; N
5 i! j* h9 w3 z6 d3 _9 l3.RAMECC 寄存器地址 / _2 o- A3 q; a+ f" ]
对于上图 Table 11 的 RAMECC 控制单元的地址总结成如下表格,具体的参考RM0433 的第二章节 Memory and bus architecture 中的 table 8.
4 U8 T* N% J1 s; q, D: ^4 H* b6 A: Y3 D1 T6 v
" U- {# v; ?* y1 G9 r+ A
DOJU{(TVLHWWSFCK8O3%FXW.png
5 y- `, J, Z' n7 H  e/ J' q
" w) @9 z3 h6 i) G* ?$ R) f5 G
: g4 {1 K2 |; h+ _# k7 ~% Y
4.RAMECC 寄存器
1 L  h' d; @4 b每一个 RAMECC 控制单元(RAMECC1、RAMECC2、RAMECC3)的监控单元Monitor number 均分别含有如下的一套寄存器组(其中 RAMECC_IER 为共同拥有)。
/ L* S. A. [& y4 G接下来我们以 RAMECC1 为例进行分析,其边界地址为:0x52009000 -0x520093FF,那么对于该 RAMECC1 控制单元中的寄存器组,对于每一个寄存器: : G/ e  Z! o' Q, |6 q9 S1 |' g$ z

; P3 j5 s- R+ [0 l0 u
3 f. d. w$ r7 ?% a
E)3O]RKTRZB{[KAVBP)ZR7H.png 3 q. O9 D/ F# f1 y& \

) F9 r0 L7 s0 f6 z
3 F2 [- [9 N8 n" G9 Q$ m- T0 Y
以 RAMECC1 的起始地址 0x52009000 为基准:
. i/ j' {0 H; yRAMECC_IER:中断使能,偏移地址 0x00,该寄存器地址即为:0x52009000。3 }8 \' p( X4 z  V' ], ~. U
RAMECC_MxCR:配置寄存器,偏移地址 0x20 *x,x 为 ECC 监控单元号,该寄存器地址的表达式为:0x52009000 + 0x20 * x ,x 取值范围= [1..5](见上面表格 Table 11 ECC controller mapping),所以:
; P( e' V1 N0 VMonitor 1 - AXI SRAM ECC 监控单元,该寄存器地址即为 0x52009020,监控大小为整个 AXI SRAM 的 512KB 字节(0x24000000 -0x2407FFFF)。
% a- H0 ^+ X4 @$ k) E! qMonitor 2 - ITCM-RAM ECC 监控单元,该寄存器地址0x52009040, 监控大小为整个ITCM RAM的64KB字节(0x00000000 -0x0000FFFF)。 M
& W+ `$ J/ e3 `# wonitor 3、Monitor 4、Monitor 5 中该 RAMECC_MxCR 寄存器的地址,以此类推。 " G3 D5 Y$ T0 f, [& s$ F

$ u' ]( V5 [: m8 _0 n* p
RAMECC_MxSR -- 状态寄存器,偏移地址: 0x24 + 0x20 * (x - 1),x 为 ECC monitor number 号码(见上面表格 Table 11 ECC controller mapping)。那么该寄存的地址为:0x52009000 + 0x24 + 0x20 * (x-1) ,x 取值范围 = [1..5]: ; T! r+ l% m0 |, x* }# q. @
Monitor 1:0x52009024
# B% g" M) g( @: z! w0 k) @ Monitor 2:0x52009044
/ W$ J$ `3 G$ s! M8 X4 O( b Monitor 3 : 0x52009064
& Z3 H( q# |; p/ A0 K3 X' E Monitor 4 : 0x52009084 + N4 z+ b  N( l+ W- l/ x
Monitor 5 : 0x520090a4 8 A2 C4 o: n! q

$ m3 R$ s  D* [0 ^  W
RAMECC_MxFAR --失败地址寄存器,表达式:0x52009000 + 0x28 + 0x20 * (x-1) , x取值 = [1..5]: : D& I7 Q9 f7 }, N7 _
Monitor 1:0x52009028 Monitor 2:0x52009048
- o5 ?: R5 J. R' S" N5 |! KMonitor 3:0x52009068
+ i5 O+ {# F+ t2 F% DMonitor 4:0x520090885 I1 _. n  w( Y6 u
Monitor 5:0x520090a8' ~2 ^( _9 d- N+ W& m/ u6 [
2 ?, Z5 Y- U, o* G/ Z

4 m: T1 {) g  |# D& X3 f/ C, wRAMECC_MxFDRL -- 失败数据低位,表达式 0x52009000 + 0x2c + 0x20 * (x-1) ,x 取值= [1..5]& q2 |8 z) a9 h; C7 `& ~
Monitor 1:0x5200902c
; u6 T( }  p6 W8 E/ s: u/ GMonitor 2:0x5200904c) q* B2 Q2 t' j: f! E
Monitor 3:0x5200906c
  r+ V5 `. I2 Q8 }, U% x: m( ~! s" uMonitor 4:0x5200908c# ?; z: e: l( F1 u7 t5 l$ C
Monitor 5:0x520090ac# D, v: Y5 B+ J& [( ~1 D( _

& H  k* A: m: x: p6 `4 i( h
) O2 H# p( a* G+ p! f9 ]! X
RAMECC_MxFDRH -- 失败数据高位,表达式 0x52009000 + 0x30 + 0x20 * (x-1),x 取值= [1..5]
5 t+ r3 w. e$ M8 QMonitor 1:0x52009030 ; ~% i7 N6 m1 q% K( e9 v, B
Monitor 2:0x52009050
( w3 S6 d# R1 |, `+ b4 W7 xMonitor 3:0x52009070
  v. ?( I; F  l# iMonitor 4:0x52009090 $ [( @1 [3 p# r/ F
Monitor 5:0x520090b0, }. }' r+ \7 G) r2 a, H# Q' }
3 c8 k3 U3 i- @9 p% ~: j# S
( B: m2 V# j* ~9 ?' @' L$ ]5 |
RAMECC_MxFECR --失败 ECC 错误代码,表达式 0x52009000 + 0x34 + 0x20 * (x1) ,x 取值 = [1..5]
+ c8 ~6 G! g% v- d/ WMonitor 1:0x52009034 ) H% f7 D1 ?" M- N; s% e9 L6 K, F0 z
Monitor 2:0x52009054
, c* |3 e, V7 \  BMonitor 3:0x52009074 + _& s; q7 T) R7 f. I0 G
Monitor 4:0x52009094 0 C. J; q; K( l
Monitor 5:0x520090b4
8 y. B, E% k7 C: y0 Z+ h- l
, I9 F: ]5 ^. \$ E/ g, x
% I+ [. w( ^0 p5 |/ \
完整版请查看:附件 如何理解 RAMECC FAR 寄存器的值.pdf (306.03 KB, 下载次数: 1)
赞 收藏 评论0 发布时间:2023-2-18 16:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版