• 資料介紹
    • 簡介
    • 問題描述
    • 問題分析與解決
    • 小結
  • 資料預覽
  • 相關推薦
申請入駐 產業(yè)圖譜

LAT1374 RT-Thread環(huán)境下Flash錯誤標志問題解析

03/19 10:09
401
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1374 RT-Thread環(huán)境下Flash錯誤標志問題解析

526.85 KB

簡介

客戶在使用 STM32G474RE 進行產品開發(fā)的時候,操作系統(tǒng)軟件使用了 RT-Thread5.0,同時由于要做 ClassB 認證,所以在 RT-Thread 系統(tǒng)上,移植了 ClassB 2-3-0 版本安全庫。用戶程序另外一個功能是固件升級,在調試固件升級程序的過程中,發(fā)現(xiàn)一旦執(zhí)行了ClassB 的啟動自檢,就會出現(xiàn)固件升級失敗。調試發(fā)現(xiàn),固件升級失敗的原因是寫 Flash 的時候發(fā)現(xiàn) Flash 狀態(tài)寄存器的錯誤標志被置位,導致 Flash 寫操作失敗??蛻舾鶕F(xiàn)此象反饋 ClassB 的自檢代碼有隱患,導致 Flash 出錯。本文分析了出現(xiàn)該錯誤的原因以及解決辦法。

問題描述

根據客戶的問題反饋,我在 NUCLEO-G474RE 開發(fā)板上單獨移植 ClassB,通過調試,沒有發(fā)現(xiàn)類似問題。為了復現(xiàn)該問題,從 RT-Thread 官方網站上下載了 5.0 版本的 RTThread 代碼。RT-Thread 對 STM32 的支持是相當友好的,代碼中包含了對多數 STM32開發(fā)板的支持,所以對于 NUCLEO-G474RE 開發(fā)板,只需要找到對應的目錄,打開工程即可。

問題分析與解決

結合參考手冊對 PGAERR 以及 PGSERR 的描述,只能從寫 Flash 的角度去分析問題產生的原因,最終通過單步調試,發(fā)現(xiàn)其中一句代碼導致了該錯誤標志位的置起。

小結

在 STM32 軟件開發(fā)中,不當的指針操作,尤其使用未經初始化的指針可能會引起莫名奇妙的問題,所以在使用指針變量的時候,需要注意指針地址的正確性。

資料預覽

相關推薦