2017-06-19 118 views
0

我目前正在開發基於獨立STM32F4的電路板(STM32F469)。到目前爲止,一切正常。我通過ST-Link Utility通過SWD對STM32F4-DISCOVERY ST-Link進行編程。啓用讀取保護而不採取任何措施並且不能禁用

週五,當我離開工作時,一切都運轉良好。今天早上當我回到我的辦公室時,我的計劃沒有在董事會開始。當我試圖通過SWD連接到STM32F4時,STM32 ST-Link Utility顯示警告:

無法讀取內存!禁用讀取保護並重試

雖然我沒有設置任何東西。我做了一些研究,我嘗試一些事情:

  • 變化目標>選項字節選項字節>讀出保護。我不知道它是否與實際的RDP狀態相關,但是當我打開此選項卡時,RDP位於1級。當我將它設置爲0並點擊應用,幾秒鐘後顯示錯誤無法設置選項字節!請重置目標並重試。
  • 我試圖擦除芯片。自從RDP成立以後,它當然不起作用。
  • 我更新了ST-Link固件。由於到目前爲止,我沒有更新STM32 ST-Link Utility(v4.0.0.0)。我沒有改變任何東西。
  • 我試圖在復位下連接芯片。 聽起來不錯,不起作用

我不知道該怎麼做別的。當我看到我的STM32F4(RM0386)的參考手冊,第87頁,我們可以讀到:

1級:讀保護功能。

這是選項字節擦除後的默認讀保護級別。通過將任何值(分別用於設置0級和2級的0xAA和0xCC除外)寫入RDP選項字節來激活讀保護級別1。當讀保護等級1設置:

  • 沒有訪問(讀取,擦除,編程)閃存存儲器或備份SRAM可以在調試功能連接或執行,同時從RAM或系統內存的bootloader引導。發生讀請求時會產生總線錯誤。
  • 從Flash存儲器啓動時,允許從用戶代碼訪問(讀取,擦除,編程)Flash存儲器和備份SRAM。

當級別1處於活動狀態時,將保護選項字節(RDP)編程爲0級會導致Flash存儲器和備份SRAM被批量擦除。因此,在讀取保護被刪除之前,用戶代碼區域被清除。批量擦除僅擦除用戶代碼區域。包括寫保護的其他選項字節在批量擦除操作之前保持不變。 OTP區域不受整體擦除的影響並保持不變。只有當等級1處於活動狀態且要求等級0時才執行整體擦除。當保護等級增加時(0-> 1,1-> 2,0-> 2),不存在整體擦除。

首先,RDP是否有可能被某種超自然現象激活了?我發誓我沒有設置這一點。另外,正如我所讀到的Level 1描述,可以回到0級(但用戶程序被擦除)。對我而言,從1級到0級不起作用。所以......恐怕RDP級別實際上是2,在這種情況下......我已經死了。

有沒有辦法解決這個問題?我不明白在週末會發生什麼變化,因爲一切正常,現在一切都沒有了。

在此先感謝。

+0

只需在ST Link Studio中禁用選項即可。它會說它失敗了,它與每個芯片都有關係。已知的4.0.0.0中的錯誤。但芯片將被擦除並免費使用。如果它不起作用,由於電源問題無法完成擦除。 – Jeroen3

+0

ST Link工作室?你的意思是* ST-Link Utility *?如果是這樣,我該怎麼做?我還沒有看到任何選項允許我這樣做(除了通過* Option Bytes *選項,但它不起作用)。 – vionyst

+0

是的,我的意思是ST鏈接實用程序,對不起。確實是選項字節窗口。它總是說它失敗了,但它實際上是在執行這個動作。 – Jeroen3

回答

0

我認爲這是由於ST鏈接與目標板不完整的聯繫。在調試引腳短路或調試引腳連接中的任何一個被切斷之前,我遇到過這個問題。既然你沒有自己激活RDP並且似乎無法消除保護,我相信它肯定是由於連接問題。確認電氣連接並查看是否有效。

相關問題