• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > Cortex―M3的SRAM單元故障軟件的自檢測研究

    Cortex―M3的SRAM單元故障軟件的自檢測研究

    作者: 時間:2011-07-29 來源:網絡 收藏

    引言
    目前,對于存儲都是基于硬件電路來完成,而且這些方法都是運用在生產過程中,但是生產過程并不能完全杜絕的硬件。在其使用過程中,如果硬件出錯,將導致程序出錯而且很難被發現。因此在運用的階段,為防止存儲損壞而導致系統出錯,通過的方式對SRAM進行是必要的。

    1 SRAM運行狀態分析
    SRAM是存儲非CONSTANT變量(如RW),它具有掉電即失的特點。由的啟動步驟可知,系統上電后,首先執行復位的5個步驟:
    ①NVIC復位,控制內核;
    ②NVIC從復位中釋放內核;
    ③內核配置堆棧;
    ④內核設置PC和LR;
    ⑤運行復位程序。
    可以看出,不能在調入C環境之后SRAM,必須在復位之前和啟動之后進行
    在執行系統復位的最后一個步驟之前,系統都沒有對SRAM執行任何相關的數據傳送動作。第⑤步運行復位程序,在ST公司-處理器內核的STM32系列微控制器的啟動代碼中有一段復位子程序:
    c.JPG
    在這個子程序里導入了__main,__main是C庫文件的入口地址。它執行下面3個步驟:
    ①復制非root(RW、RO)從Flash到SRAM;
    ②分配ZI區,并且初始化為0;
    ③跳轉到堆棧初始化子程序接口__rt_entry。
    由_ _main的第一步可以得出,在跳入_ _main之后,系統對SRAM進行了相關數據轉移的操作。因此,檢測SRAM必須在此步驟之前,否則將會覆蓋SRAM從Flash中轉移過來的數據。

    2 SRAM檢測方案設計
    在復位子程序跳入_ _main之前,設計另一個程序入口SRAM_Check,使PC指針指向該SRAM進行硬件檢測程序(SRAM_Check)的入口。在SRAM_check里,首先將PC指針指向SRAM的首地址并寫入0xFF,讀回該地址的值到通用寄存器Rn1,并對Rn1里的值進行加1操作,然后將Rn1和256做比較,得出SRAM硬件是否損壞。這種操作可以避免因SRAM硬件一直為1或0而出現算法本身錯誤。由于Cortex—M3復位后默認的時鐘為HSI,是一個內部RC振蕩器,因此精度不高。如果需要更準和快速的時鐘,就必須在跳入SRAM_Check之前對相關的寄存器進行操作。

    3 SRAM檢測設計
    圖1為本文設計的SRAM檢測程序流程。

    本文引用地址:http://www.czjhyjcfj.com/article/150421.htm

    d.JPG


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 贵阳市| 铁力市| 海丰县| 申扎县| 河东区| 漾濞| 泊头市| 镇安县| 武川县| 吉木萨尔县| 施甸县| 汽车| 平顶山市| 吕梁市| 永顺县| 乐清市| 长兴县| 崇州市| 东光县| 六枝特区| 凌云县| 昌黎县| 健康| 隆德县| 元氏县| 南木林县| 墨竹工卡县| 晋中市| 册亨县| 常宁市| 高淳县| 师宗县| 友谊县| 叙永县| 灵台县| 垫江县| 萨迦县| 于田县| 涿州市| 墨玉县| 涟源市|