打印
[STM32F7]

STM32F723E-DISCO+新一代探索套件--专有代码读保护

[复制链接]
931|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 WAMCNCN 于 2017-5-5 18:01 编辑

1.读保护(RDP)


如图,读保护的三个级别:
        .写RDP选项字节0xAA为0级,无保护;
        .写0xCC为2级,芯片保护;
        .写其他值,1级保护。
从级别0到级别1是可逆的,级别2不可逆,是永久性的。
访问状态与保护级和执行模式的对比。

      从表中可以看出在保护级别为1、2时,不能从调试或
启动时SRAM或系统内存 bootloader更新Flash代码。
      但是如何升级软件代码呢?可以通过用户嵌入在FLASH中的IAP代码来更新软件。IAP使用通讯协议重新编程例如UART。
      现在明白了为何不能直接设置为读保护级别2了吧,如果读保护设为2级之前,写入的代码中不包括IAP代码,那么片子就报废了。
2.写保护
      写保护是用来保护
指定扇区的内容代码更新或删除。
3.PCROP
      是FLASH存储中IP-代码的读和写的保护,可以应用到(0到7)扇区,保护专有代码
不能通过终端用户代码,调试器工具或RAM木马代码可能的修改或读出。
      通过ITCM或AXI总线对 PCROP保护的扇区读取,触发:
      .总线错误
      .RDERR和RDERRIE标志位的设置
被保护的IP-代码可以被终端用户应用调用,同时也防止对IP-代码自身的直接访问。此外PCROP并不阻止被保护的代码被执行。


4.如何启用PCROP
      PCROP保护被分段激活,所以每个扇区可以独自成为PCROP保护的扇区,同时剩余的扇区也能设置被保护(当RDP设置成0或1时)。
      PCROP通过
FLASH_OPTCR2寄存器了的选项位PCROP激活:
           
•PCROP= 0:    扇区(i = 0 . . 7)    PCROP保护未激活
          •PCROP= 1:   
扇区 i(i = 0 . . 7) PCROP保护激活
     为了增强PCROP-ed 扇区的安全级别,在执行PCROP-ed扇区中的代码时所有的调试事件被屏蔽。
     当RDP保护从1降到0级时,另外一个选项位(
PCROP_RDP = PCROP1ER [15] )允许选择 PCROP扇区是否擦除。
     一位用来激活PCROP,其它位用来激活写保护
nWRPi 是独立的,这样,可能同时有一个写保护扇区和另一个是PCROP扇区。

   
  两个要点:
           .PCROP保护的扇区阻止数据总线的读取,所以此扇区只能储存仅可执行的IP-代码,不能存储数据。
           .中断向量表包含每个中断处理程序的入口地址,由CPU通过D-code总线读取,通常放在第一扇区第一地址
0x08000000,所以第一扇区不能激活PCROP。
使用工具

5.如何禁止PCROP
     
依赖于RDP的级别
           .RDP级别是1或0时,PCROP可被禁止
           .RDP级别是2时,由于选项字节固定而不能修改,因此PCROP保护的扇区不能修改或擦除,保护是永久性的。
      在保护的扇区禁止PCROP的唯一方式:
          .清除相应扇区的
PCROPi位
          .RDP降级从1到0
          .PCROP_RDP位被设置,主FLSAH存储的块擦除被执行依赖于
PCROPi的值,PCROP保持启用或禁止相应的扇区   
          PCROP_RDP位被清除,除了被PCROP保护的页外,全块擦除。



PCROPi  
沙发
mmbs| | 2017-5-5 22:50 | 只看该作者
这个代码可以不被读取?

使用特权

评论回复
板凳
mmbs| | 2017-5-5 23:00 | 只看该作者
不是烧断熔丝位吗?

使用特权

评论回复
地板
WAMCNCN|  楼主 | 2017-5-6 18:47 | 只看该作者
mmbs 发表于 2017-5-5 23:00
不是烧断熔丝位吗?

读保护2级才烧断

使用特权

评论回复
5
WAMCNCN|  楼主 | 2017-5-6 18:48 | 只看该作者
mmbs 发表于 2017-5-5 22:50
这个代码可以不被读取?

是啊 ,防止逆向

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

1875

帖子

1

粉丝