0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32加密問(wèn)題:怎樣預(yù)置一段Flash讀保護(hù)和清除讀保護(hù)的程序

工程師鄧生 ? 來(lái)源:未知 ? 作者:劉芹 ? 2023-10-29 17:24 ? 次閱讀

STM32加密問(wèn)題:怎樣預(yù)置一段Flash讀保護(hù)和清除讀保護(hù)的程序

在STM32加密方案中,為了對(duì)芯片進(jìn)行加密,我們需要加入讀保護(hù)功能。讀保護(hù)功能即使未經(jīng)授權(quán)的人無(wú)法讀取芯片的Flash程序,在STM32芯片中,我們可以通過(guò)設(shè)置BFB2和BFB1位來(lái)對(duì)Flash進(jìn)行保護(hù)。BFB2位用于讀保護(hù)和寫保護(hù),其中1表示打開讀保護(hù)和寫保護(hù),0表示關(guān)閉讀保護(hù)和寫保護(hù);BFB1位用于寫保護(hù),1表示打開寫保護(hù),0表示關(guān)閉寫保護(hù)。在本文中,我們將討論如何預(yù)置一段Flash讀保護(hù)和清除讀保護(hù)的程序。

預(yù)置Flash讀保護(hù)程序:

我們首先需要在STM32中編寫一段Flash讀保護(hù)程序。該程序主要用于保護(hù)芯片的程序不被未經(jīng)授權(quán)的人讀取。以下是預(yù)置Flash讀保護(hù)程序的步驟:

1.選擇合適的開發(fā)環(huán)境。建議使用Keil MDK Arm開發(fā)環(huán)境。

2.創(chuàng)建一個(gè)新的工程并定義一個(gè)main函數(shù)??梢园凑找韵麓a定義main函數(shù):

int main(void) {
//對(duì)Flash進(jìn)行讀保護(hù)
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_2);
FLASH_OB_Launch();
FLASH_OB_Lock();

//程序執(zhí)行完畢后重啟
NVIC_SystemReset();

while(1);

}

在此代碼中,我們使用FLASH_OB_RDPConfig函數(shù)來(lái)設(shè)置讀保護(hù)級(jí)別。OB_RDP_Level_2表示設(shè)置為級(jí)別2,也就是最高級(jí)別的讀保護(hù)。FLASH_OB_Launch函數(shù)用于啟動(dòng)Flash設(shè)置操作,然后使用FLASH_OB_Lock函數(shù)鎖定Flash。

3.編譯并下載程序到STM32芯片。完成以上步驟后,芯片現(xiàn)在將受到讀保護(hù)。

預(yù)置Flash清除讀保護(hù)程序:

如果我們需要更改STM32芯片的Flash保護(hù)設(shè)置,我們需要先清除讀保護(hù)。以下是預(yù)置Flash清除讀保護(hù)程序的步驟:

1.創(chuàng)建一個(gè)新的工程并定義一個(gè)main函數(shù)??梢园凑找韵麓a定義main函數(shù):

int main(void) {
//對(duì)Flash進(jìn)行清除讀保護(hù)
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_0);
FLASH_OB_Launch();
FLASH_OB_Lock();

//程序執(zhí)行完畢后重啟
NVIC_SystemReset();

while(1);

}

在此代碼中,我們使用FLASH_OB_RDPConfig函數(shù)將讀保護(hù)級(jí)別設(shè)置為0,這意味著芯片上的讀保護(hù)已被禁用。代碼還使用FLASH_OB_Launch函數(shù)和FLASH_OB_Lock函數(shù)鎖定Flash。

2.編譯并下載程序到STM32芯片。完成以上步驟后,讀保護(hù)已被禁用。

總結(jié):

通過(guò)編寫預(yù)置Flash讀保護(hù)和清除讀保護(hù)程序,我們可以更有效地保障STM32芯片的安全性。需要注意的是,在進(jìn)行這些操作時(shí),需要仔細(xì)檢查代碼,確保程序正確地執(zhí)行了讀保護(hù)和清除讀保護(hù)動(dòng)作,并且不會(huì)導(dǎo)致芯片的其他問(wèn)題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1635

    瀏覽量

    148034
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356046
  • 芯片加密
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9399
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    相間距離保護(hù)一段保護(hù)范圍介紹

    引言 電力系統(tǒng)是現(xiàn)代社會(huì)的重要基礎(chǔ)設(shè)施,其安全穩(wěn)定運(yùn)行對(duì)于保障國(guó)民經(jīng)濟(jì)和人民生活具有重要意義。在電力系統(tǒng)中,相間距離保護(hù)種重要的保護(hù)方式,其主要作用是保護(hù)電力系統(tǒng)的相間故障。
    的頭像 發(fā)表于 08-05 10:11 ?831次閱讀

    BLUENRG-LP開啟保護(hù)的問(wèn)題求解

    樣的結(jié)果。 2.嘗試在程序中通過(guò)軟件操作FLASH寄存器開啟保護(hù),結(jié)果也是樣,開啟后,復(fù)位
    發(fā)表于 05-29 06:20

    STM32G0如果只執(zhí)行寫保護(hù)編程時(shí),先擦除選項(xiàng)字節(jié),此時(shí)保護(hù)字節(jié)是FF,那是不是就讀保護(hù)生效了?

    如果只執(zhí)行寫保護(hù)編程時(shí),先擦除選項(xiàng)字節(jié),此時(shí)保護(hù)字節(jié)是FF,那是不是就讀保護(hù)生效了?程序再修改為A5,會(huì)不會(huì)就引起
    發(fā)表于 05-20 08:17

    STM32F1 IAP操作保護(hù)選項(xiàng)字節(jié)設(shè)置,APP使用系統(tǒng)復(fù)位跳轉(zhuǎn)后無(wú)法運(yùn)行IAP的原因?

    最近調(diào)試個(gè)程序,是基于STM32F1做的IAP,升級(jí)前后需要修改選項(xiàng)字節(jié),FLASH_EraseOptionBytes函數(shù)內(nèi)OB->RDP=RDP_Key語(yǔ)句實(shí)現(xiàn)
    發(fā)表于 05-13 08:09

    求助,關(guān)于STM32F302_FLASH保護(hù)的問(wèn)題求解

    查看好些STM32F302資料,想通過(guò)FLASH保護(hù)來(lái)實(shí)現(xiàn)加密功能,添加以下代碼后,沒(méi)能實(shí)現(xiàn)預(yù)期功能: #define OB_RDP_L
    發(fā)表于 05-08 06:26

    STM32是如何從flash讀取指令并執(zhí)行的?

    [td]因?yàn)?b class='flag-5'>STM32H750自帶的FLASH太小,而工程文件超過(guò)這個(gè)flash的容量,所以需要外掛flash來(lái)存
    發(fā)表于 04-24 07:09

    STM8S003F3的保護(hù)可以通過(guò)程序打開嗎?

    STM8S003F3的保護(hù)可以通過(guò)程序打開嗎
    發(fā)表于 04-17 06:43

    請(qǐng)問(wèn)STM32怎么在代碼中把保護(hù)加進(jìn)去呢?

    STM32怎么在代碼中把保護(hù)加進(jìn)去呢?
    發(fā)表于 04-16 06:28

    STM32F7開啟保護(hù)Level2后,還能擦除重新燒錄程序嗎?

    STM32F7開啟保護(hù)Level2之后,還能擦除重新燒錄程序嗎?
    發(fā)表于 04-01 07:38

    STM32F030F4P6下載程序時(shí)提示Unable to run verification,設(shè)置保護(hù)失敗的原因?

    新買的芯片STM32F030F4P6,測(cè)試時(shí)使用ST LINK可以正常連接讀取FLASH,下載程序時(shí)提示Unable to run verification!然后嘗試設(shè)置
    發(fā)表于 03-27 06:37

    STM32G0加保護(hù)后為什么就連不上了?

    STM32G0 加保護(hù) 百分之十芯片 發(fā)現(xiàn)再次連接不上用Jlink STLink都不行 怎么可以連接上
    發(fā)表于 03-25 06:27

    stm32誤設(shè)置RDP保護(hù)LV2 chip protection怎么恢復(fù)啊?

    stm32 誤設(shè)置 RDP 保護(hù)LV2chip protection 怎么恢復(fù)
    發(fā)表于 03-19 08:29

    STM32 FLASH模擬EEPROM,燒寫程序時(shí)設(shè)置為保護(hù)Level-2級(jí)別,還能正常讀寫這個(gè)模擬的EEPROM嗎?

    STM32系列內(nèi)部FLASH模擬EEPROM,燒寫程序時(shí)設(shè)置為保護(hù)Level-2級(jí)別,還能正常讀寫這個(gè)模擬的EEPROM嗎?
    發(fā)表于 03-13 07:34

    STM32F407串口IDLE標(biāo)識(shí)被自動(dòng)清除是為什么呢?

    我現(xiàn)在有一段STM32F407的程序,我寫了串口收發(fā)的程序,但我發(fā)現(xiàn)每次stm32接收完數(shù)據(jù)后IDLE標(biāo)識(shí)被自動(dòng)
    發(fā)表于 03-07 07:38

    PSoC6怎么設(shè)置Flash保護(hù)防止被外部讀???

    PSoC6 怎么設(shè)置Flash保護(hù),防止被外部讀取,最好是通過(guò)軟件設(shè)置。
    發(fā)表于 02-18 08:08