前言
STM32PCROP專有代碼讀出保護(hù),將某個(gè)區(qū)域設(shè)置為僅允許執(zhí)行,可防止代碼被非法讀出與修改。ST網(wǎng)站提供了免費(fèi)的PCROP參考代碼,但是例程中僅僅提供了用代碼設(shè)置PCROP。為方便利用PCROP進(jìn)行知識產(chǎn)權(quán)保護(hù)的開發(fā)和部署,這篇文章提供了方法,可在RDP級別設(shè)置為1或者0時(shí),使用代碼清除PCROP。
ST網(wǎng)站上的PCROP參考代碼
學(xué)習(xí)使用PCROP,可從ST網(wǎng)站下載文檔以及參考代碼。文檔里有一步一步的詳細(xì)說明。參考代碼則實(shí)現(xiàn)了,如何設(shè)置編譯開發(fā)環(huán)境去掉文字庫(Literal pool),以避免受保護(hù)區(qū)域需要被讀訪問;參考代碼也實(shí)現(xiàn)了如何利用代碼使能PCROP保護(hù)以及如何導(dǎo)出接口符號供二次開發(fā)使用。
你可以編譯運(yùn)行PCROP參考代碼。一旦下載到開發(fā)板并運(yùn)行后,扇區(qū)2會自動被設(shè)置成PCROP保護(hù)。你將無法再次下載代碼到該扇區(qū),也無法讀出該扇區(qū)的內(nèi)容。若想通過STLink工具解除PCROP保護(hù),則會導(dǎo)致整個(gè)Flash被擦除。
使用代碼清除PCROP
在熟悉ST網(wǎng)站上的PCROP參考代碼基礎(chǔ)之上,我們將討論如何使用代碼清除PCROP。
1. 原理
根據(jù)STM32用戶手冊,要想清除PCROP保護(hù),讀保護(hù)RDP級別必須從1設(shè)置成0。也就是說,即使當(dāng)前RDP級別為0,我們也要使用代碼將其設(shè)置成1。然后,同時(shí)關(guān)掉PCROP和將RDP設(shè)置成0。這也說明,盡管是清除PCROP保護(hù),我們的代碼必須加入RDP的設(shè)置函數(shù), 而不能僅僅修改參考代碼中的PCROP_Enable的狀態(tài)字段使其變成PCROP_Disable。
2. 材料準(zhǔn)備
開發(fā)板:STM32F429I_Discovery
開發(fā)工具:STM32Cube_FW_F4_V1.15.0
STM32CubeExpansion_AN4701_F4_V1.0.0(從ST網(wǎng)站下載的參考代碼)
STM32STLink
IAR/Keil
注:也可以選擇其他支持PCROP的STM32系列,并選擇相應(yīng)的STM32開發(fā)板與STM32固件庫。
3. 代碼
●設(shè)置RDP到級別1
該函數(shù)在RDP級別為0時(shí),若需要清除PCROP, 必須被使用。
●設(shè)置RDP到級別0
在清除PCROP保護(hù)的代碼里不會直接調(diào)用這個(gè)函數(shù)。參考手冊提到,PCROP的清除必須與RDP從1到0同時(shí)發(fā)生,而下列RDP_Disable函數(shù)則是完整獨(dú)立的,無法與PCROP的Option bytes同時(shí)操作。不過,這個(gè)代碼的中間部分,也就是實(shí)際功能部分,將在清除PCROP時(shí)被重用。
●清除PCROP
下述代碼清除PCROP,它基于參考代碼中的PCROP_Enable函數(shù)改寫而成。首先,它通過RDP_Enable將RDP設(shè)置成1。注意實(shí)驗(yàn)中不要將RDP設(shè)置成為2,否則所有的Option bytes將不再被允許修改。然后將RDP和PCROP都設(shè)置完畢,調(diào)用一次HAL_FLASH_OB_Launch達(dá)到同時(shí)將RDP設(shè)置成1并清除PCROP保護(hù)。
4.運(yùn)行
在主函數(shù)中,調(diào)用PCROP_Disable可解除PCROP保護(hù)。RDP_Enable后需要關(guān)閉電源,重新啟動,然后系統(tǒng)正常運(yùn)行解除PCROP保護(hù)。解除保護(hù)后,可通過STLink確認(rèn)PCROP Option bytes已恢復(fù),同時(shí)也可以看到整個(gè)Flash內(nèi)容已被擦除。
結(jié)論
本文討論了完全使用代碼控制PCROP的設(shè)置與清除。它可以使用在PCROP代碼保護(hù)的開發(fā)與部署階段。
上一篇:STM32中C語言的基礎(chǔ)知識
下一篇:如何創(chuàng)建一個(gè)STM32工程模板
推薦閱讀最新更新時(shí)間:2025-06-07 23:41






設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LTM4602HV 演示板、28V、6A 降壓模塊穩(wěn)壓器
- PCB書簽 尺子 卡片
- PeanutPI
- 平衡自行車+獨(dú)輪車
- AM1DR-1209SZ 9V 1 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- NCV33074ADR2G 直流耦合反相放大器最大輸出擺幅的典型應(yīng)用
- 【明日方舟】羅德島本艦主控板V6.2
- DC795A,使用 LT5527EUF 4.5V 至 5.25V 高線性下變頻混頻器的演示板
- XL4016可調(diào)恒壓恒流實(shí)驗(yàn)電源
- 帶內(nèi)部開關(guān)的 PAM2863 2A LED 驅(qū)動器的典型應(yīng)用
- 關(guān)于STM32F0系列多路ADC單獨(dú)采樣數(shù)據(jù)相同問題的處理
- Deepen AI推出雷達(dá)和IMU傳感器校準(zhǔn)以及優(yōu)化器 提高準(zhǔn)確性
- 光弘科技:公司為榮耀、華為等品牌商提供了制造服
- 如何為混合動力汽車/電動汽車設(shè)計(jì)暖通系統(tǒng)
- 俄烏沖突影響太大 iPhone價(jià)格大漲:漲幅1800多元
- 華為發(fā)布超級終端與多款PC平板新品,引領(lǐng)智慧辦公新體驗(yàn)
- 影響氮化鎵可靠性的因素以及測試流程和標(biāo)準(zhǔn)淺析
- 傳日本Denso將投資臺積電與索尼合資的熊本晶圓廠
- EPC在APEC 2022展會上展示GaN技術(shù)如何為48 V應(yīng)用帶來革命性突破
- "智能汽車芯片大戰(zhàn)升級:高通最新方案為何獲中國車企追捧?
- 電壓精度0.5% @25°C!思瑞浦發(fā)布全新車規(guī)并聯(lián)基準(zhǔn)芯片TPR43xQ系列產(chǎn)品
- AI技術(shù)在方便面生產(chǎn)質(zhì)量監(jiān)控中的應(yīng)用
- 潤石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測試新時(shí)代(下)
- 軟件定義汽車電源管理設(shè)計(jì):NXP的PMIC選型攻略解析
- 深度測評時(shí)空壺X1同聲傳譯器:全球最先進(jìn)AI同傳設(shè)備的非凡實(shí)力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴(kuò)容+國產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動問題解析
- 國網(wǎng)天津電力融合數(shù)據(jù)資源推進(jìn)綜合能源服務(wù)
- 國網(wǎng)冀北電力首個(gè)源網(wǎng)荷儲主動智能配電網(wǎng)示范工程投產(chǎn)
- 十三五農(nóng)網(wǎng)改造升級:聚焦短板齊發(fā)力
- 全面部署,確保電力“迎峰度夏”
- 能源互聯(lián)網(wǎng):“去中心化控制”勢在必行
- CPU vs FPGA,圖像處理誰更厲害?
- 經(jīng)濟(jì)學(xué)人封面文章:腦機(jī)界面或?qū)⒏淖儭叭祟悺倍x
- 2018年中國機(jī)器視覺行業(yè)發(fā)展前景與投資建議
- 美國新提案:誰用華為中興的設(shè)備,就該封殺誰
- 遠(yuǎn)東理工助力人工智能機(jī)器人科教示范區(qū)建設(shè)