日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

stm32对flash的读写保护与解除

發布時間:2023/12/4 综合教程 52 生活家
生活随笔 收集整理的這篇文章主要介紹了 stm32对flash的读写保护与解除 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、STM32對內部Flash的保護措施 ?
? ? ? ? 所有STM32的芯片都提供對Flash的保護,防止對Flash的非法訪問 - 寫保護和讀保護。?
? ? ? ? 1、讀保護即大家通常說的“加密”,是作用于整個Flash存儲區域。一旦設置了Flash的讀保護,內置的Flash存儲區只能通過程序的正常執行才能讀出,而不能通過下述任何一種方式讀出:A、 通過調試器(JTAG或SWD); B、從RAM中啟動并執行的程序;?
? ? ? ? 2、寫保護是以四頁(1KB/頁) Flash存儲區為單位提供寫保護,對被保護的頁實施編程或擦除操作將不被執行,同時產生操作錯誤標志。 ??
? ?讀與寫設置的效果見下表:?

讀保護 寫保護 對Flash的操作功能
有效 有效 CPU只能讀,禁止調試和非法訪問。
有效 無效 CPU可以讀寫,禁止調試和非法訪問,頁0~3為寫保護。
無效 有效 CPU可讀,允許調試和非法訪問。
無效 無效 CPU可以讀寫,允許調試和非法訪問。

二、當Flash讀保護生效時,CPU執行程序可以讀受保護的Flash區,但存在兩個例外情況:?
? ? ? ? 1、調試執行程序時;?
? ? ? ? 2、從RAM啟動并執行程序時?
? ? ? ? STM32還提供了一個特別的保護,即對Flash存儲區施加讀保護后,即使沒有啟用寫保護,Flash的第 0 ~ 3 頁也將處于寫保護狀態,這是為了防止修改復位或中斷向量而跳轉到RAM區執行非法程序代碼。?
三、Flash保護的相關函數?
? ?FLASH_Unlock(); ? //Flash解鎖?
? ?FLASH_ReadOutProtection(DISABLE); ?//Flash讀保護禁止 ??
? ?FLASH_ReadOutProtection(ENABLE); ? //Flash讀保護允許

四、stm32設置讀保護和解除讀保護操作

1、功能:讀保護設置后將不能讀出flash中的內容;當解除讀保護的時候stm32會自動擦除整個flash,起到保護數據的作用。

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

3、解除讀保護:解除讀保護可以設置在按鍵里面,方便實現解鎖,也可以設置在命令中。

4、設置讀保護的代碼:

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

上面的代碼執行后,使用j-link就不能讀出程序了,實現了代碼讀保護。

注意:芯片讀保護后,無法再次燒寫新的程序到flash中,必須要解除讀保護才可以,測試需謹慎。

5、解除讀保護代碼:

void Off_Protect(void) //關閉保護
{ if(FLASH_GetReadOutProtectionStatus() != RESET){FLASH_Unlock(); //不解鎖FALSH也可設置讀保護,可用可不用FLASH_ReadOutProtection(DISABLE);FLASH_Lock();   //上鎖 } 
}

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

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

五、測試

下載并執行設置讀保護代碼后,再次下載程序顯示:

說明已經啟動了 讀保護,無法再次下載程序了。

通過ST-LINK Utility連接芯片,提示讀保護,無法讀取flash數據:

這個時候,需要調用解除讀保護的代碼即可恢復。

?

轉載自:https://wenku.baidu.com/view/539f9f0754270722192e453610661ed9ad5155fb.html?rec_flag=default&sxts=1560582755950

總結

以上是生活随笔為你收集整理的stm32对flash的读写保护与解除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。