STM 32如何实现程序自加密
在嵌入式应用开发中,应用开发完成后往往需要对芯片中的程序进行加密处理,用以保护程序安全(不至被竞争对手从芯片把程序固件考走),本节将给大学介绍一个如何实现程序自动给芯片加密功能。下面给大家介绍一个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如何实现程序自加密相关推荐
- QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持 | 极客头条...
快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...
- STM 32简单编程实例
目录 一.STM 32程序 1.建立一个工程文件 2.选择STM32芯片 3.对所选芯片进行设置 4.编写源程序 5.编译结果 二.程序的仿真调试 1.仿真前的设置 (1)点击魔法棒,进入设置界面 ( ...
- 6月24日科技资讯|QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 「CSDN ...
- 基于STM 32、矩阵键盘和独立键盘实现LCD显示的智能计算器(带括号的加减乘除运算、混合四则运算)——普中科技单片机开发试验仪嵌入式开发
0 引言 智能计算器是嵌入式开发的入门项目,本章使用STM 32芯片作为CPU,并将矩阵键盘和独立键盘作为输入外设,LCD1602作为显示屏,实现可输入的可视化智能计算器. 备注:最终生成的可执行HE ...
- Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序
目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...
- 您没有足够的全新为该计算机所有用户安装,很抱歉,无法安装Office(64位),因为您的计算机上已经安装了这些32位Office程序解决办法...
64位与32位版本的Office程序不兼容,因此您一次只能安装一种类型,请尝试改为安装32位版本的Office ,或卸载其他32位Office 程序,然后再次尝试此安装. 在安装Office 2016 ...
- uni-app 实现小程序rsa加密(非对称加密原理)
uni-app 小程序 rsa 加密 使用的是 jsencrypt main.js文件 //引入js文件 import security_http_config from './common/secu ...
- 32位应用程序单个进程最大占用内存是4GB
32位应用程序单个进程最大占用内存是4GB左右,这个问题是因为需要测试大数据里才能体现出来的问题,所以反反复复花了一周多的时间来搞定它,希望大家在对它有一个印象.64位的应用程序的时候就不会有这个限制 ...
- 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...
招人背景 首先说一下朋友的公司招人背景,公司招聘PHP高级岗位,负责公司的B2B项目研发.并发问题的处理和解决.领导给了他两个要求:(接下来的讲述我会以朋友的第一人称来进行) (1)技术比较好 (2) ...
最新文章
- 处理表格数据时,去除表头两种写法,jquery 删除表头之外的数据
- 你什么时候使用git rebase而不是git merge?
- 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
- Java socket调用Http协议Get请求
- php empty();和isset();
- springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载
- 小米登录协议分析_小米回应小米11充电头兼容问题
- 短语密码_使用密码短语以提高安全性
- 软件测试——性能测试、压力测试、负载测试等详解
- 设计模式之笔记--简单工厂模式(Simple Factory)
- 【云计算】阿里云云计算架构师ACE成长路线v2
- mysql可靠性优先策略
- Atiitt 图像处理的常见功能业务用途与类库与功能实现 目录 1. 常见业务场景	2 1.1. 缩略图	2 1.2. 判断图像大小分辨率要求 长度 宽度	2 1.3. 图像格式 转换,,黑白图像
- 5 EDA技术实用教程【基本语句2】
- 同态滤波详解(新手入门必看)
- zebradesginer zpl代码,如何从ZebraDesigner标签获取ZPL代码?
- redis 集群 set key报错CLUSTERDOWN Hash slot not served
- html按钮动态效果,8款超酷而实用的CSS3按钮动画
- 初学C语言中的浮点数
- 微信小程序实现添加银行卡,银行卡号每隔四位插入空格并展示时仅显示前后四位,或者仅显示后四位(超详细)
热门文章
- PCB 内网实现《OCR文字识别》实现逻辑
- 上传大数据到SharePoint 2010
- visual studio 添加链接文件
- C语言scanf函数的返回值、scanf函数的安全版、在while条件中使用scanf函数
- 初步了解超图两种3D客户端 - iClient3D for_WebGL 和 iClient3D for_Plugin
- 十分良心!全网最详细的Java 自动内存管理机制及性能优化教程
- 致年轻的创业者:人脉没那么重要
- JavaScript 兼容新旧版chrome和firefox的桌面通知
- 【整理总结】Visual Studio 扩展和更新
- JS解析XML文件和XML字符串