在嵌入式应用开发中,应用开发完成后往往需要对芯片中的程序进行加密处理,用以保护程序安全(不至被竞争对手从芯片把程序固件考走),本节将给大学介绍一个如何实现程序自动给芯片加密功能。下面给大家介绍一个STM32 用程序给MCU加密码的方法:

标准库方式:

// 芯片自加密
void FLashProtectCheck(void)
{
    FLASH_Unlock();    // 解锁
    FLASH_UnlockBank1();
    
    
    if( RESET ==  FLASH_GetReadOutProtectionStatus() )
    {
        while( FLASH_COMPLETE != FLASH_ReadOutProtection(ENABLE) );
        // NVIC_SystemReset(); 
    }
    
    FLASH_LockBank1();
    FLASH_Lock();  // 上锁
}

HAL 库方式:

// 芯片自加密
void FLashProtectCheck(void)
{
    FLASH_OBProgramInitTypeDef OBInit;
    
    HAL_FLASH_Unlock();     // 解锁
    HAL_FLASH_OB_Unlock();
    
  HAL_FLASHEx_OBGetConfig( &OBInit );
    if( OBInit.RDPLevel !=  OB_RDP_LEVEL_1 )
    {
        OBInit.OptionType = OPTIONBYTE_RDP;
        OBInit.RDPLevel = OB_RDP_LEVEL_1;
        HAL_FLASHEx_OBProgram( &OBInit );
    }
    
    HAL_FLASH_OB_Lock();
    HAL_FLASH_Lock(); // 上锁
}

上面的程序只开启了FLASH的读保护,这样操作后,用外部的工具,如JLINK,STLINK等工具就无法读取芯片的固件了!!

STM 32如何实现程序自加密相关推荐

  1. QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  2. STM 32简单编程实例

    目录 一.STM 32程序 1.建立一个工程文件 2.选择STM32芯片 3.对所选芯片进行设置 4.编写源程序 5.编译结果 二.程序的仿真调试 1.仿真前的设置 (1)点击魔法棒,进入设置界面 ( ...

  3. 6月24日科技资讯|QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 「CSDN ...

  4. 基于STM 32、矩阵键盘和独立键盘实现LCD显示的智能计算器(带括号的加减乘除运算、混合四则运算)——普中科技单片机开发试验仪嵌入式开发

    0 引言 智能计算器是嵌入式开发的入门项目,本章使用STM 32芯片作为CPU,并将矩阵键盘和独立键盘作为输入外设,LCD1602作为显示屏,实现可输入的可视化智能计算器. 备注:最终生成的可执行HE ...

  5. Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序

    目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...

  6. 您没有足够的全新为该计算机所有用户安装,很抱歉,无法安装Office(64位),因为您的计算机上已经安装了这些32位Office程序解决办法...

    64位与32位版本的Office程序不兼容,因此您一次只能安装一种类型,请尝试改为安装32位版本的Office ,或卸载其他32位Office 程序,然后再次尝试此安装. 在安装Office 2016 ...

  7. uni-app 实现小程序rsa加密(非对称加密原理)

    uni-app 小程序 rsa 加密 使用的是 jsencrypt main.js文件 //引入js文件 import security_http_config from './common/secu ...

  8. 32位应用程序单个进程最大占用内存是4GB

    32位应用程序单个进程最大占用内存是4GB左右,这个问题是因为需要测试大数据里才能体现出来的问题,所以反反复复花了一周多的时间来搞定它,希望大家在对它有一个印象.64位的应用程序的时候就不会有这个限制 ...

  9. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...

    招人背景 首先说一下朋友的公司招人背景,公司招聘PHP高级岗位,负责公司的B2B项目研发.并发问题的处理和解决.领导给了他两个要求:(接下来的讲述我会以朋友的第一人称来进行) (1)技术比较好 (2) ...

最新文章

  1. 处理表格数据时,去除表头两种写法,jquery 删除表头之外的数据
  2. 你什么时候使用git rebase而不是git merge?
  3. 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
  4. Java socket调用Http协议Get请求
  5. php empty();和isset();
  6. springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载
  7. 小米登录协议分析_小米回应小米11充电头兼容问题
  8. 短语密码_使用密码短语以提高安全性
  9. 软件测试——性能测试、压力测试、负载测试等详解
  10. 设计模式之笔记--简单工厂模式(Simple Factory)
  11. 【云计算】阿里云云计算架构师ACE成长路线v2
  12. mysql可靠性优先策略
  13. Atiitt 图像处理的常见功能业务用途与类库与功能实现 目录 1. 常见业务场景 2 1.1. 缩略图 2 1.2. 判断图像大小分辨率要求 长度 宽度 2 1.3. 图像格式 转换,,黑白图像
  14. 5 EDA技术实用教程【基本语句2】
  15. 同态滤波详解(新手入门必看)
  16. zebradesginer zpl代码,如何从ZebraDesigner标签获取ZPL代码?
  17. redis 集群 set key报错CLUSTERDOWN Hash slot not served
  18. html按钮动态效果,8款超酷而实用的CSS3按钮动画
  19. 初学C语言中的浮点数
  20. 微信小程序实现添加银行卡,银行卡号每隔四位插入空格并展示时仅显示前后四位,或者仅显示后四位(超详细)

热门文章

  1. PCB 内网实现《OCR文字识别》实现逻辑
  2. 上传大数据到SharePoint 2010
  3. visual studio 添加链接文件
  4. C语言scanf函数的返回值、scanf函数的安全版、在while条件中使用scanf函数
  5. 初步了解超图两种3D客户端 - iClient3D for_WebGL 和 iClient3D for_Plugin
  6. 十分良心!全网最详细的Java 自动内存管理机制及性能优化教程
  7. 致年轻的创业者:人脉没那么重要
  8. JavaScript 兼容新旧版chrome和firefox的桌面通知
  9. 【整理总结】Visual Studio 扩展和更新
  10. JS解析XML文件和XML字符串