国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

單片機/ARM死機或跑飛的診斷療法

發布時間:2020-5-6 15:12    發布者:嵌入式人生17
單片機/ARM死機或跑飛的診斷療法
有時,在寫ARM時會遇到經常死機的情況,莫名其妙,在這里我總結了一些單片機/ARM死機或者跑飛的一些常見的查找方法和我對此的一些拙見希望對大家有幫助。
“死機”和“跑飛”
隨著單片機在能源領域中的廣泛應用,單片機的抗干擾問題越來越突出,煤礦井下環境一般比較惡劣,這便會為單片機控制系統帶來各種干擾,以致系統不能正常工作。單片機應用系統的抗干擾性能主要取決于硬件的抗干擾設計,但軟件抗干擾設計作為硬件抗干擾的完善和補充,作用也非常重要,因為大量的干擾通常并不能影響系統內硬件的運作,卻常會使系統的軟件無法正常運行,單片機應用的一個突出問題,便是單片機運行過程中經常出現的程序跑飛現象。
在單片機系統中,因為干擾的原因,在非預期的情況下,使得程序計數器PC 的值發生隨機的變化,從而使得程序的流向指向不確定區域,這便是程序的跑飛。程序跑飛后或者會使指令的地址碼和操作碼發生改變,PC 把操作數當作指令來執行;或者PC值指向一條不合邏輯關系的指令甚或是非程序區,運行結果常常會使單片機進入死循環———便是大家常說的“死機”。為確保在無人當值的情況下,單片機“死機”后能自動恢復過來,通常采用軟件陷阱,外部WDT 電路,以及軟件控制的WATCHDOG 等方法,使系統恢復正常(后兩種俗稱“看門狗”)。
出錯原因分析
那在程序運行出現這些錯誤時,我們要從哪些方面進行分析呢?
1、意外中斷。
確認下是否打開了某個中斷,但是沒有響應和**中端標志,導致程序一直進入中斷,造成死機假象。
2、 中斷變量處理不妥。
若定義某些會在中斷中修改的全局變量,這時要注意兩個問題:首先為了防止編譯器優化中斷變量,要在這些變量定義時前加 volatile,其次在主循環中讀取中斷變量前應該首先關閉全局中斷,防止讀到一半被中斷給修改了,讀完之后再打開全局中斷;否則出現造成數據亂套。
3、地址溢出,常見錯誤為指針操作錯誤。
我要著重說的是數組下標使用循環函數中循環變量,如果循環變量沒控制好則會出現數組下標越界,意外修改系統的寄存器造成死機,這種情況下如果死機說明運氣好,否則后面不知道發生什么頭疼的事。
4、 無條件的死循環。
比如使用while(x);等待電平變化,正常情況下x都會變成0,就怕萬一,因此最好加上時間限制;
5、看門狗沒有關閉。
有的單片機即使沒使用看門狗開機時也有可能意外自動開啟了最小周期的看門狗,導致軟件不斷復位,造成死機,這個要看芯片手冊,最好在程序復位后首先應該顯式**看門狗再關閉看門狗;
6、 堆棧溢出。
最難查找的問題,對于容量小的單片機,盡量減少函數調用層級,減少局部變量,從而減少壓棧的時候所需的空間。當你把以上幾條都試過不能解決問 題,試一試把你的被調用少函數直接內置到調用的地方并且把占用RAM大的局部變量改成全局變量,試一試說不定就可以了。
處理方法
找出原因后,我們要怎么處理呢?
死機是指CPU的程序指針進入一個死循環,無法執行正常的程序流程。其外在表現常常是:正常功能喪失,按鍵無響應,顯示凝固。單片機死機后,只有復全才能走出死循環,執行正常的程序流程。眾所屬知,克服死機的最有效手段是加看門狗(WatchDog)。

目前用得最廣泛的看門狗實際上是一個特殊的定時器DogTimer。DogTimer按固定速率計時,計滿預定時間就發出溢出脈沖使單片機復位。如果每次在DogTimer溢出前強行讓DogTimer清零,就不會發出溢出脈沖。清零脈沖由CPU發出,在單片機程序中每隔一段語句放一個清DogTimer的語句——FeedDog語句,以保證程序正常運行時DogTimer不會溢出。一旦程序進入一個不含FeedDog語句的死循環,DogTimer將溢出,導致單片機復位,跳出這個死循環。本文稱這種看門狗為典型看門狗,典型看門狗已被集成比,如MAX706、MAX791等[1];還有許多單片機本身集成了這種看門狗,如PIC16C57、MC68HC705等,

有一個錯誤觀點:加了看門狗,單片機就不會死機。實際上,看門狗有時間會完全失效。當程序進入某個死循環,而這個死循環中又包含FeedDog語句,這時DogTimer始終不會溢出,單片機始終得不到復位信號,程序也就始終跳不出這個死循環。針對這一弊端,筆者設計了雙對限看門狗和定時復位看門狗。

雙時限看門狗有兩個定時器;一個為短定時器,一個為長定時器。短定時器定時為T1,長定時器定時為T2,0 。這樣,當程序進入某個死循環,如果這個死循環包含短定時器FeedDog語句而不包含長定時器FeedDog語句,那么長定時順終將溢出,使單片機復位。巧妙安排長定時器FeedDog語句的位置,可保證出現死機的概率根低。

目前幾乎所有的看門狗都是依賴于CPU(依賴于CPU FeedDog)。這可以比作:一個保險設備能否起到保險作用還依賴于被它保護的對象的行為。顯然,依賴于CPU的看門狗是不能保證單片機在分之百不死機的。

在絕對不允許死機的裝置中,筆者設計了一種完全不依賴于CPU的看門狗——定時復位看門狗。定時復位看門狗的主體也是一個定時器,到預定時間就發出溢出脈沖,此溢出脈沖使單片機強行復位。定時復位看門狗不需要CPU FeedDog。

簡言之,定時復位看門狗就是定時地讓單片機強行復位。這樣,即使裝置死機,其最大死機時間也不會大于定時器定時時間。顯然,只要硬件完好,這種看門狗百分之百地保證了單片機不會長時間死機。在智能電表(包括IC卡電能表、復費率電能表、多功能電能表)中采用了定時復位看門狗,每1秒讓CPU強行復位,迄今數十萬電表運行了近五年,無一例死機報告。
電路設計注意事項
雖然解決的方法有很多種,但是在設計電路時我們需要注意哪些方面以便盡量的避免這些錯誤,以減少開發和調試所需時間呢?
1、電源穩定,因為電源電壓 的 不穩定會造成瞬間負電壓導致單片機故障程序無發運行
2、IO保護

3、振蕩器PCB布線要注意

4、復位電路設計和PCB布線

5、電源,信號線干擾路徑的保護,加濾波TVS等
6、高速信號輸出遠離信號輸入端,如SPI總線,I2C總線布線要遠離ADC,復位,時鐘等布線處,以及其他模擬前端

本文地址:http://m.qingdxww.cn/thread-587481-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 爱爱插入视频 | 欧美视频免费在线观看 | 男人扒开女人下面狂躁的视频 | 中文精品久久久久国产网站 | 成人黄色毛片 | 9191精品国产费久久 | 日韩成人毛片高清视频免费看 | 国产天堂 | 亚洲精品国产高清不卡在线 | 国产精品国产三级国产在线观看 | 亚洲欧美国产精品 | 亚洲精品不卡午夜精品 | 曰本在线 | 夜夜操夜夜摸 | 日本欧美视频在线 | 五月月色开心婷婷久久合 | 精品福利在线观看 | 一区二区三区四区 | 亚洲视频在线观看视频 | 青青操网站 | 亚洲欧美成人影院 | 成年黄网站色视频免费观看 | 国产高清视频青青青在线 | 欧美日本免费一区二区三区 | 200款禁用软件免费下载安卓 | 欧美亚洲综合另类 | 日韩视频在线播放 | 亚洲激情在线 | 麻豆视频观看 | a级亚洲片精品久久久久久久 | 欧美黄色免费在线观看 | 午夜视频在线观看区二区 | 欧美亚洲国产成人高清在线 | 久久久久久免费视频 | 69色堂| 欧美影院| 成人三级视频在线观看 | 国产一级一国产一级毛片 | 国产精品久草 | 九九热精品免费 | 亚洲高清自拍 |