日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!

發(fā)布時間:2024/7/19 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复位 stm32_分析一个关于STM32 芯片异常复位的经典案例! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

本篇主要是介紹一種處理問題的思路,即當(dāng)我們在做STM32應(yīng)用開發(fā)過程中,遇到芯片異常復(fù)位,或者進(jìn)入了異常處理時,如何通過集成開發(fā)環(huán)境,如IAR,KEIL等查看相應(yīng)的ARM內(nèi)核寄存器,定位出應(yīng)用軟件產(chǎn)生異常的地方!

問題描述

某STM32用戶反饋,當(dāng)使用STM32L4芯片的時候,程序運(yùn)行一段時間后,會忽然復(fù)位。復(fù)位后程序繼續(xù)運(yùn)行,但是還會繼續(xù)復(fù)位,原因不詳!

問題分析

針對于此類問題,我們可以按照一個統(tǒng)一的思路去處理。分析本案例的大致步驟如下:

1、初步確定復(fù)位的原因,是硬件復(fù)位,如外部NRST被拉低,還是軟件復(fù)位,包括軟件直接調(diào)用復(fù)位,或者看門狗復(fù)位,還是低功耗模式如standby模式被喚醒時產(chǎn)生中斷;

2、查看復(fù)位狀態(tài)寄存器了解復(fù)位大方向,然后做進(jìn)一步得拆解分析。

3、目前客戶項目的復(fù)位原因是因為看門狗復(fù)位,即客戶使用了IWDG,但由于某種原因沒有及時喂狗,導(dǎo)致IWDG超時復(fù)位。初步懷疑由于客戶軟件的問題,程序跑飛,進(jìn)入異常處理。因為客戶的異常處理函數(shù)中并沒有做任何動作,導(dǎo)致獨(dú)立看門狗IWDG復(fù)位。基于此,我們先關(guān)閉IWDG,然后在所有的異常處理中,先加入死循環(huán)并打上斷點(diǎn),對異常原因進(jìn)行捕捉。


4、正如我們所猜測,的確是由于程序跑飛導(dǎo)致。程序停在了void HardFault_Handler(void) 。通過查看 SP 以及回溯棧里面的內(nèi)容,找到了對應(yīng)的LR,具體方法如下:


當(dāng)中斷產(chǎn)生時,按照上圖所示的順序進(jìn)行壓棧,同時棧指針SP--,即: R0, R1, R2, R3, R12, LR, PC,xPSR。


如上圖所示,當(dāng)產(chǎn)生異常時,如果call stack窗口顯示不出來的話,只能根據(jù)core的寄存器手動回溯棧,以找到出錯時的指針。根據(jù)ARM core的說明,SP+6,即紅框的部分,為中斷處理后LR和PC,據(jù)此可以追溯函數(shù)異常時的位置!
5、根據(jù)出錯時的PC和LR,發(fā)現(xiàn)是浮點(diǎn)運(yùn)算的函數(shù),初步判斷是因為浮點(diǎn)運(yùn)算導(dǎo)致,比如沒有對齊導(dǎo)致的Hardfault,但實(shí)際檢查發(fā)現(xiàn),并不是浮點(diǎn)運(yùn)算的問題!
6、問題一時陷入了僵局。但有一點(diǎn)是確定的,是因為棧的區(qū)域被異常覆蓋或者改寫導(dǎo)致產(chǎn)生hard fault,
7、由于問題可以穩(wěn)定復(fù)現(xiàn),采取逐個排除法最終發(fā)現(xiàn)了問題的所在:當(dāng)把一個局部數(shù)組變量改為全局?jǐn)?shù)組時,問題消失!由于局部數(shù)組變量是保存在棧當(dāng)中,所以懷疑是對這個局部數(shù)組變量使用不當(dāng)導(dǎo)致了棧被覆蓋或者改寫!追查這個局部變量數(shù)組:


經(jīng)檢查發(fā)現(xiàn),這個原先是8bit的局部變量的數(shù)組,在最后被強(qiáng)制轉(zhuǎn)換成了uint32_t *類型的指針,由于是指針, 在對其進(jìn)行++或--操作時,都是按照4字節(jié)寬帶操作的,這就相當(dāng)于擴(kuò)大了4倍,覆蓋了后面的棧的內(nèi)容, 導(dǎo)致了程序跑飛!
小結(jié)
當(dāng)芯片異常復(fù)位或者進(jìn)入異常處理(如Hard fault, Mem Manage, Bus fault等)時,首先考慮的是,如何快速的復(fù)現(xiàn)這個問題,當(dāng)問題被穩(wěn)定復(fù)現(xiàn)的時候,可以通過調(diào)試工具在異常處理的地方打上斷點(diǎn)停留,這樣就可以獲取到棧指針SP,通過SP去看棧里面的內(nèi)容去回溯棧。當(dāng)然,如果棧的內(nèi)容被無端改寫時,棧里面的內(nèi)容,如保存的LR就沒有太大的參考意義。不過,可以通過觀察棧里面的內(nèi)容,去估測是哪個模塊或者函數(shù)異常修改了棧的內(nèi)容,進(jìn)而定位最終的問題源!

總結(jié)

以上是生活随笔為你收集整理的复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产人人干 | 国产成人无码精品久久久久久 | 亚洲欧美精品午睡沙发 | 精品一区三区 | 一区二区韩国 | 星空大象在线观看免费播放 | 国产一区二区中文字幕 | 天天弄天天干 | 亚洲国产精品视频一区 | 欧美性一级片 | 伊人天天干 | 影音先锋在线看片资源 | 日本人dh亚洲人ⅹxx | 亚洲一区中文 | 成人福利视频在线 | 91国偷自产一区二区三区老熟女 | 黄网站免费看 | 深夜免费在线视频 | 女优一区二区三区 | 日本香蕉视频 | 欧美乱码视频 | www.com亚洲| 成人资源在线观看 | 亚洲伊人婷婷 | 日韩av线 | 日韩字幕在线 | 人妻少妇精品无码专区二区 | 精品欧美久久久 | 农村偷人一级超爽毛片 | 精品少妇一区二区三区密爱 | 欧美xxxx少妇 | 国产精品免费一区二区区 | 日韩精品无码一区二区三区 | 国产xxx视频 | 姑娘第5集高清在线观看 | 日韩一级二级三级 | 国产欧美熟妇另类久久久 | 国产青草 | 成人在线手机视频 | 欧美激情图 | 中文高清av | 国产婷婷久久 | 一级片av| 欧美××××黑人××性爽 | 91精品国产一区二区 | 黄色的网站在线观看 | 国产精品久久久久久免费观看 | 国产欧美日韩综合 | 韩国在线不卡 | 一区二区免费在线视频 | 免费的a级片 | 啪在线视频 | 一久久| 国产九区| 国产成人免费av一区二区午夜 | 狠色综合 | 91黄色小视频 | 成人羞羞国产免费动态 | 亚洲欧美激情一区二区三区 | 少妇熟女一区二区三区 | 91国产高清 | 日韩欧美一二三四区 | 国产91在线高潮白浆在线观看 | 欧美日韩精品中文字幕 | 午夜激情在线观看视频 | 色播在线播放 | 中文字幕亚洲视频 | 色视av| 亚洲23p | 91看片黄| 成人短视频在线免费观看 | 在线不卡日本 | 精品人妻无码一区二区三区换脸 | 国产精品乱码一区二区视频 | 欧美美女性高潮 | 日本黄色大片网站 | 男人和女人在床的app | 99re视频这里只有精品 | 跪求黄色网址 | 精品一区二区在线免费观看 | 九九色播| 综合色爱 | 天堂资源站 | 国产精品久久免费视频 | 国产成人自拍在线 | 亚洲第六页 | 中文字幕在线免费观看 | 日韩免费大片 | 国产欧美精品一区二区 | 成人激情四射网 | 精品不卡在线 | 中出av在线| 在线观看免费视频a | 少妇吹潮| 国产成人三级在线 | 污视频在线观看免费 | 中国特级黄色大片 | 中文字幕美女 | 亚洲综合在线成人 |