
前言 软件提供商开发的复杂中间件解决方案 (知识产权 (IP) 代码)需要进行保护。 这种 IP 代码必须能够以终端用户应用程序插件的形式来构建完整的解决方案。全局保护机制会通过专用的应用程序编程接口 (API) 限制对该代码的访问,同时会防止任何读访问。 本应用笔记概括介绍了用于防止专有代码被终端用户代码、调试器工具或 RAM 木马代码读出的机制。该机制提供了全面的 API,因此 IP 代码可由终端用户应用程序轻松调用,并且仍可防止直接访问 IP 代码本身。 建议使用的解决方案基于 MPU 功能以及终端用户应用程序和 IP 代码中的特殊存储器和外设管理机制。 在 STM32 专有代码保护方法中,会使用两种保护级别: 全局读出保护(全局 ROP):通过 STM32 ROP 防止 IP 代码和终端用户代码(被调试器工具或 RAM 木马代码)直接读取。 IP 代码读出保护 (IP ROP):通过 MPU 防止 IP 代码被终端用户代码(可能是木马代码)读取。 因为一旦激活了全局 ROP,用户就不再能够完全控制 Flash 编程,因此主应用程序 (IP 代码)必须嵌入 IAP 层。该 IAP 可在不破坏受保护代码区域的同时加载终端用户应用程序。 若需完整解决方案的更详细信息,请联系您本地的 ST 销售代表。 1代码保护概述 Flash 存储器分为两个主要区域: 主应用程序代码:包含 IP 存储器保护代码、需要保护的 IP 代码以及启用终端用户应用程序加载的 IAP 代码。 用户代码:包含终端用户应用程序,使用 IP 存储器保护代码提供的主系统应用程序 API在保护模式下提供对 IP 代码的访问。 图 1 举例说明了 Flash 存储器映射 (STM32F2 系列) ![]() IP 代码的起始地址为 0x0801 0000,在链接器文件中的定义如下: define region IP_CODE_region = mem:[from 0x08010000 size 0x10000]; place in IP_CODE_region { section IP_Code }; 在本例中,会通过 IAR 使用以下编译指示将要保护的函数强制加载到 IP 代码段: #pragma location="IP_Code" (函数定义) 终端用户项目会使用包含终端用户应用程序使用的函数 IP 代码 API 的 exported_api.h 文件 完整版请查看:附件 |
DM00033344_ZHV1.pdf
下载180.69 KB, 下载次数: 0
兔哥的ST67——【000】ST67模组订购
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
刘氓兔的64位入门挑战【1】——MP257芯片下单和硬件准备
刘氓兔的64位入门挑战【0】——MP257选型