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

如何理解 RAMECC FAR 寄存器的值

[复制链接]
STMCU小助手 发布时间:2023-2-18 16:00
1. 问题原因

某客户测试 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 的介绍去寻找答案。


2. RAMECC 控制单元
RAM ECC 控制单元的数量取决于不同的 STM32H7 系列。比如,对于STM32H74x/5x 和 STM32H72x/3x 它们的每一个域都有一个 RAMECC 的控制器单元,为了描述简单,表述如下
Domain 1 (D1) RAMECC unit = RAMECC1
Domain 2 (D2) RAMECC unit = RAMECC2
Domain 3 (D3) RAMECC unit = RAMECC3


详细的说明请参考 RM0433 参考手册 rev7 中的截图:




B5EF$FTK67N_HFY@]E$Y03V.png

3.RAMECC 寄存器地址
对于上图 Table 11 的 RAMECC 控制单元的地址总结成如下表格,具体的参考RM0433 的第二章节 Memory and bus architecture 中的 table 8.


DOJU{(TVLHWWSFCK8O3%FXW.png


4.RAMECC 寄存器
每一个 RAMECC 控制单元(RAMECC1、RAMECC2、RAMECC3)的监控单元Monitor number 均分别含有如下的一套寄存器组(其中 RAMECC_IER 为共同拥有)。
接下来我们以 RAMECC1 为例进行分析,其边界地址为:0x52009000 -0x520093FF,那么对于该 RAMECC1 控制单元中的寄存器组,对于每一个寄存器:


E)3O]RKTRZB{[KAVBP)ZR7H.png


以 RAMECC1 的起始地址 0x52009000 为基准:
RAMECC_IER:中断使能,偏移地址 0x00,该寄存器地址即为:0x52009000。
RAMECC_MxCR:配置寄存器,偏移地址 0x20 *x,x 为 ECC 监控单元号,该寄存器地址的表达式为:0x52009000 + 0x20 * x ,x 取值范围= [1..5](见上面表格 Table 11 ECC controller mapping),所以:
Monitor 1 - AXI SRAM ECC 监控单元,该寄存器地址即为 0x52009020,监控大小为整个 AXI SRAM 的 512KB 字节(0x24000000 -0x2407FFFF)。
Monitor 2 - ITCM-RAM ECC 监控单元,该寄存器地址0x52009040, 监控大小为整个ITCM RAM的64KB字节(0x00000000 -0x0000FFFF)。 M
onitor 3、Monitor 4、Monitor 5 中该 RAMECC_MxCR 寄存器的地址,以此类推。

RAMECC_MxSR -- 状态寄存器,偏移地址: 0x24 + 0x20 * (x - 1),x 为 ECC monitor number 号码(见上面表格 Table 11 ECC controller mapping)。那么该寄存的地址为:0x52009000 + 0x24 + 0x20 * (x-1) ,x 取值范围 = [1..5]:
Monitor 1:0x52009024
Monitor 2:0x52009044
Monitor 3 : 0x52009064
Monitor 4 : 0x52009084
Monitor 5 : 0x520090a4

RAMECC_MxFAR --失败地址寄存器,表达式:0x52009000 + 0x28 + 0x20 * (x-1) , x取值 = [1..5]:
Monitor 1:0x52009028 Monitor 2:0x52009048
Monitor 3:0x52009068
Monitor 4:0x52009088
Monitor 5:0x520090a8


RAMECC_MxFDRL -- 失败数据低位,表达式 0x52009000 + 0x2c + 0x20 * (x-1) ,x 取值= [1..5]
Monitor 1:0x5200902c
Monitor 2:0x5200904c
Monitor 3:0x5200906c
Monitor 4:0x5200908c
Monitor 5:0x520090ac


RAMECC_MxFDRH -- 失败数据高位,表达式 0x52009000 + 0x30 + 0x20 * (x-1),x 取值= [1..5]
Monitor 1:0x52009030
Monitor 2:0x52009050
Monitor 3:0x52009070
Monitor 4:0x52009090
Monitor 5:0x520090b0


RAMECC_MxFECR --失败 ECC 错误代码,表达式 0x52009000 + 0x34 + 0x20 * (x1) ,x 取值 = [1..5]
Monitor 1:0x52009034
Monitor 2:0x52009054
Monitor 3:0x52009074
Monitor 4:0x52009094
Monitor 5:0x520090b4


完整版请查看:附件 如何理解 RAMECC FAR 寄存器的值.pdf (306.03 KB, 下载次数: 1)
收藏 评论0 发布时间:2023-2-18 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版