Cortex M3的SRAM單元故障軟件的自檢測研究
目前,對于存儲單元SRAM的研究都是基于硬件電路來完成,而且這些方法都是運用在生產過程中,但是生產過程并不能完全杜絕SRAM的硬件故障。在其使用過程中,如果SRAM硬件出錯,將導致程序出錯而且很難被發(fā)現。因此在運用的階段,為防止存儲單元損壞而導致系統出錯,通過軟件的方式對SRAM進行檢測是必要的。
1 SRAM運行狀態(tài)分析
SRAM是存儲非CONSTANT變量(如RW),它具有掉電即失的特點。由Cortex—M3的啟動步驟可知,系統上電后,首先執(zhí)行復位的5個步驟:
?、貼VIC復位,控制內核;
②NVIC從復位中釋放內核;
?、蹆群伺渲枚褩?
④內核設置PC和LR;
?、葸\行復位程序。
可以看出,不能在調入C環(huán)境之后檢測SRAM,必須在Cortex—M3復位之前和啟動之后進行檢測。
在執(zhí)行系統復位的最后一個步驟之前,系統都沒有對SRAM執(zhí)行任何相關的數據傳送動作。第⑤步運行復位程序,在ST公司Cortex-M3處理器內核的STM32系列微控制器的啟動代碼中有一段復位子程序:
在這個子程序里導入了__main,__main是C庫文件的入口地址。它執(zhí)行下面3個步驟:
?、購椭品莚oot(RW、RO)從Flash到SRAM;
?、诜峙鋃I區(qū),并且初始化為0;
?、厶D到堆棧初始化子程序接口__rt_entry。
由_ _main的第一步可以得出,在跳入_ _main之后,系統對SRAM進行了相關數據轉移的操作。因此,檢測SRAM必須在此步驟之前,否則將會覆蓋SRAM從Flash中轉移過來的數據。
2 SRAM檢測方案設計
在復位子程序跳入_ _main之前,設計另一個程序入口SRAM_Check,使PC指針指向該SRAM進行硬件單元檢
評論