AVR單片機丟固件原因分析和解決方案


一。硬件方面

除了下面列舉的方面,還需要評估下其他措施。

1.電源因素,禁干擾。

只要用廉價劣質的開關電源,不管哪個單片機,都存在EEPROM丟數據和單片機程序丟失的情況。

1.轉接板走線,直接接到了單片機IO,靜電會直接傳導到單片機。應該設計放靜電電路。可以到專門實驗室做打靜電測試驗證是否會導致丟程序。

2.對於所有包含有Flash/擦除子程序的系統,當CPU工作在規定的VDD、溫度、系統時鍾頻率范圍之外時,對Flash進行寫/擦除操作,都有可能出現Flash數據錯誤的現象。

   系統在單片機的工作電壓沒有穩定時就已經完成復位,由於系統復位時需要從Flash讀出代碼數據,Flash電壓不穩定會出現不可預測的錯誤。 

 

① 在RST引腳安裝VDD監測電路,並將VDD監視設置為一個復位源。這樣如果系統電壓不穩定,系統將自動復位,從而避免在電壓不穩時訪問Flash
  ③ 外部晶振信號線應盡量靠近單片機的輸入端,同時晶振外殼接地。
  ④ 對於使用外部晶振作時鍾源的系統,應盡量增強晶振的驅動能力,這樣也能在一定程度上預防程序丟失。

二.從軟件方面預防程序丟失 

程序丟失的主要原因是程序設計的缺陷,所以合理的程序代碼設計能極大地預防該問題的出現。在代碼中可以用多種方法來預防Flash數據丟失:

 關中斷。

 在初始化單片機時,使能VDD檢測,並設置VDD和時鍾丟失為復位源。如果程序中有寫/擦除Flash的代碼,則在寫/擦除操作前切換系統時鍾,將系統時鍾切到內部時鍾或對外部時鍾2分頻;寫/擦除操作完成之后,再恢復系統時鍾,通過增加Flash修改操作時的時間開銷來實現系統的穩定 。

 

是在平時正常使用的時候出現丟固件,還是本來可以正常使用,只是執行升級這個動作失敗,導致的丟固件??無從考證,所以需要檢查下升級本身代碼有沒有風險。

 

目前從bootloader入手,先檢查下代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM