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

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM Cortex-M3的SRAM單元故障軟件的自檢測研究

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

    作者: 時間:2013-10-26 來源:網(wǎng)絡 收藏

      引言

      目前,對于存儲單元SRAM的研究都是基于硬件電路來完成,而且這些方法都是運用在生產(chǎn)過程中,但是生產(chǎn)過程并不能完全杜絕SRAM的硬件故障。在其使用過程中,如果SRAM硬件出錯,將導致程序出錯而且很難被發(fā)現(xiàn)。因此在運用的階段,為防止存儲單元損壞而導致系統(tǒng)出錯,通過軟件的方式對SRAM進行檢測是必要的。

      1 SRAM運行狀態(tài)分析

      SRAM是存儲非CONSTANT變量(如RW),它具有掉電即失的特點。由Cortex—M3的啟動步驟可知,系統(tǒng)上電后,首先執(zhí)行復位的5個步驟:

      ①NVIC復位,控制內核;

      ②NVIC從復位中釋放內核;

      ③內核配置堆棧;

      ④內核設置PC和LR;

      ⑤運行復位程序。

      可以看出,不能在調入C環(huán)境之后檢測SRAM,必須在Cortex—M3復位之前和啟動之后進行檢測。

      在執(zhí)行系統(tǒng)復位的最后一個步驟之前,系統(tǒng)都沒有對SRAM執(zhí)行任何相關的數(shù)據(jù)傳送動作。第⑤步運行復位程序,在ST公司處理器內核的STM32系列微控制器的啟動代碼中有一段復位子程序:
    ARM Cortex-M3的SRAM單元故障軟件的自檢測研究
    在這個子程序里導入了__main,__main是C庫文件的入口地址。它執(zhí)行下面3個步驟:

      ①復制非root(RW、RO)從Flash到SRAM;

      ②分配ZI區(qū),并且初始化為0;

      ③跳轉到堆棧初始化子程序接口__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,是一個內部RC振蕩器,因此精度不高。如果需要更準和快速的時鐘,就必須在跳入SRAM_Check之前對相關的寄存器進行操作。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 四川省| 定结县| 桃江县| 靖宇县| 新邵县| 和静县| 平果县| 高碑店市| 高雄市| 昌乐县| 乐安县| 桃园市| 惠水县| 高州市| 洛阳市| 久治县| 英德市| 大悟县| 武汉市| 无棣县| 杨浦区| 宁强县| 烟台市| 独山县| 阿巴嘎旗| 深圳市| 烟台市| 綦江县| 马关县| 永春县| 兴仁县| 永顺县| 诸城市| 巴里| 灵丘县| 法库县| 松滋市| 盈江县| 综艺| 高雄市| 新乡县|