在线观看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

    文章

    1656

    瀏覽量

    150626
  • STM32
    +關注

    關注

    2283

    文章

    10986

    瀏覽量

    361342
  • 調試器
    +關注

    關注

    1

    文章

    309

    瀏覽量

    24103

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

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

收藏 人收藏

    評論

    相關推薦

    FPGA的Jtag接口燒了,怎么辦?

    在展開今天的文章前,先來討論一個問題:FPGA的jtag接口燒了怎么辦?JTAG接口的輸入引腳通常設計為高阻抗,這使得它們對靜電電荷積累非常敏感,由于JTAG接口需要頻繁連接調試器、下載線纜等外
    的頭像 發表于 04-27 11:01 ?203次閱讀
    FPGA的Jtag接口燒了,<b class='flag-5'>怎么辦</b>?

    stm32的pcrop安全系數高不高,是否會像普通flash保護那樣被人家破解?

    問題1,stm32的pcrop安全系數高不高,是否會像普通flash保護那樣被人家破解?能否起到代碼保護作用不被解密 2,哪些stm32
    發表于 03-13 06:09

    TLC2551不能工作的原因?怎么辦?

    用TL431提供參考電壓,后接LM358做射級跟隨器來降低輸出阻抗, 同時給兩個TLC2551提供參考5V電壓,結果電壓被拉到3.8V,然后去掉一個AD,參考電壓可以到5V,但是SDO沒有數據輸出,怎么辦???
    發表于 02-12 07:58

    開關電源漏電怎么辦?開關電源漏電流標準是什么?

    在現在水電工程中,開關電源是必不可少的家居用品,開關電源漏電怎么辦,市面上開關電源產品還是不少的,功能很多,品牌也不少,所以,選擇的時候也需要特別注意。好的品牌就會避免漏電的情況出現,開關電源漏電
    發表于 01-09 13:59

    EMI傳導500KHz位置余量不足怎么辦?快來試試這個方法

    EMI傳導500KHz位置余量不足怎么辦?快來試試這個方法【樣機芯片介紹】本次調試的樣機主控IC為思睿達主推的成都啟臣微的CR52168BSJ,該IC為原邊控制IC,最大可設計瓦數為18W,內置一顆
    的頭像 發表于 11-12 11:03 ?772次閱讀
    EMI傳導500KHz位置余量不足<b class='flag-5'>怎么辦</b>?快來試試這個方法

    安裝proteus8.15時出現這種情況怎么辦

    安裝proteus8.15時出現這種情況怎么辦,請求幫忙解答一下,急求,需要使用所以要趕緊給下載,求告知。
    發表于 10-24 19:28

    TAS5711功放ESD打掛了,怎么辦

    TAS5711 功放ESD 打掛了,怎么辦? 1.如何防護。 2,.哪個寄存器判斷是否能工作正常? 3.設計上有什么建議?
    發表于 10-23 08:09

    TAS5751M PurePathTM軟件無法使用怎么辦呢?

    有位客戶說登錄了myTI賬號也無法使用,如下圖,請問怎么辦呢?
    發表于 10-18 07:19

    信號噪聲太大怎么辦

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

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

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

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

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

    如何讀取XIP的spi-flash的唯一ID?

    以前在其它單片機系統,讀取spi-flash的唯一ID是很輕松的事。但現在發現在idf+esp32上十分困難,idf沒有提供這個功能函數;自己也很難不改動idf而實現。由于esp32在spi-flash里執行代碼,所以操縱flash
    發表于 06-21 08:05

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

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

    LIN的UART接收沖突怎么辦?

    LIN的UART接收沖突怎么辦?貌似不加LIN的berak和分界符也能被從節點的UART收到
    發表于 05-09 08:12

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

    查看好些STM32F302資料,想通過FLASH保護來實現加密功能,添加以下代碼后,沒能實現預期功能: #define OB_RDP_Level_0((uint8_t)0xAA) #define
    發表于 05-08 06:26
    主站蜘蛛池模板: 性xxxxbbbb免费播放视频 | 免费看黄色片网站 | 天天干妹子 | 天天做天天爽 | 噜噜噜狠狠夜夜躁 | 日本一区二区不卡在线 | 欧美一级在线全免费 | 亚洲色图欧美激情 | 亚洲国产成人久久精品影视 | 视频一区 中文字幕 | 伊人狼人综合 | 国内精品91久久久久 | 老色批影院 | 日本特黄绿像大片免费看 | 黄色成人免费网站 | 精品四虎免费观看国产高清午夜 | 一级毛毛片毛片毛片毛片在线看 | 久久综合亚洲 | 午夜视频在线观看一区 | 天天爽天天爽 | 一区二区不卡视频在线观看 | 色偷偷88欧美精品久久久 | 天堂网视频 | 大尺度视频在线 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | www.五月天| 一区二区三 | 亚洲精品中文字幕乱码三区一二 | 黄视频在线免费看 | 人人做人人爽久久久精品 | 日本三级在线视频 | 性大特级毛片视频 | 香蕉视频在线观看国产 | 精品一区 二区三区免费毛片 | 亚洲一区二区三区在线播放 | 一级毛片aaa片免费观看 | 国产成人啪精品午夜在线观看 | 男女一区二区三区免费 | 欧美一区二区在线观看视频 | 亚洲成人网在线观看 | 国产午夜精品福利 |