久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11327|回復: 0
收起左側

話說STM32的PCROP代碼保護功能

[復制鏈接]
ID:98618 發表于 2016-11-1 00:08 | 顯示全部樓層 |閱讀模式

軟件供應商們在致力于開發屬于自己的知識產權的軟件產品,尤其是那些中間件產品的同時,如何保護這些知識產權[IP]實際上也是他們非常關心和重視的問題。基于各類微處理器的嵌入式產品對IP保護的要求也日益明顯和迫切。

 

為了滿足對產品IP保護的需求,STM32的各系列MCU都提供芯片讀保護寫保護。除此之外,目前STM32家族10個產品線中,除了STM32F1等個別早期產品線外,還增加了專有代碼讀保護功能,即Proprietary Code Read Out Protection (PCROP)。

 

? Read Protection(RDP): 對整個芯片實施讀出保護;

? Write Protection: 防止意外的對存儲器的擦、寫操作;

? PCROP: 針對指定扇區進行讀寫保護;

 

PCROP為Proprietary code readout protection 的縮寫,是一個專有代碼讀出保護的功能。與RDP 對整片Flash讀保護不同的是,它只是針對Flash 的某些特定區域進行代碼的讀寫保護。它可以被用來保護一些IP代碼,方便進行二次開發。ST公司的多個STM32產品系列,比如STM32L1、STM32F4STM32L4STM32F7STM32H7等都支持PCROP功能。



**受PCROP保護的IP代碼可以隨意地被用戶應用程序調用運行,同時又防止外界對IP代碼的直接讀寫訪問。一咋看這句話理解起來可能有點別扭,稍微琢磨下應可反應過來。相信不少軟件工程師在開發中有時會用到第三方庫代碼,有些庫代碼是編譯過的lib庫,看不到source code,但你能使用調用它,有點類似。

 

**寫保護和PRROP保護都可以針對指定的扇區配置,但是在同一存儲器內要么針對扇區實施寫保護,要么針對扇區進行PCROP保護。不可以一部分扇區配置寫保護,另一部分扇區配置PCROP保護。


**PCROP區的代碼也可以調用PCROP區外的處于固定地址的函數。


**受PCROP保護的區域是無法使用D-Code 總線進行讀訪問的,所以在這片區域中只允許執行指令代碼(通過I-Code 總線取指令),數據讀取是被禁止的。因此,受保護的IP代碼不能訪問存儲于同一塊區域內的關聯數據,比如文字池(literal pools)、分支表(branch tables)以及在執行過程中需要通過D-code總線進行讀取的常量數據。


換言之,受PCROP 保護的代碼只能是只執行的指令代碼,而不包含任何數據。因此,我們在編譯受PCROP保護的IP代碼時,必須對其進行相應配置,以避免在PRROP區域生成文字池、常量數據等。


我們知道STM32的中斷向量表里都是些常量數據,所以包含中斷向量表的扇區不可進行PCROP。一般來講向量表放在第一個扇區,所以該扇區不可進行PCROP。

 

不同的編譯工具鏈有其自己的配置方式去阻止編譯器生成文字池和分支表。我們來看一下基于MDK Keil中和IAR 開發環境的設置操作。


·Keil:使用Execute-only 命令

1) 右擊項目中的IP代碼文件組(比如ST 官方應用筆記AN4701例子中的FIR-Filter),選擇“Options for Group‘FIR-Filter’”



在對話框中選擇“C/C++”頁面,選中“Execute-only code”,點“OK”。


2) 另外,還需修改Keil scatter file(.sct文件),設置IP 代碼為只可執行代碼:



· IAR:No data reads incode memory

1) 右擊項目中的IP 代碼文件組(比如例子中的FIR-Filter),選擇“Options”

2) 另外,還需修改IAR ICF 文件(.icf 文件)。假如我們將IP 代碼放在Sector 2,那么,我們需要在.icf 中加入以下內容,如下:




最后以一個基于STM32F4的PCROP實際應用案例分享結尾。

某客戶使用了STM32F446ZET6,開啟PCROP 的功能,對他們的算法代碼進行保護。在使用過程中,他發現位于PCROP 區的函數無法被用戶程序調用。

 

經了解,客戶使用Keil  MDK 進行項目的開發。檢查客戶的代碼,看是否在項目中的IP代碼的Options 中使能了“ExecuteonlyCode”選項,發現并沒有將之使能。于是將此選項使能后,并編輯.sct 文件,再編譯,運行代碼。問題解決。


原因就在于客戶未對IP 代碼部分進行相應的配置處理,從而導致編譯器未在PCROP區域避免生成文字池和分支表等數據。故而在調用PCROP內部的函數時觸發了D-code 總線去訪問PCROP 區域,導致錯誤發生。

 

對于PCROP 功能的詳細使用說明,請參考應用筆記AN4701《Proprietary code read-out protection on microcontrollers of theSTM32F4 series》及其相應的參考代碼X-CUBE-PCROP.zip。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日摸日日碰夜夜爽2015电影 | 国产视频中文字幕 | 亚洲精品一区二区三区在线观看 | 久久综合一区二区 | 久久精品一级 | 精品三级在线观看 | 亚洲成人精品久久 | 亚洲一区二区在线视频 | 国产精品久久久久久久久久久久 | 久久婷婷国产香蕉 | 久久精品成人 | 国产视频在线观看一区二区三区 | 亚洲人成人一区二区在线观看 | 99久久精品免费看国产高清 | 国产99久久精品一区二区永久免费 | 91视频在线观看免费 | 一区二区三区在线 | 在线āv视频 | 久久av一区二区三区 | 久久黄色网 | 欧美激情精品久久久久久免费 | www.887色视频免费 | 黑人巨大精品欧美一区二区免费 | 日韩视频1 | 啪啪网页| 亚洲精品91| av一二三区 | 日本色婷婷 | 性色av香蕉一区二区 | 久久久精品视频一区二区三区 | 精品视频在线一区 | 噜噜噜噜狠狠狠7777视频 | 亚洲精品福利视频 | 亚洲网站在线播放 | 精品成人免费一区二区在线播放 | 一区在线免费视频 | 国产欧美精品 | 欧美大片一区二区 | 91精品午夜窝窝看片 | 久久精品免费一区二区 | 欧美一级三级在线观看 |