stm32 flash corruptor
1.0.0
欺騙STM32L4R5芯片以損壞其錯誤檢查信息中的某個閃存地址。
當使用Flash ECC上的STM32設備上的損壞的閃存地址讀取時,您將獲得不可掩蓋的ECC檢測中斷。處理這種中斷對於某些應用可能很重要,例如任何可能暴露於輻射的東西,例如衛星。但是,實際上在硬件上測試您的處理代碼很難,因為您無法直接告訴芯片故意產生錯誤的閃存條目。
這就是為什麼此工具提供了一種準確的方法:專門銷毀特定地址的錯誤校正信息。它是通過自動二進制搜索時間安排來處理的,其中重置會干擾閃存寫作過程。
調整main.rs文件頂部的地址,插入STM32L4R5芯片的調試連接器,然後運行make flash 。
然後,您應該看到芯片閃爍的藍色LED的間隔變短。那是二進制搜索,試圖等待閃光腐敗需要多少。光似乎會熄滅幾秒鐘(因為時機變得太短,以至於LED幾乎沒有機會亮著),然後,綠色或紅色LED都會出現。綠色意味著確切的地址被擊中,紅色意味著它被錯過。如果是綠色,您現在可以刷一下要針對ECC中斷測試的代碼(確保不要覆蓋現在包含錯誤的頁面 - 擦除它將導致錯誤發生錯誤),並且如果紅色LED啟動,則需要按RESET按鈕重新嘗試(有時會重新嘗試(有時,重新循環)也有幫助)。
如果綠色LED啟動,則該程序已達到正確的位置。要驗證確切的地址,您也可以通過GDB附加,然後讀取FLASH_ECCR寄存器的內容:
(gdb) x/wx 0x40022018
0x40022018 : 0x80006000如果第一個十六進製字母是8或2 ,則腐敗有效。最後20位(或5個十六進製字母)是損壞的內存地址。在這種情況下,將0x6000被損壞,並恰好受到打擊。
在一個外殼中,運行
st-util然後使用GDB附加:
arm-none-eabi-gdb -ex " target extended-remote :4242 " target/thumbv7em-none-eabi/release/stm32-flash-corruptor使用此命令顯示備份寄存器內容:
x /32w 0x40002850查看main.rs中的評論,以獲取有關每個寄存器的更多信息。