新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 軟件啟動模式導致 IWatchDog 失效

        軟件啟動模式導致 IWatchDog 失效

        作者: 時間:2016-11-25 來源:網絡 收藏
        問題:
        該問題由某客戶提出,發生在 STM32F103VET6 器件上。據其工程師講述:其產品中使用了 STM32,已量產。在發給其客戶的產品中,部分出現不開機現象。其工程師在現場測試后發現 STM32 的 HSE 沒有起振。通過拉低 NRST 管腳對 SMT32 復位后,HSE 起振且系統恢復正常工作。于是懷疑 STM32 的HSE 的缺陷導致了其不起振。

        調研:
        檢查其硬件電路設計的 HSE 部分,在原理圖及 PCB 中勻未發現錯誤。檢查 STM32 的供電情況,VDD、VDDA、VBAT、Vref+、Vref-、VSS、VSSA 未發現異常。檢查 BOOT0 管腳的設置,未發現異常。檢查 NRST 的外圍電路,未發現異常。對其產品重新上電,可以正常起動、工作。檢查軟件計,發現其 IWatchDog 的啟動模式為軟件啟動。于是,要求其工程師將其改為硬件起動模式,然后對此前出現異常的產品更新程序后重新測試。經過一段時間的觀察后,發現其不再重現先前的問題。

        結論:
        猜測 STM32 在運行中受到了連續的干擾。在程序跑飛之后,由于 IWatchDog 溢出而引起STM32 復位。復位之后干擾依然存在,程序再次跑飛。由于設置了軟件啟動模式,導致IWatchDog 此時尚未開始工作,從而不能再次復位 STM32。于是,干擾過后,STM32 不能自行恢復到正常的工作狀態。而HSE 不起振則是由于軟件未來得及對 HSE 開啟而表現出的一個現象。

        處理:
        將 IWatchDog 的啟動模改為硬件啟動,可以保障 STM32 在干擾過后能夠自行的恢復到正常的工作狀態。

        建議:
        STM32 的 IWatchDog 設有兩種啟動模式,一種是軟件啟動模式,另一種是硬件啟動模式。在軟件啟動模式下,IWatchDog 在復位之后暫時是關閉的,直到軟件對其開啟之后才開始工作。而在硬件啟動模式下,在復位結束時,IWatchDog 已經開始工作,無須軟件干預。于是,同硬件啟動模相比,軟件啟動模式在時間上多了一個“不安全窗口”,如圖(二)所示:

        如果 STM32 在“不安全窗口”內受到干擾而跑飛,那么系統是無法自恢復的。所以,要使 IWatchDog 有效的工作,硬件啟動模式是必須的選擇。通常,在編程器的操作界面上會有相關的選項,以供使用者選擇用哪種啟動模式來啟動 IWatchDog。雖然用戶程序也可以通過對 STM32 的 Option Bytes 進行設置來實現兩種啟動模式的選擇,但不建議這樣做,因為這需要相關的軟件具有嚴謹控制邏輯,處理不當會留下安全隱患


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 馆陶县| 海兴县| 南昌县| 基隆市| 拜泉县| 新乡县| 垣曲县| 安岳县| 深泽县| 岢岚县| 五河县| 大余县| 南宁市| 潮州市| 焦作市| 兴国县| 大洼县| 三都| 太白县| 洞口县| 云安县| 光泽县| 山西省| 鹤山市| 吉林省| 清涧县| 洛宁县| 城市| 罗甸县| 交口县| 台山市| 哈巴河县| 长葛市| 富民县| 岫岩| 昆山市| 明光市| 广德县| 五大连池市| 黄山市| 龙游县|