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

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

  • 相关阅读:
    JavaSE 学习笔记04丨异常
    Codeforces Round #677 (Div. 3) E、G题解
    JavaSE 学习笔记03丨继承、接口、多态、内部类
    ftp通过了用户验证但是连接超时
    实型变量
    3dmax放样
    画直线算法
    VAE变分自动编码器
    RNN 、LSTM长短期记忆网络
    java比较字符串
  • 原文地址:https://www.cnblogs.com/lifexy/p/8669916.html
Copyright © 2020-2023  润新知