STMCU小助手
发布时间:2022-8-1 22:26
|
1. 引言 PCROP 全称为 Proprietary code read out protection(专用代码保护),它提供了一种新的代码保护机制,在 PCROP 区域的内容只能为可执行,不能读取或写入。这种机制可以为 OEM 厂商提供保护,方便保护自己 IP 的代码。本文主要记录在使用 PCROP 上遇到的 Hardfault 问题。 如何使用 PCROP 呢? 参考 AN4968 中 PCROP 的描述,PCROP 的使用大致有以下几个步骤: 1. 将需要保护的文件,在 IDE 中标识为仅可执行,IAR 和 KEIL,CubeIDE 都有此类标识。 2. 需要修改 Link 文件,将受保护文件中的 rw data, ro data, ro code 进行分区存放。 3. 通过修改选项字,将受保护文件中的 ro code 中的内容进行 PCROP 保护。 4. 编译工程产生保护文件的.o 文件,并把符号导出给实际应用工程使用。 2. 问题描述 在我使用 IAR 进行 PCROP 的测试时,发生了如下错误。
3. 问题分析与定位 PCROP 调试时,会遇到一个问题,那就是由于代码已经被保护起来,无法单步调试。目前知道的只是当 PCROP 打开的时候会导致 Hard Fault,而不使用 PCROP 没有问题。那么这个问题和PCROP 强相关了。 接下来,只能通过一些简单的测试来定位发生问题的大概位置了,比如在函数入口添加一些简单的汇编代码,比如 IAR 中可以添加代码往寄存器 R5 中写入特殊测试值:__ASM(" MOVS R5, #11"),通过这个简单的测试,发现函数并没有执行到这里来。所以大概在跳转之后,执行这一句代码之前就已经发生了问题。 Hard Fault 的错误描述为:INVSTATE,无效状态代表的是试图切换到 ARM 状态,查看文档后有以下信息:
把 PCROP 取消掉以后,查看汇编代码如下图 3:
0x9003 开头的是外部 flash 地址,首先会跳转到 0x9003’6fd8 去执行,如下图 4。
完整版请查看:附件 |
LAT1023_STM32H750上PCROP的使用问题.pdf
下载575.09 KB, 下载次数: 0
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
【 逢7发帖赢大礼】6、TouchGFX中添加图像素材和自定义代码编辑
【 逢7发帖赢大礼】5、TouchGFX 创建自定义界面和交互
【 逢7发帖赢大礼】4、CubeMX工程复用以及TouchGFX应用
【 逢7发帖赢大礼】3、利用CubeMX添加TouchGFX功能:工程修改和编译烧录
【 逢7发帖赢大礼】2、利用CubeMX添加TouchGFX功能:CubeMX配置
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
CubeMX生成CubeIDE工程代码乱码
经验分享 | 基于STM32H7不同MPU配置的拷贝性能比较
【STM32U3 评测】CAN基本通讯测试
微信公众号
手机版