<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 解讀STM32單片機(jī):代碼實(shí)現(xiàn) PCROP清除

          解讀STM32單片機(jī):代碼實(shí)現(xiàn) PCROP清除

          作者: 時(shí)間:2017-09-25 來源:網(wǎng)絡(luò) 收藏

            前言

          本文引用地址:http://www.ex-cimer.com/article/201709/364744.htm

             專有代碼讀出保護(hù),將某個(gè)區(qū)域設(shè)置為僅允許執(zhí)行,可防止代碼被非法讀出與修改。ST網(wǎng)站提供了免費(fèi)的參考代碼,但是例程中僅僅提供了用代碼設(shè)置。為方便利用PCROP進(jìn)行知識(shí)產(chǎn)權(quán)保護(hù)的開發(fā)和部署,這篇文章提供了方法,可在RDP級(jí)別設(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)出接口符號(hào)供二次開發(fā)使用。

            你可以編譯運(yùn)行PCROP參考代碼。一旦下載到開發(fā)板并運(yùn)行后,扇區(qū)2會(huì)自動(dòng)被設(shè)置成PCROP保護(hù)。你將無法再次下載代碼到該扇區(qū),也無法讀出該扇區(qū)的內(nèi)容。若想通過STLink工具解除PCROP保護(hù),則會(huì)導(dǎo)致整個(gè)Flash被擦除。

            使用代碼清除PCROP

            在熟悉ST網(wǎng)站上的PCROP參考代碼基礎(chǔ)之上,我們將討論如何使用代碼清除PCROP。

            1. 原理

            根據(jù)用戶手冊,要想清除PCROP保護(hù),讀保護(hù)RDP級(jí)別必須從1設(shè)置成0。也就是說,即使當(dāng)前RDP級(jí)別為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ā)板: F429I_Discovery

            開發(fā)工具:STM32Cube_FW_F4_V1.15.0

            STM32CubeExpansion_AN4701_F4_V1.0.0(從ST網(wǎng)站下載的參考代碼)

            STM32 STLink

            IAR/Keil

            注:也可以選擇其他支持PCROP的STM32系列,并選擇相應(yīng)的STM32開發(fā)板與STM32固件庫。

            3. 代碼

            ? ●設(shè)置RDP到級(jí)別1

            該函數(shù)在RDP級(jí)別為0時(shí),若需要清除PCROP, 必須被使用。

              

           

            ? ●設(shè)置RDP到級(jí)別0

            在清除PCROP保護(hù)的代碼里不會(huì)直接調(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)閉電源,重新啟動(dòng),然后系統(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ā)與部署階段。



          關(guān)鍵詞: STM32 PCROP

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();