173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32烧写防读

keros@mark 2023-03-19 资讯中心

怎样对STM32加密,防止被读出复制

1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确

3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。

四、做软件加密时注意

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870

2, 利用校验和或是crc对程序区进行校验,防止改程序

stm32串口烧写 无法解锁读保护

CPU Flash读保护使能后,仿真器调试会失败。J-LINK有个解锁菜单,需要解锁才能正常再次烧写程序。当然解锁会导致Flash内容被全部擦出。 启动"J-Flash ARM"工具,Target-unsercure chip 就解除了芯片的读保护。Target-unsercure chip 后一定要上电复位,系统不复位是不行的。m r w u .@ n e t去掉@欢迎访问

cms79ft738烧写器如何设置芯片读保护

单片机

STM32-对芯片启动读保护,实现加密(详解)

STM32可以对存储在flash上的程序进行读保护.

启动读保护后,用户就不能再读写程序了.

所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序

头文件位于:#include "stm32f10x_flash.h"

启动保护,用在main()函数初始化时调用:

void Set_Protect(void) //启动保护

{

if(FLASH_GetReadOutProtectionStatus() != SET)

{

FLASH_Unlock(); //解锁

FLASH_ReadOutProtection(ENABLE);

FLASH_Lock();//上锁

}

}

注意:

当代码第一次调用Set_Protect()函数启动读保护时。

期间不能再次调用Off_Protect()函数关闭读保护,需要重新断电才能关闭读保护(因为Flash状态启动读保护后,不能立即设置Status=1)

关闭读保护,在串口接收某个有效数据或按下某个按键时,调用:

void Off_Protect(void) //关闭保护

{

if(FLASH_GetReadOutProtectionStatus() != RESET)

{

FLASH_Unlock(); //不解锁FALSH也可设置读保护

FLASH_ReadOutProtection(DISABLE);

FLASH_Lock();//上锁

}

}

运行测试

1.第一步,下载程序

2.下载成功后,再次烧写程序,校验是否启动读保护(因为启动读保护后,不能进行读写程序了)

3.通过ST-LINK Utility工具尝试连接芯片,发现确实不能读数据了

然后只要代码调用Off_Protect()函数,便可以取消保护了

本文标签:stm32烧写防读

产品列表
产品封装
友情链接