色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32芯片異常復位的原因有哪些

STM32單片機 ? 2019-03-08 16:24 ? 次閱讀

問題描述

STM32用戶反饋,當使用STM32L4芯片的時候,程序運行一段時間后,會忽然復位。復位后程序繼續運行,但是還會繼續復位,原因不詳。

問題解析

初步確定復位的原因,是硬件復位,如外部NRST被拉低,還是軟件復位,包括軟件直接調用復位,或者看門狗復位,還是低功耗模式如standby模式被喚醒時產生中斷。

查看復位狀態寄存器了解復位大方向,然后做進一步得拆解分析。

目前客戶項目的復位原因是因為看門狗復位,即客戶使用了IWDG,但由于某種原因沒有及時喂狗,導致IWDG超時復位。初步懷疑由于客戶軟件的問題,程序跑飛,進入異常處理。

因為客戶的異常處理函數中并沒有做任何動作,導致獨立看門狗IWDG復位。基于此,我們先關閉IWDG,然后在所有的異常處理中,先加入死循環并打上斷點,對異常原因進行捕捉。

 STM32芯片異常復位的原因有哪些

 STM32芯片異常復位的原因有哪些

 STM32芯片異常復位的原因有哪些

正如我們所猜測,的確是由于程序跑飛導致。程序停在了voidHardFault_Handler(void)

通過查看SP以及回溯棧里面的內容,找到了對應的LR,具體方法如下:

 STM32芯片異常復位的原因有哪些

當中斷產生時,按照上圖所示的順序進行壓棧,同時棧指針SP--,即: R0, R1, R2, R3, R12, LR, PC, xPSR。

 STM32芯片異常復位的原因有哪些

如上圖所示,當產生異常時,如果call stack窗口顯示不出來的話,只能根據core的寄存器手動回溯棧,以找到出錯時的指針。根據ARM core的說明,SP+6,即紅框的部分,為中斷處理后LR和PC,據此可以追溯函數異常時的位置。

根據出錯時的PC和LR,發現是浮點運算的函數,初步判斷是因為浮點運算導致,比如沒有對齊導致的Hardfault,但實際檢查發現,并不是浮點運算的問題。

問題一時陷入了僵局。但有一點是確定的,是因為棧的區域被異常覆蓋或者改寫導致產生hardfault。

由于問題可以穩定復現,采取逐個排除法最終發現了問題的所在:

當把一個局部數組變量改為全局數組時,問題消失!

由于局部數組變量是保存在當中,所以懷疑是對這個局部數組變量使用不當導致了棧被覆蓋或者改寫。

追查這個局部變量數組:

 STM32芯片異常復位的原因有哪些

 STM32芯片異常復位的原因有哪些

 STM32芯片異常復位的原因有哪些

經檢查發現,這個原先是8bit的局部變量的數組,在最后被強制轉換成了uint32_t*類型的指針,由于是指針,在對其進行++或--操作時,都是按照4字節寬帶操作的,這就相當于擴大了4倍,覆蓋了后面的棧的內容,導致了程序跑飛。

小結

當芯片異常復位或者進入異常處理 (如Hard fault, Mem Manage, Bus fault等)時,首先考慮的是,如何快速的復現這個問題,當問題被穩定復現的時候,可以通過調試工具在異常處理的地方打上斷點停留,這樣就可以獲取到棧指針SP,通過SP去看棧里面的內容去回溯棧。當然,如果棧的內容被無端改寫時,棧里面的內容,如保存的LR就沒有太大的參考意義。不過,可以通過觀察棧里面的內容,去估測是哪個模塊或者函數異常修改了棧的內容,進而定位最終的問題源。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2277

    文章

    10952

    瀏覽量

    359246
  • STM32芯片
    +關注

    關注

    0

    文章

    38

    瀏覽量

    4470

原文標題:經典案例解析 | STM32芯片異常復位

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32單片機的應用筆記 奇怪的NRST 管腳異常復位問題

    異常復位問題的通常解決思路 我們知道, 導致MCU異常復位原因很多, 比如外部
    的頭像 發表于 07-13 18:55 ?1.1w次閱讀
    <b class='flag-5'>STM32</b>單片機的應用筆記 奇怪的NRST 管腳<b class='flag-5'>異常</b><b class='flag-5'>復位</b>問題

    分析一個關于STM32 芯片異常復位的經典案例!

    應用軟件產生異常的地方!問題描述某STM32用戶反饋,當使用STM32L4芯片的時候,程序運行一段時間后,會忽然復位
    發表于 04-07 08:00

    STM32F051K8U6芯片復位異常

    STM32F051K8U6芯片復位異常,懷疑芯片內部電源檢測(POR/PDR)電路異常,導致
    發表于 12-19 11:41

    導致MCU出現功能嚴重異常的幾個原因分析

    我們在從事MCU應用開發過程中,難免會碰到MCU芯片異常的問題。比如異常復位,表現為復位電平
    發表于 11-29 16:10 ?1.2w次閱讀

    STM32 Bootloader異常復位如何解決

    客戶反饋通過PC軟件Flashloader不能夠跟STM32 MCU自帶Bootloader連接。并且系統運行一段時間后異常復位
    的頭像 發表于 03-23 10:26 ?9812次閱讀
    <b class='flag-5'>STM32</b> Bootloader<b class='flag-5'>異常</b><b class='flag-5'>復位</b>如何解決

    STM32引起電源和系統異常復位原因

    關注、星標公眾號,不錯過精彩內容來源:STM32每一塊處理器都有復位的功能,不同處理器復位的類型可能有差異,引起復位原因也可能有多種。今天
    發表于 01-05 14:28 ?4次下載
    <b class='flag-5'>STM32</b>引起電源和系統<b class='flag-5'>異常</b><b class='flag-5'>復位</b>的<b class='flag-5'>原因</b>

    STM32學習筆記 | 引起電源和系統異常復位原因

    關注+星標公眾號,不錯過精彩內容每一塊處理器都有復位的功能,不同處理器復位的類型可能有差異,引起復位原因也可能有多種。STM32
    發表于 01-17 12:45 ?2次下載
    <b class='flag-5'>STM32</b>學習筆記 | 引起電源和系統<b class='flag-5'>異常</b><b class='flag-5'>復位</b>的<b class='flag-5'>原因</b>

    經典案例解析 | STM32芯片異常復位

    問題描述:某STM32用戶反饋,當使用STM32L4芯片的時候,程序運行一段時間后,會忽然復位復位后程序繼續運行,但是還會繼續
    發表于 02-10 11:30 ?19次下載
    經典案例解析 | <b class='flag-5'>STM32</b><b class='flag-5'>芯片</b><b class='flag-5'>異常</b><b class='flag-5'>復位</b>

    STM32芯片的那些系統級復位功能

    我們知道,STM32芯片很多系統級的復位,比方上電復位、欠壓復位、看門狗
    的頭像 發表于 10-19 09:06 ?5559次閱讀

    基于STM32芯片特定外設復位的功能

    我們知道,STM32芯片很多系統級的復位,比方上電復位、欠壓復位、看門狗
    的頭像 發表于 06-22 09:08 ?2661次閱讀
    基于<b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>特定外設<b class='flag-5'>復位</b>的功能

    STM32 Bootloader異常復位案例

    電子發燒友網站提供《STM32 Bootloader異常復位案例.pdf》資料免費下載
    發表于 09-25 09:17 ?3次下載
    <b class='flag-5'>STM32</b> Bootloader<b class='flag-5'>異常</b><b class='flag-5'>復位</b>案例

    單片機異常復位原因 簡述單片機如何復位

    單片機異常復位原因 簡述單片機如何復位? 單片機異常復位是指在正常運行期間,單片機出現了不可恢復
    的頭像 發表于 10-17 16:44 ?3661次閱讀

    STM32復位電路用復位芯片和阻容復位電路區別

    系統中,復位電路是保證系統正常工作的重要部分。當系統出現異常或需要重新啟動時,復位電路能夠迅速將系統恢復到初始狀態。STM32微控制器的復位
    的頭像 發表于 08-06 10:26 ?2078次閱讀

    單片機異常復位原因

    單片機異常復位是指單片機在正常工作過程中,非預期地返回到初始狀態或重啟。這種異常復位現象可能由多種因素引起,以下是對單片機異常
    的頭像 發表于 10-17 17:56 ?1908次閱讀

    【AI技術支持】ESP32-S3芯片重復異常復位問題處理

    啟明云端/01問題描述客戶在掃碼槍產品中使用ESP32-S3芯片,ESP-IDF版本為idf5.1.0時,產品上電后一直處于異常復位復位提示原因
    的頭像 發表于 01-17 18:08 ?632次閱讀
    【AI技術支持】ESP32-S3<b class='flag-5'>芯片</b>重復<b class='flag-5'>異常</b><b class='flag-5'>復位</b>問題處理
    主站蜘蛛池模板: 十分钟免费看完整视频 | 顶级少妇AAAAABBBBB片 | 国产一区二区三区国产精品 | 亚洲日产2020乱码草莓毕 | 国产99视频在线观看 | 性888xxxx入欧美 | 99久久亚洲精品影院 | MM131亚洲精品久久安然 | 亚洲国产精品无码2019 | 久久永久影院免费 | 小SAO货水真多把你CAO烂 | 在线AV国产传媒18精品免费 | 久久亚洲欧美国产综合 | 纯肉宠文高h一对一 | 78m成人亚洲 | 在线视频 中文字幕 | 波多久久亚洲精品AV无码 | 亚洲中文字幕无码一去台湾 | 久久一级片 | 99国产精品欲AV蜜桃臀麻豆 | 一本道久在线综合色色 | 九热这里只有精品 | 99久久99久久久精品久久 | 欧美派对xxxhdparty | 久久久97人妻无码精品蜜桃 | 久久一级片 | 日韩亚洲国产中文字幕欧美 | 嘟嘟嘟影院免费观看视频 | 纯肉高H啪短文合集 | 亚洲国产夜色在线观看 | 久久九九免费 | 国产激情视频在线播放 | 最新国产成人综合在线观看 | 果冻传媒2021一二三区 | 伊人久久大香线蕉综合影 | 亚洲精品色情婷婷在线播放 | 亚洲日本va中文字幕久久 | 成人麻豆日韩在无码视频 | 狠狠色狠狠色综合 | 国产色婷婷亚洲99精品 | 久久精品中文闷骚内射 |