<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 解讀STM32單片機:代碼實(shí)現 PCROP清除

解讀STM32單片機:代碼實(shí)現 PCROP清除

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

  前言

本文引用地址:http://dyxdggzs.com/article/201709/364744.htm

   專(zhuān)有代碼讀出保護,將某個(gè)區域設置為僅允許執行,可防止代碼被非法讀出與修改。ST網(wǎng)站提供了免費的參考代碼,但是例程中僅僅提供了用代碼設置。為方便利用PCROP進(jìn)行知識產(chǎn)權保護的開(kāi)發(fā)和部署,這篇文章提供了方法,可在RDP級別設置為1或者0時(shí),使用代碼清除PCROP。

  ST網(wǎng)站上的PCROP參考代碼

  學(xué)習使用PCROP,可從ST網(wǎng)站下載文檔以及參考代碼。文檔里有一步一步的詳細說(shuō)明。參考代碼則實(shí)現了,如何設置編譯開(kāi)發(fā)環(huán)境去掉文字庫(Literal pool),以避免受保護區域需要被讀訪(fǎng)問(wèn);參考代碼也實(shí)現了如何利用代碼使能PCROP保護以及如何導出接口符號供二次開(kāi)發(fā)使用。

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

  使用代碼清除PCROP

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

  1. 原理

  根據用戶(hù)手冊,要想清除PCROP保護,讀保護RDP級別必須從1設置成0。也就是說(shuō),即使當前RDP級別為0,我們也要使用代碼將其設置成1。然后,同時(shí)關(guān)掉PCROP和將RDP設置成0。這也說(shuō)明,盡管是清除PCROP保護,我們的代碼必須加入RDP的設置函數, 而不能僅僅修改參考代碼中的PCROP_Enable的狀態(tài)字段使其變成PCROP_Disable。

    

 

  2. 材料準備

  開(kāi)發(fā)板: F429I_Discovery

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

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

  STM32 STLink

  IAR/Keil

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

  3. 代碼

  ? ●設置RDP到級別1

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

    

 

  ? ●設置RDP到級別0

  在清除PCROP保護的代碼里不會(huì )直接調用這個(gè)函數。參考手冊提到,PCROP的清除必須與RDP從1到0同時(shí)發(fā)生,而下列RDP_Disable函數則是完整獨立的,無(wú)法與PCROP的Option bytes同時(shí)操作。不過(guò),這個(gè)代碼的中間部分,也就是實(shí)際功能部分,將在清除PCROP時(shí)被重用。

    

 

    

 

  ? ●清除PCROP

  下述代碼清除PCROP,它基于參考代碼中的PCROP_Enable函數改寫(xiě)而成。首先,它通過(guò)RDP_Enable將RDP設置成1。注意實(shí)驗中不要將RDP設置成為2,否則所有的Option bytes將不再被允許修改。然后將RDP和PCROP都設置完畢,調用一次HAL_FLASH_OB_Launch達到同時(shí)將RDP設置成1并清除PCROP保護。

    

 

    

 

  4.運行

  在主函數中,調用PCROP_Disable可解除PCROP保護。RDP_Enable后需要關(guān)閉電源,重新啟動(dòng),然后系統正常運行解除PCROP保護。解除保護后,可通過(guò)STLink確認PCROP Option bytes已恢復,同時(shí)也可以看到整個(gè)Flash內容已被擦除。

  結論

  本文討論了完全使用代碼控制PCROP的設置與清除。它可以使用在PCROP代碼保護的開(kāi)發(fā)與部署階段。



關(guān)鍵詞: STM32 PCROP

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>