目前來說對于存儲單元SRAM的研究主要基于硬件電路來完成,并且在也都是在生產(chǎn)過程中產(chǎn)生的這些辦法,但并不能夠當當從生產(chǎn)過程中去杜絕SRAM的硬件故障,如果SRAM硬件出錯導致程序出錯特別是在使用過程中,是較難被發(fā)現(xiàn)的,因此通過軟件對SRAM 進行檢測是為了防止在運用過程中因存儲單元損壞而導致系統(tǒng)出錯。
1 SRAM運行狀態(tài)分析
SRAM是一種易失性的隨機靜態(tài)存儲器,存儲非CONSTANT變量(如RW),具有掉電丟失數(shù)據(jù)的特點,從系統(tǒng)上電后,從Corter-M3啟動步驟可得知,需先執(zhí)行復位的五個步驟:
①NVIC復位,控制內(nèi)核;
②NVIC從復位中釋放內(nèi)核;
?、蹆?nèi)核配置堆棧;
?、軆?nèi)核設置PC和LR;
?、葸\行復位程序。
可以看出,不能在調(diào)入C環(huán)境之后檢測
SRAM,必須在Cortex—M3復位之前和啟動之后進行檢測。
在執(zhí)行系統(tǒng)復位的最后一個步驟之前,系統(tǒng)都沒有對SRAM執(zhí)行任何相關的數(shù)據(jù)傳送動作。第⑤步運行復位程序,在ST公司Cortex-M3處理器內(nèi)核的STM32系列微控制器的啟動代碼中有一段復位子程序:
在這個子程序里導入了__main,__main是C庫文件的入口地址。它執(zhí)行下面3個步驟:
①復制非root(RW、RO)從Flash到SRAM;
?、诜峙鋃I區(qū),并且初始化為0;
?、厶D到堆棧初始化子程序接口__rt_entry。
由_ _main的第一步可以得出,在跳入_ _main之后,系統(tǒng)對SRAM進行了相關數(shù)據(jù)轉移的操作。因此,檢測SRAM必須在此步驟之前,否則將會覆蓋SRAM從Flash中轉移過來的數(shù)據(jù)。
2 SRAM檢測方案設計
在復位子程序跳入_ _main之前,設計另一個程序入口SRAM_Check,使PC指針指向該SRAM進行硬件單元檢測程序(SRAM_Check)的入口。在SRAM_check里,首先將PC指針指向SRAM的首地址并寫入0xFF,讀回該地址的值到通用寄存器Rn1,并對Rn1里的值進行加1操作,然后將Rn1和256做比較,得出SRAM硬件是否損壞。這種操作可以避免因SRAM硬件一直為1或0而出現(xiàn)算法本身錯誤。由于Cortex—M3復位后默認的時鐘為HSI,是一個內(nèi)部RC振蕩器,因此精度不高。如果需要更準和快速的時鐘,就必須在跳入SRAM_Check之前對相關的寄存器進行操作。
3 SRAM檢測軟件設計
圖1為本文設計的SRAM檢測軟件程序流程。
圖1 SRAM檢測軟件程序流程
4 在線調(diào)試結果及分析
上電復位后,在線調(diào)試PC指針指向Reset_Handler入口地址時的SRAM初始數(shù)值如圖2所示??梢钥吹?,當系統(tǒng)復位時每個SRAM單元的數(shù)值均為0x00。
在線調(diào)試下,圖3為對所有的SRAM地址進行檢測后SRAM的數(shù)值,完全符合程序設計要求。
SRAM測試通過后,釋放所有的SRAM,還原為0x00,如圖4所示。
5 結論
本文提出了一種基于軟件的SRAM單元故障自檢測方法,通過在線調(diào)試得到的結果,可知該方法是完全可行的。在實際運用中,該方法能夠確保系統(tǒng)正常地運行在可靠的環(huán)境之上。如果SRAM單元有生產(chǎn)或運輸?shù)葥p壞,也可以通過該方法方便地檢測出來,大大減少了系統(tǒng)排除故障的時間。
本文關鍵詞:
SRAM
相關文章:
電動自行車MCU應用方案—靈動微電子MM32SPIN07
深圳市英尚微電子有限公司是一家專業(yè)的靜態(tài)隨機記憶體產(chǎn)品及方案提供商,十年來專業(yè)致力代理分銷存儲芯片IC, SRAM、MRAM、pSRAM、 FLASH芯片、SDRAM(DDR1/DDR2/DDR3)等,為客人提供性價比更高的產(chǎn)品及方案。
英尚微電子中國區(qū)指定的授權代理:VTI、NETSOL、JSC濟州半導體(EMLSI)、Everspin 、IPSILOG、LYONTEK、ISSI、CYPRESS、ISOCOME、PARAGON、SINOCHIP、UNIIC; 著名半導體品牌的專業(yè)分銷商 如:RAMTROM、ETRON、FUJITSU、LYONTEK、WILLSEMI。
?更多資訊關注SRAMSUN. jungeum.cn 0755-66658299