前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STM32-对芯片启动读保护,实现加密(详解)

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

作者头像
诺谦
发布2018-04-11 11:36:56
1.5K0
发布2018-04-11 11:36:56
举报
文章被收录于专栏:Linux驱动Linux驱动

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()函数,便可以取消保护了

具体参考:https://wenku.baidu.com/view/e086f59dc8d376eeafaa3116.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档