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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11527|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

話說STM32的PCROP代碼保護(hù)功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98618 發(fā)表于 2016-11-1 00:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

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

 

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

 

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

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

? PCROP: 針對指定扇區(qū)進(jìn)行讀寫保護(hù);

 

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



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

 

**寫保護(hù)和PRROP保護(hù)都可以針對指定的扇區(qū)配置,但是在同一存儲器內(nèi)要么針對扇區(qū)實施寫保護(hù),要么針對扇區(qū)進(jìn)行PCROP保護(hù)。不可以一部分扇區(qū)配置寫保護(hù),另一部分扇區(qū)配置PCROP保護(hù)。


**PCROP區(qū)的代碼也可以調(diào)用PCROP區(qū)外的處于固定地址的函數(shù)。


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


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


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

 

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


·Keil:使用Execute-only 命令

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



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


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



· IAR:No data reads incode memory

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

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




最后以一個基于STM32F4的PCROP實際應(yīng)用案例分享結(jié)尾。

某客戶使用了STM32F446ZET6,開啟PCROP 的功能,對他們的算法代碼進(jìn)行保護(hù)。在使用過程中,他發(fā)現(xiàn)位于PCROP 區(qū)的函數(shù)無法被用戶程序調(diào)用。

 

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


原因就在于客戶未對IP 代碼部分進(jìn)行相應(yīng)的配置處理,從而導(dǎo)致編譯器未在PCROP區(qū)域避免生成文字池和分支表等數(shù)據(jù)。故而在調(diào)用PCROP內(nèi)部的函數(shù)時觸發(fā)了D-code 總線去訪問PCROP 區(qū)域,導(dǎo)致錯誤發(fā)生。

 

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久一级 | 国产伦精品一区二区三区视频金莲 | 美女视频三区 | 国产一区二区久久久 | 黄色片av | 日韩欧美视频网站 | 在线看免费 | 日韩国产欧美一区 | 午夜小电影 | 精品国产一区二区三区性色av | 性网站免费 | 成人在线亚洲 | 国产一区二区三区日韩 | 羞羞视频在线观看免费观看 | 亚洲精品乱码久久久久久9色 | 天天综合永久入口 | 午夜影院污 | 午夜精品久久久久久久99黑人 | 欧美成人在线网站 | 亚洲色图综合 | 欧美不卡| 四虎伊人| 欧美二三区 | 国产一区二区精品在线观看 | 国产精品国色综合久久 | 久久久久国产精品一区二区 | 成人久久| 精品国产91乱码一区二区三区 | 色婷婷久久久久swag精品 | 国产精品亚洲一区 | 午夜伦理影院 | av中文字幕在线观看 | 国产亚洲精品a | 欧美日韩中文字幕在线 | 99re视频精品 | 日韩精品| 天天操天天干天天透 | 黄视频网站免费观看 | 青青草一区 | www一级片| 99r在线 |