在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的Flash寫了保護怎么辦?

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2022-04-02 15:55 ? 次閱讀

關于STM32對內部Flash的保護

為了防止對Flash的非法訪問,所有STM32的芯片都提供對Flash的保護,具體分為寫保護和讀保護。

如果對Flash設置了寫保護,那就無法對Flash進行編程和擦除。在開發STM32的時候,如果出現這種情況,通常仿真器都支持對Flash進行解鎖,像jlink,stlink等仿真器都支持這個功能。

在使用MDK進行調試的時候,可能會遇到如下圖所示的報錯信息,這時候就要排查Flash是不是被保護起來了。

f4b3f78e-b019-11ec-aa7f-dac502259ad0.png

讀保護即大家通常說的“加密”,是作用于整個Flash存儲區域,相關文章:STM32等單片機程序加密的方法一旦設置了Flash的讀保護,內置的Flash存儲區只能通過程序的正常執行才能讀出,而不能通過下述任何一種方式讀出:

  • 通過調試器(JTAG或SWD)

  • RAM中啟動并執行的程序

寫保護是以四頁(1KB/頁) Flash存儲區為單位提供寫保護,對被保護的頁實施編程或擦除操作將不被執行,同時產生操作錯誤標志,讀與寫設置的效果見下表:

f4c95912-b019-11ec-aa7f-dac502259ad0.png

當Flash讀保護生效時,CPU執行程序可以讀受保護的Flash區,但存在兩個例外情況:

  • 調試執行程序時

  • 從RAM啟動并執行程序時

STM32還提供了一個特別的保護,即對Flash存儲區施加讀保護后,即使沒有啟用寫保護,Flash的第 0 ~ 3 頁也將處于寫保護狀態,這是為了防止修改復位或中斷向量而跳轉到RAM區執行非法程序代碼
Flash保護的相關函數

FLASH_Unlock();   //Flash解鎖 FLASH_ReadOutProtection(DISABLE);  //Flash讀保護禁止   FLASH_ReadOutProtection(ENABLE);   //Flash讀保護允許

STM32如何設置讀保護和解除讀保護?

讀保護設置后將不能讀出Flash中的內容。

如何設置讀保護

在程序的開頭加入“設置讀保護”的代碼即可,每次運行代碼時都檢查一下,如果沒有開就打開,如果打開了就跳過。其中,設置讀保護的代碼如下:

int main(void){  ...if (FLASH_GetReadOutProtectionStatus()!=SET)//檢查設置讀保護與否  {    FLASH_Unlock();         //寫保護時可以不用這句話,可用可不用    FLASH_ReadOutProtection(ENABLE);     //設置讀保護  }  ...while(1)  {    ...  }}

上面的代碼執行后,使用j-link就不能讀出程序了,實現了代碼讀保護。需要注意的是,芯片讀保護后無法再次燒寫新的程序到Flash中,必須要解除讀保護才可以。但是當解除讀保護的時候STM32會自動擦除整個Flash,起到保護數據的作用。

通過代碼解除Flash保護

解除讀保護可以設置在按鍵里面,方便實現解鎖,也可以設置在命令中。如下是解除讀保護代碼:

f4dd8cb6-b019-11ec-aa7f-dac502259ad0.png

程序中設置一個按鍵或者命令,可以隨時解除Flash的讀保護,讓芯片又可以重新燒錄程序。如果沒有留,還可以專門寫一個程序,下載到RAM中去運行,用來解除讀保護。

注意:執行后,Flash會自動全部擦除。


	
int main(void){Chip_Init();  FLASH_Unlock(); //不解鎖FALSH也可設置讀保護,可用可不用  FLASH_ReadOutProtection(DISABLE);}

通過ST-LinkUtility來解除Flash保護

在STLink連接目標板的情況下打開程序燒寫軟件ST-Link Utility,在菜單欄的Target下選擇connect,因為這時候Flash已經被鎖住了,能看到如下圖所示的錯誤提示。

f4ef2930-b019-11ec-aa7f-dac502259ad0.png

下面來操作如何解除Flash保護。

請確保當前已經正確接了STLink和目標板,在菜單欄Target里打開Option Bytes...選項,發現在這里Read Out Protection選項是Enable,這個表示無法通過SWD讀取STM32內部Flash的程序。

f5093122-b019-11ec-aa7f-dac502259ad0.png

將Read Out Protection選項設置為Disable,并點擊Apply。

這時候Flash已經成功解鎖了,跟上文提到的解除Flash保護的結果一樣,內部Flash已經被擦除了,如下圖紅框中所示。

f51b3f8e-b019-11ec-aa7f-dac502259ad0.png

完成以上步驟之后,在菜單欄Target下選擇Disconnect斷開與目標板連接。

重新進入MDK,可以正常對目標板燒寫程序了。

通過ST-LinkUtility來設置Flash保護

f536c650-b019-11ec-aa7f-dac502259ad0.png

在菜單欄Target里打開Option Bytes...選項,可以看到下面有Flash sector protection選項。選擇Select all之后,發現所有Page的Protection項都已經變成Write Protection了,只要選擇Apply選項就可以對Flash進行寫保護,如上圖所示。


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1638

    瀏覽量

    148202
  • STM32
    +關注

    關注

    2270

    文章

    10910

    瀏覽量

    356605
  • 調試器
    +關注

    關注

    1

    文章

    305

    瀏覽量

    23774

原文標題:STM32的Flash寫了保護怎么辦?

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    信號噪聲太大怎么辦

    我用一個TMR磁場傳感器,后面接一個儀表放大器,測出來的信號的噪聲特別大,如圖所示。這種情況怎么辦
    發表于 09-06 11:09

    ddos造成服務器癱瘓后怎么辦

    在服務器遭受DDoS攻擊后,應立即采取相應措施,包括加強服務器安全、使用CDN和DDoS防御服務來減輕攻擊的影響。rak小編為您整理發布ddos造成服務器癱瘓后怎么辦
    的頭像 發表于 08-15 10:08 ?305次閱讀

    大電流一體成型電感有噪音怎么辦

    電子發燒友網站提供《大電流一體成型電感有噪音怎么辦.docx》資料免費下載
    發表于 07-30 12:30 ?0次下載

    KT142C-sop16語音芯片,插上usb,出不來虛擬U盤怎么辦

    KT142C-sop16語音芯片的芯片,我直接焊到我的板子上面,插上usb,但是出不來虛擬U盤怎么辦
    的頭像 發表于 05-23 10:50 ?493次閱讀
    KT142C-sop16語音芯片,插上usb,出不來虛擬U盤<b class='flag-5'>怎么辦</b>

    求助,關于STM32F302_FLASH保護的問題求解

    查看好些STM32F302資料,想通過FLASH保護來實現加密功能,添加以下代碼后,沒能實現預期功能: #define OB_RDP_Level_0((uint8_t)0xAA) #define
    發表于 05-08 06:26

    工控主板發生故障該怎么辦

    工控主板發生故障該怎么辦?前幾天有個客戶問了我這個問題,大部分情況下出現的故障并不可怕,主要是用戶粗心大意造成的。那今天小編就來講解一下工控主板一般會出現故障的主要原因及判斷方法:
    的頭像 發表于 04-11 18:19 ?899次閱讀

    電容負極熔斷怎么辦

    在現代科技發展的時代,電容器在各個領域都扮演著重要的角色。然而,由于各種原因,電容器的負極可能會發生熔斷的情況。那么,當電容器的負極熔斷時,我們應該怎么辦呢?
    的頭像 發表于 04-10 14:15 ?543次閱讀
    電容負極熔斷<b class='flag-5'>怎么辦</b>

    STM32GPIO口如果既要輸入又要輸出怎么辦STM32 GPIO口8種模式如何準確的分析?

    STM32GPIO口如果既要輸入又要輸出怎么辦STM32 GPIO口8種模式如何準 確的分析?
    發表于 04-08 08:27

    STM32MP135 linux SPI多字節時鐘連續沒有間隔怎么辦

    使用STM32MP135作為SPI主機通訊時,由于SPI從設備速度慢,數據字節之間的時鐘間隔要大于等于半個時鐘周期;嘗試設置struct spi_ioc_transfer-&gt;word_delay_usecs參數發現沒有時鐘間隔,應該怎么辦? 正常時序圖 有
    發表于 03-07 06:14

    怎樣判斷欠壓保護器壞了怎么辦

    判斷欠壓保護器壞了怎么辦 欠壓保護器是一種用于保護電氣設備免受欠電壓損害的重要裝置。當電網電壓低于設定值時,欠壓保護器會自動切斷電源,以防止
    的頭像 發表于 02-26 10:55 ?3966次閱讀

    rtthread studio已經成功編寫了外部flash下載算法,程序也能下載進去但是不能進行調試怎么辦

    已經成功編寫了外部flash下載算法,程序也能下載進去,但是不能進行調試怎么辦? 我想放在內部flash調試,但是發現已經下載不到內部了。 更改了.lds文件ROM地址,關閉dow
    發表于 02-20 07:24

    UCB states切為CONFIRMATION狀態后,該UCB區域就不能被擦寫了怎么辦

    芯片手冊中UCB states有四個狀態UNLOCKED, CONFIRMATION, ERASED, ERRORED。我發現切為CONFIRMATION狀態后,該UCB區域就不能被擦寫了,這該怎么辦
    發表于 02-01 08:15

    stm32 flash寫數據怎么存儲的

    stm32 flash寫數據怎么存儲的? STM32是一款廣泛應用于嵌入式系統開發的微控制器,它的Flash存儲器是其中一個重要的組成部分。在本文中,我將詳細介紹
    的頭像 發表于 01-31 15:46 ?2457次閱讀

    修復輥壓機軸承位磨損怎么辦

    電子發燒友網站提供《修復輥壓機軸承位磨損怎么辦.docx》資料免費下載
    發表于 01-23 09:52 ?0次下載

    wifi無互聯網連接怎么辦?解決wifi無法訪問互聯網怎么辦的方法

    wifi無互聯網連接怎么辦?解決wifi無法訪問互聯網怎么辦的方法? 在現代社會中,WiFi已經成為了我們生活中必不可少的一部分。然而,有時我們可能會遇到WiFi無法訪問互聯網的問題,這給我們的學習
    的頭像 發表于 01-17 11:17 ?3.4w次閱讀
    主站蜘蛛池模板: 一区二区三区免费视频网站| 在线色视频网站| 黑粗硬大欧美视频| 粉嫩尤物在线456| 欧美18性欧美黑吊| 欧美视频一区二区三区在线观看| 老师办公室高h文小说| 种子天堂bt磁力在线资源| 迅雷www天堂在线资源| 日韩在线三级| 九九九精品视频免费| 操美女网址| 老熟女毛片| 91福利视频免费| 香蕉黄色网| 欧美猛妇色xxxxxbbbb| 国产农村女人一级毛片了| 新版天堂中文在线8官网| 奇米影视777狠狠狠888不卡 | 一级欧美日韩| 日日噜噜夜夜狠狠va视频| 六月婷婷七月丁香| 99久久精品久久久久久婷婷| 天堂网www在线资源| 性xxxfreexxxx性欧美| 国产亚洲第一| 三级视频欧美| 高清人妖shemale japan| 女人被两根一起进3p在线观看 | 在线视频资源| 黄色网址中文字幕| 日本欧美一区二区三区视频| 天堂视频在线免费观看| 国产精品久久久久国产精品三级| 五月天丁香婷| 黄www色| 午夜免费啪视频| 高清xxx| 天堂最新版免费观看| 国产婷婷高清在线观看免费| 视频免费观看网址|