STM32讀保護功能和清除讀保護功能設置

2021-01-04 電子產品世界

1、STM32對內部Flash的保護措施

所有STM32的晶片都提供對Flash的保護,防止對Flash的非法訪問 - 防寫和讀保護。
1)、讀保護即大家通常說的「加密」,是作用於整個Flash存儲區域。一旦設置了Flash的讀保護,內置的Flash存儲區只能通過程序的正常執行才能讀出,而不能通過下述任何一種方式讀出:
通過調試器(JTAG或SWD);
從RAM中啟動並執行的程序;
2)、防寫是以四頁(1KB/頁) Flash存儲區為單位提供防寫,對被保護的頁實施編程或擦除操作將不被執行,同時產生操作錯誤標誌。
讀與寫設置的效果見下表:
讀保護防寫對Flash的操作功能
有效 有效 CPU只能讀,禁止調試和非法訪問。
有效 無效 CPU可以讀寫,禁止調試和非法訪問,頁0~3為防寫。
無效 有效 CPU可讀,允許調試和非法訪問。
無效 無效 CPU可以讀寫,允許調試和非法訪問。
2、當Flash讀保護生效時,CPU執行程序可以讀受保護的Flash區,但存在兩個例外情況:
1)、調試執行程序時;
2)、從RAM啟動並執行程序時
STM32還提供了一個特別的保護,即對Flash存儲區施加讀保護後,即使沒有啟用防寫,Flash的第 0 ~ 3 頁也將處於防寫狀態,這是為了防止修改復位或中斷向量而跳轉到RAM區執行非法程序代碼。
3、Flash保護相關函數
FLASH_Unlock();//Flash解鎖
FLASH_ReadOutProtection(DISABLE);//Flash讀保護禁止
FLASH_ReadOutProtection(ENABLE);//Flash讀保護允許

本文引用地址:http://www.eepw.com.cn/article/201611/321886.htm

4、stm32置讀保護跟清讀保護操作

功能:讀保護設置後將不能讀出flash的內容;當解除讀保護的時候stm32會自動擦出整篇flash;
讀保護設置:在程序的開頭加入「讀保護」代碼,即實現了讀保護功能;(每次程序運行先開保護)
解除讀保護:解除讀保護可以設置在按鍵裡面,方便實現解鎖,也不可不設按鍵在RAM中執行程序再清除讀保護
(1)設置讀保護:

intmain(void)
{
....


if(FLASH_GetReadOutProtectionStatus()!=SET)
{
//FLASH_Unlock();不解鎖FALSH也可設置讀保護???
FLASH_ReadOutProtection(ENABLE);
}
......
while(1)
{
.....
}
}

這個寫到程序當中並執行過後,使用j-link就不能『讀出』程序了,就是『讀保護』了!沒有使用此程序可以讀出下載到晶片中的程序,但是如果使用了此程序就無法讀出程序了。但是也無法再次燒寫新的程序到晶片中了(要測試請慎重!!!!!!)

可以在主程序當中設置一按鍵專門清除「讀保護」,一旦按下按鍵則清除「讀保護」時晶片可以重新被燒寫。

(2)解除讀保護:在程序中的某個操作中(如按鍵等)加入如下代碼,執行後
代碼自己殺死了自己!
if(FLASH_GetReadOutProtectionStatus()!=RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
這些函數在stm32f10x_flash裡面,注意:調用上面這個庫的時候需在#include"stm32f10x_flash.h"前加#define_FLASH_PROG;否則報(沒有定義)錯。

如果你沒有做按鍵清除讀保護這一步還有方法二補救:專門寫一個清除「讀保護」程序,使用RAM中運行程序的方法,運行此程序解鎖「讀保護」,執行後,FLASH會自動全部擦除。代碼如下:
intmain(void)
{
Chinp_Init();
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}

※對於在RAM中運行程序,說明如下:
(1)我使用IAR+J-Link,不用把Boot0和boot1腳設置成從RAM啟動也可在RAM中調試(我是設置成從FLASH啟動)。
(2)在IAR環境中設置Link文件為lnkarm_ram.xcl
(3)Debuger選項Downloadtab中勾全部去掉。
按上面設置完成後,按Debug按鈕,執行上面程序,讀保護可解除。

*************************華麗麗的分割線***********************************************


if(FLASH_GetReadOutProtectionStatus()==RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE);
}
*************************華麗麗的分割線***********************************************

if(FLASH_GetReadOutProtectionStatus()==SET)
{

FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
CPUFlash讀保護使能後,仿真器調試會失敗。J-LINK有個解鎖菜單,需要解鎖才能正常再次燒寫程序。當然解鎖會導致Flash內容被全部擦出。

啟動"J-FlashARM"工具,Target->unsercurechip就解除了晶片的讀保護。Target->unsercurechip後一定要上電復位,系統不復位是不行的。


相關焦點

  • 第51章 設置FLASH的讀防寫及解除—零死角玩轉STM32-F429系列
    位 15:80xAA:級別 0,無保護其它值:級別 1,存儲器讀保護(調試功能受限)0xCC:級別 2,晶片保護(禁止調試和從 RAM 啟動)USER:用戶選項字節此字節用於配置以下功能:選擇看門狗事件:硬體或軟體進入停止模式時產生復位事件進入待機模式時產生復位事件位 7nRST_STDBY
  • 詳解STM32 ISP設置及使用說明
    在每個STM32的晶片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在晶片復位時的電平狀態決定了晶片復位後從哪個區域開始執行程序,見下表:BOOT1=x  BOOT0=0  從用戶快閃記憶體啟動,這是正常的工作模式。BOOT1=0  BOOT0=1  從系統存儲器啟動,這種模式啟動的程序功能由廠家設置。
  • qq已讀功能是怎麼回事 qq已讀功能介紹
    qq已讀功能是怎麼回事 qq已讀功能介紹時間:2020-12-16 23:14   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:qq已讀功能是怎麼回事 qq已讀功能介紹 qq已讀功能是怎麼回事,騰訊QQ表示,你希望 QQ 出已讀功能嗎?並且在微博發起了相關投票。那麼結果是什麼呢?
  • qq已讀功能是怎麼回事?qq已讀功能介紹
    qq已讀功能是怎麼回事,騰訊QQ表示,你希望QQ出已讀功能嗎?並且在微博發起了相關投票。那麼結果是什麼呢?這個功能又是怎麼回事呢?和小編一起來看看吧。qq已讀功能是怎麼回事 騰訊 QQ 在12月上午的時候,針對「你希望 QQ 出已讀功能嗎」這一問題,在微博發起了這一問題的投票,網友們都鬱悶了,這樣的問題還需要問嗎?很快就有了 3711 人參與投票,其中有 2660 人(71.6%)投票給了一個叫做 「你出我就卸載 QQ」選項,十分不願意,狠狠地拒絕了騰訊的這一行為。
  • STM32上使用USB Host讀寫U盤
    USB Device 可以分為 USB Hub 和 USB FunctionUSB Hub 提供了一種低成本、低複雜度的 USB接口擴展方法。Hub 的上行埠面向 HOST,下行埠面向設備(Hub 或功能設備)。在下行埠上,Hub 提供了設備連接檢測和設備移除檢測的能力,並給各下行埠供電。Hub 可以單獨使能各下行埠。
  • 「還好微信沒有 已讀 功能」
    很多次都在想,幸好微信沒有消息已讀提醒。讓我可以在「不想在」的時候,假裝不在;讓我可以在不知道怎麼回復的時候,可以選擇暫時放下不管它。不用在不小心忘了回復之後,心情忐忑地解釋自己不是故意的;也不用在被提示了對方已讀但不回的時候,胡亂猜測對方為什麼看到了卻一直不回我的原因。
  • 如果微信有已讀功能……光是想想就很崩潰
    近日,騰訊QQ發起一項問卷,就推出已讀功能展開調查。結果顯示,多數網友表示「你出我就卸載QQ」,也有網友建議就算推出已讀功能的話,也要設置一個開關,可以選擇性關閉。還有網友調侃,就算有選擇性開關,社交軟體也免不了再推出個會員專屬功能。 這些話雖有調侃之意,卻也傳達出網民的擔憂。
  • Safari 瀏覽器的隱私保護功能都有哪些?
    Safari 瀏覽器可以幫助保護用戶的隱私安全,防止用戶受到跨網站跟蹤,經常使用 Safari 瀏覽器的用戶,你真的了解 Safari 瀏覽器的這些保護隱私的功能嗎?先說幾個默認開啟的保護隱私的功能,首先是社交小工具防跟蹤,比如當點讚時、分享時和評論框等內嵌於網站中的社交小工具,會在用戶並沒有點擊或使用的情況下對用戶進行跟蹤,Safari 瀏覽器時默認攔截這種跟蹤的。
  • word操作技巧之設置文檔保護和快速清除多餘空行
    一、如何清除 Word 文檔中多餘的空行?使用Word過程中,不可避免的在word文檔中會有一些多餘的空行,用手工逐個刪除又太累人,直接列印吧,又太浪費墨水和列印紙。如下圖文檔有沒有較便捷的方式呢?我們可以用 Word 自帶的替換功能來進行處理。這裡,我分別介紹word2003版本和word2010版本的操作方法。
  • STM32 上使用 USB Host 讀寫 U 盤
    USB Device USB Device 可以分為 USB Hub 和 USB FunctionUSB Hub 提供了一種低成本、低複雜度的 USB接口擴展方法。Hub 的上行埠面向 HOST,下行埠面向設備(Hub 或功能設備)。在下行埠上,Hub 提供了設備連接檢測和設備移除檢測的能力,並給各下行埠供電。Hub 可以單獨使能各下行埠。
  • 靜讀天下翻譯功能使用方法 靜讀天下操作攻略
    靜讀天下是一款非常不錯的書籍閱讀軟體,小夥伴們在瀏覽書籍的時候如果對裡面的內容不是很懂的話可以使用 翻譯 功能來對文章進行翻譯,那麼靜讀天下裡面的翻譯功能究竟應該怎麼使用呢?下面小編就給大家介紹一下靜讀天下翻譯功能使用方法介紹,希望能夠幫助到大家。
  • 《跑跑卡丁車手遊》怎麼設置輔助功能 設置輔助功能方法
    導 讀 跑跑卡丁車手遊輔助功能哪些需要開?合理前行操作,才能取得優勝。小編帶來方法技巧,開啟一些功能!
  • 已讀未讀功能是如何實現的?
    一朋友和我討論他前段時間面試某大公司的一題目 :企業IM比如企業微信、釘釘裡面的群消息的有個已讀未讀的功能,發送者剛發出消息時,當前群裡其他群成員都是未讀狀態,陸陸續續有人看了這個消息,這時候消息的詳情變成x人已讀,y人未讀,如下圖所示,有具體的已讀未讀列表(萬惡的功能,看到同事or老闆的消息不能假裝沒看到了),每條消息對應一個唯一的messageid(uint64
  • 微信為何沒有已讀功能?馬化騰:要給人撒謊的機會
    如果微信增加「對方已讀」功能,你覺得會發生什麼?對於微信的「已讀功能」很多的用戶都是呼喚很長時間了,但是微信卻依舊沒有新增加這個功能,那麼對於說微信已讀功能,究竟是否是實用的,下面和大家一起來說一說。微信新增「已讀功能」,你的人際關係會怎麼樣在之前微博說是需要取消私信的已讀功能,在網絡上引起用戶的熱烈討論,從而引發出來對於微信如果新增已讀功能會發生怎麼樣的變化。
  • iOS14 隱藏良心功能,自動保護你的耳膜
    iOS14 聽力保護不知道各位還是否記得,蘋果在 iOS13 的時候曾經給 Apple Watch 新增了一個噪音保護功能,旨在保護用戶的耳朵,告知用戶身邊的噪音可能會對聽力損傷。不過這個功能需要綁定 Apple Watch 4 及以上設備才行,大多數人肯定不會因為這麼一個功能而去買一部 Apple Watch 。而且這個功能非常 「弱智」 ,只能提醒你,不能幫助你清除噪音。
  • iOS14 隱藏良心功能,自動保護你的耳膜
    ,旨在保護用戶的耳朵,告知用戶身邊的噪音可能會對聽力損傷。而且這個功能非常 「弱智」 ,只能提醒你,不能幫助你清除噪音,系統會自動給你降低高頻率分貝,保護你的耳膜。Apple Watch 上的噪音功能不同,也無法實時監測身邊的噪音,但是其目的都是為了保護你的聽力。
  • 會有人已讀不回,那社交軟體裡設置了已讀功能,你怎麼看?
    在這一個網際網路社交時代,很多時候我們都會在社交軟體上裝作不在或者很忙沒時間回信息的樣子,避免不必要的麻煩和尷尬,但是很多社交軟體有已讀功能,這個功能可以避免聊著聊著對方突然失聯,不知道他究竟看沒看到的情況。
  • stm32 USART 串口通信操作寄存器+庫函數
    stm32的最多可以提供5路串口,有分數波特率發生器、支持同步單線通信和半雙工單線通信、具有DMA等。使用USART時,stm32的I/O口經RS232電平轉換電路 和電腦的串口連接。串口使用只需要開始串口時鐘,設置相應的I/O口模式,配置波特率、數據位長度、奇偶校驗位等信息就可以使用了。
  • 315保護隱私!手機這幾個設置保護個人隱私
    首先,最應該關閉的還是你手機定位功能中的常去地點功能,這一項功能能夠記錄你在什麼時間去過那些地方,還能記錄你在那個地方待了多久。正是這些信息,才使得不法分子能夠對你的住所、工作地點消費習慣了如指掌,你還不趕緊關閉它們!
  • Excel工作表保護密碼忘記了?一招教你快速清除工作表保護密碼
    Excel工作表保護密碼忘記了,怎麼辦?工作中,為了防止別人改動工作表內容,我們經常會將工作表設置個保護密碼,這樣子,人家就只能查閱工作表,不能編輯工作表。但是呢,有時時間一長,自己設置的工作表保護密碼給忘記了?結果,連自己都編輯了不工作表。是不是要抓狂了?沒事,世上無難事,只要肯登攀。今天分享一個清除工作表保護密碼的方法,分分鐘鍾就搞定了。