2017-06-06 90 views
1

我有一個STM32F103,我遠程重新閃爍使用不同的MCU通過其UART端口(使用啓動加載程序)。它工作得很好,我有多個設備已經成功地閃過正確的代碼。但是偶爾會出現一個停止工作的設備,因爲STM32代碼閃現不正確。整個bin文件使用另一個MCU閃存,但STM被「磚化」(不完全是磚塊,它只是有一個錯誤的代碼)。當我使用我的電腦重新閃光設備時,所有事情都再次發生。爲什麼十六進制寫入STM會失敗?STM32通過啓動加載程序閃爍失敗(UART1)

簡介:

*使用UART引導程序閃爍STM32F103

*有時候這個方法失敗,所以STM停止工作。

*是否有方法檢查寫入代碼空間的數據是否有效? * STM不是磚,它是只是一個錯誤的代碼裏面的閃存。當我從代碼空間讀回閃存時,它比應該閃過的文件要小。

*我在系統啓動模式下使用STM。 [AN2606]

+0

這是你的bootloader還是內置的?你怎麼能磚建成一個?這聽起來像一個軟件/工具問題,而不是一個SO問題。您是否編寫了自己的引導程序和/或工具來與ST引導加載程序交談?或者你只是使用現成的工具? –

+0

嗨old_timer,我在系統啓動模式下使用STM,使用內置的bootloader。正如我在上面編輯中提到的那樣,我(剛剛)讀回閃存,發現STM閃存代碼與我的代碼(bin文件)大小不一樣。它似乎大約是200(ish)個字節。 –

+0

它打破的地方在哪裏?它是在一個明顯的邊界嗎? (閃存塊,最後一個完整的消息/數據包沒有工作,或者一個在中間,等等?) –

回答

0

只需將數據(bin文件)寫入閃存,就可以使用boot-loader命令讀取用STM32的閃存寫入的數據。這樣,您可以檢查寫入閃存的數據(或新代碼)是否與原始二進制文件相同。只有在這兩個匹配的情況下重新閃爍才能成功,否則您可以重新嘗試閃爍STM32。

+0

這很聰明。是的,我可以這樣做,謝謝。 –