【STM32F723E-DISCO开发板试用体验】+专有代码读保护

  • qq1328512480
  • LV5工程师
  • |      2017-09-16 21:58:00
  • 浏览量 930
  • 回复:2
也是新了解的这个,借鉴了许多网上大神,供大家分享借鉴~ 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 )允许选择 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保护的页外,全块擦除。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:2
就算挂机 2017-10-31
学习一下!
0   回复
举报
发布
lygo 2017-09-18
不懂不懂 蒙圈,。。。。 :L
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子