問題原因
某客戶測試 STM32H753xi 板子上的 ECC 功能,用于監(jiān)控 AXI-SRAM 區(qū)域,但不是很明白 RAMECC FAR 寄存器在 RM0433 中的描述, “Bits 31:0 FADD[31:0]: ECC errorfailing address”。比如在 AXI-SRAM 中,如果客戶示例顯示的是 FAR = 0x2004,但是這個地址值 0x2004 并不在 AXI-SRAM 范圍之內(nèi),客戶該如何理解 FAR 寄存器?希望能夠有詳盡的描述,這個 FAR 寄存器的偏移地址是 Word 地址還是 Byte 地址或其他?我們先來看看相關(guān)參考手冊中關(guān)于 RAMECC 的介紹去尋找答案。
RAMECC 控制單元
RAM ECC 控制單元的數(shù)量取決于不同的 STM32H7 系列。比如,對于STM32H74x/5x 和 STM32H72x/3x 它們的每一個域都有一個 RAMECC 的控制器單元,為了描述簡單,表述如下:
Domain 1 (D1) RAMECC unit = RAMECC1
Domain 2 (D2) RAMECC unit = RAMECC2
Domain 3 (D3) RAMECC unit = RAMECC3
RAMECC 寄存器地址
RAMECC 寄存器
每一個 RAMECC 控制單元(RAMECC1、RAMECC2、RAMECC3)的監(jiān)控單元Monitor number 均分別含有如下的一套寄存器組(其中 RAMECC_IER 為共同擁有)。
解決問題
通過查詢資料與試驗,F(xiàn)ADD[31:0]中表述的地址是 word 而不是 bit。為了計算真實的地址,客戶需要用如下公式計算:真實地址= 所處內(nèi)存的首地址 + FADD x 字節(jié)數(shù)。