发新帖本帖赏金 8.88元(功能说明)我要提问
返回列表
打印
[STM32F7]

[STM32F7] NUCLEO-F722ZE评测(7)PCROP测试

[复制链接]
2113|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sky.sun.zz|  楼主 | 2017-3-15 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sky.sun.zz 于 2017-3-15 15:12 编辑

[STM32F7] NUCLEO-F722ZE评测(7)PCROP测试
    STM32F722的一个亮点是具有PCROP功能(Proprietary code readout protection ),这是是一个专有代码读出保护的功能。当使用 PCROP时,用户扇区(0--23)Flash 能够阻止D-Bus的读取指令;保护功能选择通过FLASH_OPTCR寄存器的SPRMOD选择位进行选择:与RDP 对整片Flash读保护不同的是,它只是针对Flash 的某些特定区域进行代码的读写保护。它可以被用来保护一些IP代码,方便进行二次开发。
   受PCROP 保护的区域是无法使用D-Code 总线进行读访问的,所以在这片区域中只允许执行代码(通过I-Code 总线取指令),数据读取是被禁止的。因此,受保护的IP代码不能访问存储于同一块区域内的关联数据,比如文字池(literal pools)、分支表(branch tables)以及在执行过程中需要通过D-code总线进行读取的常量数据。所以受PCROP 保护的代码只能是只执行的指令代码,并不包含任何数据。因此,我们在编译受PCROP保护的IP 代码时,必须对其进行配置,以避免生成文字池。
  本次评测参考ST官方的《STM32F4xxPCROP应用》一文, 练习了跑马灯例程在STM32F722ZE上运行PCROP的过程。
1、在IAR7.80.4环境下配置PB0、PB7、PB14为输出,驱动3只LED,跑马灯循环中熄灭3只LED的代码写成一个独立函数Light_Clear(),单独存放在名为Sector_Test.c文件中。这个Light_Clear()函数编译时制定存储位置在PCROP保护区,地址在0x08008000,供主函数调用。
//Sector_Test.c
#include "stm32f7xx_hal.h"

#pragma location = ".CODE_Flash"
void Light_Clear(void)
{
GPIOB->ODR &=~0X4081;
}
//--------------------------------------------------------------------------------
//main.c
#include "main.h"
#include "stm32f7xx_hal.h"
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);
extern void Light_Clear(void);
int main(void)
{
    uint32_t i;
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  while (1)
  {
    Light_Clear();
    i=0X2FFFFF;
    while(i--);
    GPIOB->ODR |=0X4000;
    i=0X2FFFFF;
    while(i--);
    Light_Clear();
     i=0X2FFFFF;
    while(i--);
    GPIOB->ODR |=0X0080;
    i=0X2FFFFF;
    while(i--);
    Light_Clear();
    i=0X2FFFFF;
    while(i--);
   
    GPIOB->ODR |=0X0001;
    i=0X2FFFFF;
    while(i--);
  }




2、在Options->C++/C Compiler-Code里打勾“No datareads in code memory"


3、参照《STM32F4xxPCROP应用》修改Startup_stm32f722zx.s



4、修改stm32f722xxflash.icf


5、先编译下载,试运行,跑马灯可以跑了。


在反汇编栏里可以读到Light_Clear()函数的反汇编代码和地址,



打开STM32 ST-Link Utility 4.0,在Targwe memory栏的相同地址处同样可以看到到这段代码。

到此为止,我们已经把要保护的代码正确加载到预期的存储区域0x08008000-ox08008014。


6、点击Target->Option Bytes


在Flash protrction mode栏里选择Read/Wrint protrtion,把地址0x08008000的Sector 2选项打勾,点击Apply。



此时,回到Targwe memory栏,我们已经可以看到这里的数据都看不见了。
退出TM32 ST-Link Utility 4.0,按一下Reset按键,跑马灯又开始运行了。我们的PCROP成功完成配置。跑马灯的视频太平常了,就不上传了。








STM32F722ZE_PCROP.rar

2.48 KB

STM32F4xx PCROP应用.rar

229.17 KB

打赏榜单

21ic小管家 打赏了 8.88 元 2017-04-10
理由:NUCLEO-F722ZE评测领赏

沙发
54chenjq| | 2017-3-15 13:31 | 只看该作者
楼主能分享一下IDE吗?

使用特权

评论回复
板凳
sky.sun.zz|  楼主 | 2017-3-15 13:36 | 只看该作者
54chenjq 发表于 2017-3-15 13:31
楼主能分享一下IDE吗?

BIN附件刚上传,代码在1楼,那些STM32CubeMX过程在以前帖子都有,就省略了。确实需要再上传了。

使用特权

评论回复
地板
54chenjq| | 2017-3-15 19:15 | 只看该作者
sky.sun.zz 发表于 2017-3-15 13:36
BIN附件刚上传,代码在1楼,那些STM32CubeMX过程在以前帖子都有,就省略了。确实需要再上传了。 ...

其实我想要IAR,我的IAR版本太低了

使用特权

评论回复
5
sky.sun.zz|  楼主 | 2017-3-15 19:19 | 只看该作者
本帖最后由 sky.sun.zz 于 2017-3-18 15:59 编辑
54chenjq 发表于 2017-3-15 19:15
其实我想要IAR,我的IAR版本太低了

。。。

使用特权

评论回复
6
sky.sun.zz|  楼主 | 2017-3-15 19:30 | 只看该作者
本帖最后由 sky.sun.zz 于 2017-3-18 13:14 编辑
54chenjq 发表于 2017-3-15 19:15
其实我想要IAR,我的IAR版本太低了

。。。

使用特权

评论回复
7
天灵灵地灵灵| | 2017-3-15 21:36 | 只看该作者
功能强大了,用着也复杂了。

使用特权

评论回复
8
54chenjq| | 2017-3-17 10:04 | 只看该作者
本帖最后由 54chenjq 于 2017-3-17 10:06 编辑

谢谢你哦,有**文件吗?

使用特权

评论回复
9
sky.sun.zz|  楼主 | 2017-3-17 12:52 | 只看该作者
本帖最后由 sky.sun.zz 于 2017-3-17 20:34 编辑
54chenjq 发表于 2017-3-17 10:04
谢谢你哦,有**文件吗?

使用特权

评论回复
10
54chenjq| | 2017-3-17 19:02 | 只看该作者

下载完毕,非常感谢!!!

使用特权

评论回复
11
lzmm| | 2017-3-17 21:58 | 只看该作者

使用特权

评论回复
12
lzmm| | 2017-3-17 22:00 | 只看该作者
不能保护里面的数据吗?

使用特权

评论回复
13
sky.sun.zz|  楼主 | 2017-3-18 07:34 | 只看该作者
lzmm 发表于 2017-3-17 22:00
不能保护里面的数据吗?

只能保护代码(指令类)不被读出,数据类不能放在这些Flash地址。

使用特权

评论回复
14
Varus| | 2017-3-19 21:08 | 只看该作者
求stm32 的IAR,还有**器

使用特权

评论回复
15
sky.sun.zz|  楼主 | 2017-3-19 22:20 | 只看该作者
本帖最后由 sky.sun.zz 于 2017-3-20 10:20 编辑
Varus 发表于 2017-3-19 21:08
求stm32 的IAR,还有**器

使用特权

评论回复
16
wahahaheihei| | 2017-3-20 16:27 | 只看该作者
Varus 发表于 2017-3-19 21:08
求stm32 的IAR,还有**器

用Keil啊,Keil可以**,IAR的**难了,我早就不用了。

使用特权

评论回复
发新帖 本帖赏金 8.88元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

730

帖子

13

粉丝