绝大多数现代 ARM 单片机都提供了防止非法读取内部固件的功能。这是保护知识产权和产品安全的关键机制。这些功能通常被称为“读保护”、“代码保护”或“安全特性”。
实现防读取的主要方法有:
熔丝位/选项字节读保护:
原理: 芯片内部有特殊的非易失性存储位(熔丝位或选项字节)。通过编程工具(如 ST-Link, J-Link, 配合厂商的 IDE 或专用工具)设置这些位。
效果:
一旦使能,通过调试接口(如 SWD/JTAG)或系统存储器自举模式直接读取 Flash 内容将被禁止或返回无效数据(如全 0、全 F 或随机数)。
尝试通过调试接口连接芯片可能会被拒绝或需要先解除保护(通常需要芯片擦除)。
级别: 不同厂商和型号提供不同级别的保护:
级别 0: 无保护。
级别 1: 读保护开启。调试接口只能用于调试运行中的代码(需要正确连接),但不能直接读取 Flash/RAM 内容。通常可以通过执行一次芯片全擦除命令来解除保护(这会清空用户 Flash 和选项字节,恢复为级别 0)。
级别 2: 永久性保护(或非常难以解除)。在级别 1 的基础上,禁用芯片全擦除命令。一旦设置,通常无法再通过调试接口连接芯片或修改 Flash。调试接口永久失效(或需要非常规、高成本手段才能恢复,且会破坏原有固件)。这是最高级别的软件读保护。设置前务必确认产品已量产且不再需要更新固件!
|
|