講講STM32單片機(jī)Flash的讀保護(hù)和寫保護(hù)
時(shí)間:2021-11-15 14:54:44
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]▼點(diǎn)擊下方名片,關(guān)注公眾號(hào)▼歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào),回復(fù)關(guān)鍵字獲取更多免費(fèi)資料?;貜?fù)【加群】,限時(shí)免費(fèi)進(jìn)入知識(shí)共享群;回復(fù)【3D封裝庫】,常用元器件的3D封裝庫;回復(fù)【電容】,獲取電容、元器件選型相關(guān)的內(nèi)容;回復(fù)【阻抗匹配】,獲取電磁兼容性、阻抗匹配相關(guān)的資料回復(fù)【...
通常Flash包含幾大塊,這里以F40x為例:
-
主存儲(chǔ)器:用來存放用戶代碼或數(shù)據(jù)。
-
系統(tǒng)存儲(chǔ)器:用來存放出廠程序,一般是啟動(dòng)程序代碼。
-
OTP 區(qū)域:一小段一次性可編程區(qū)域,供用戶存放特定的數(shù)據(jù)。
-
選項(xiàng)字節(jié):存放與芯片資源或?qū)傩韵嚓P(guān)的配置信息。
02什么是STM32對(duì)內(nèi)部Flash的保護(hù)?
1、讀保護(hù)就是大家通常說的“加密”,作用于整個(gè)Flash存儲(chǔ)區(qū)域。如果一旦設(shè)置了Flash的讀保護(hù),那么單片機(jī)內(nèi)置的Flash存儲(chǔ)區(qū)就只能通過程序的正常執(zhí)行才能讀出,而不能通過下述方式讀出:
(1) 使用調(diào)試器(JTAG或SWD);
(2)從內(nèi)存RAM中啟動(dòng)并執(zhí)行的程序;
2、寫保護(hù)是以四頁(1KB/頁) Flash存儲(chǔ)區(qū)為單位提供寫保護(hù),如果對(duì)Flash設(shè)置了寫保護(hù),那么就無法對(duì)Flash進(jìn)行編程和擦除,而且同時(shí)產(chǎn)生操作錯(cuò)誤標(biāo)志。 當(dāng)出現(xiàn)下圖標(biāo)志的時(shí)候,就要檢查Flash是否被保護(hù)起來了。
03讀保護(hù)與寫保護(hù)的相關(guān)效果
讀保護(hù) | 寫保護(hù) | 對(duì)Flash的操作功能 |
有效 | 有效 | CPU只能讀,禁止調(diào)試和非法訪問。 |
有效 | 無效 | CPU可以讀寫,禁止調(diào)試和非法訪問,頁0~3為寫保護(hù)。 |
無效 | 有效 | CPU可讀,允許調(diào)試和非法訪問。 |
無效 | 無效 | CPU可以讀寫,允許調(diào)試和非法訪問。 |
1、flash保護(hù)的相關(guān)函數(shù)
2、STM32如何設(shè)置讀保護(hù)?
我們只需要在程序開頭加入“設(shè)置讀保護(hù)”的代碼就可以,這樣就可以在每次運(yùn)行代碼的時(shí)候都檢查一下,如果沒有開的話就打開,如果開了就跳過。下面是讀保護(hù)的代碼:
3、如何通過代碼解除Flash保護(hù)解除讀保護(hù)可以下面代碼來進(jìn)行解除,我們?yōu)榱朔奖憬怄i,可以設(shè)置一個(gè)按鍵。