STMCU小助手
发布时间:2023-1-7 11:58
|
所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过这两种方式中的任何一种方式读出:通过调试器(JTAG或SWD)和从RAM中启动并执行的程序。我们这里程序加密的目的是防止板子中的程序被其他人读出使用,这里有两种方法可供使用: 1.禁止读出Flash存储器内容; 2.STM32用ID加密程序; H A8 y; }: f) I 这里我们分别对这两种方法进行介绍。5 p' t' u: f' M/ |3 N 2 a5 c0 R x. l: g" B! F/ h! P* X 一.禁止读出Flash存储器内容1 v" ~- B/ M6 J( C+ M0 C' U! a 这种方法主要是防止程序被读出,正如文章开头所说,一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过这两种方式中的任何一种方式读出:通过调试器(JTAG或SWD)和从RAM中启动并执行的程序。这是也无法对flash进行烧写程序了,所以使用时需要谨慎。下面简单介绍下使用方法。 1.在程序中包含#include "stm32f10x_flash.h"头文件 并在这条语句前面加入 这一行话:#define _FLASH_PROG; //flash读写保护时需要加入的 ; R3 s) l2 z' i 2.实现flash的读保护:
3.清除flash的读保护:
主要就是以上三步,具体如何在程序中使用,看自己的需求。) R- {3 X6 V$ B" ]. n # u0 U( F/ Y; B, g* Y 二.STM32用ID加密程序* h# J0 m" L) b: f 每个STM32芯片都有一个全球唯一的ID,这个唯一码可以利用作软件加密,ID号是12个字节大小共96位,ID号的起始地址是0x0x1FFFF7E8。利用这个ID码程序在运行时比较ID码是否正确来判断是否往下执行程序。下面简单介绍下使用方法。; _5 k) B# b5 G6 x0 b 1.读取目标板子的ID号,并修改程序将ID号保存在程序中:8 @) ]- v; Q" D- k8 k, g" M/ @
2.将修改后的程序再下载到目标板子上这时就可以使用上面读出ID来对比当前板子上ID是否一致来确定程序是否执行。 这个方法就算程序被其他人读取也无法在其他板子上运行,因为ID不一致。麻烦的地方是每块板子的程序的ID不一样造成程序维护麻烦。+ @* \8 T$ ^6 F; P8 ? [ 2 _4 \1 G4 n+ j5 t. r9 J5 Q 实际怎么使用还是要看当时情况,也可能用不上这两种方法。 ———————————————— {8 [) l3 b8 b6 \' a4 d1 ` 版权声明:阿木zhang$ I+ R4 G& ~( s$ F6 d4 e( q |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版