本内容介绍单片机加密Hex烧录,包括专用烧录器加密烧录、J-Link加密烧录以及通过mcuisp或FlyMcu加密烧录。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易!

目录:

一、专用烧录器加密烧录Hex
1、使用ST官方的下载器
2、其他公司烧录器
二、J-Link加密烧录Hex

1、简述
2、与J-Link相关的设置

3、烧写文件载入与连接目标
三、通过mcuisp或FlyMcu加密烧录Hex

-----------------------------------------------------------------------------------------------------------------
一、专用烧录器加密烧录Hex
1、使用ST官方的下载器

-----------------------------------------------------------
2、其他公司烧录器

-----------------------------------------------------------------------------------------------------------------
二、J-Link加密烧录Hex
1、简述
本处以烧写STM32F103VET6说明,软件:Flasher_Windows_V722a(百度网盘搜索文件名或移步https://download.csdn.net/download/liht_1634/85077430),实际测试J-Flash V4.90版亦可行。
-----------------------------------------------------------
2、与J-Link相关的设置

若硬件无异常,但一直无法连接上单片机,可降低此处的两个SWD speed的值。

加密芯片后通过Keil的SWD将不能下载程序。
-----------------------------------------------------------
3、烧写文件载入与连接目标

J-Flash 7.22a版本成功下载

J-Flash 4.90版本成功下载
-----------------------------------------------------------------------------------------------------------------
三、通过mcuisp或FlyMcu加密烧录Hex

mcuisp或FlyMcu调用开放的API加密程序。
STM32F系列的MCU提供了号称全球唯一ID的96位序列号。从官方文档RM0008文档里我们看到其主要应用于以下几个方面:
1)用来作为序列号(终端应用或出厂标识记录);
2)用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性;
3)用来激活带安全机制的自举过程;
一个简单的读取例程:
static Int32U CpuID[3];
void GetCpuID(void)
{
          CpuID[0]=*(Int32U*)(0x1ffff7e8);
          CpuID[1]=*(Int32U*)(0x1ffff7ec);
          CpuID[2]=*(Int32U*)(0x1ffff7f0);
}

利用STM32F唯一96bit序列号实现反拷贝加密的源代码:
//---------------------------------------------------------------------------
#include "windows.h"
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
          return 1;
}
//---------------------------------------------------------------------------
//本示例代码用BCB5编写,很容易移植到VC++等编译环境
//导出函数mcuisp_AntiCopy,mcuisp.exe将调用mcuisp_AntiCopy函数来实现反拷贝功能
extern "C" __declspec(dllexport) int __stdcall mcuisp_AntiCopy(
          unsigned char *buf,         //FLASH内容存储缓冲
          DWORD buflen,               //FLASH代码长度(字节)
          DWORD startaddress,         //FLASH的地址偏移,STM32F一般为0x08000000
          unsigned char const *inbuf, //前12字节为96bit的芯片序列号
          DWORD inputbuflen           //序列号信息的长度
          );
//--
int __stdcall mcuisp_AntiCopy(
          unsigned char *buf,         //FLASH内容存储缓冲
          DWORD buflen,               //FLASH代码长度(字节)
          DWORD startaddress,         //FLASH的地址偏移,STM32F一般为0x08000000
          unsigned char const *inbuf, //前12字节为96bit的芯片序列号
          DWORD inputbuflen           //序列号信息的长度
          )
{
  //mcuisp_AntiCopy根据FLASH内容和芯片序列号,经过运算后,修改FLASH内容
  //本例中,简单的把序列号拷贝到0x08010000的位置
  //可以在STM32的代码中比对0x08010000和0x1ffff7e8的内容,相符才正常运行
  //实际应用中,可以采取比较复杂的算法
  memcpy(buf+0x10000,inbuf,12);
  return 0;
};
上述DLL与mcuisp配合,即可实现STM32F AntiCopy功能。由于算法由用户自己把握,自由发挥,可最大限度保护用户的代码。

-----------------------------------------------------------------------------------------------------------------

STM32单片机-加密烧录Hex相关推荐

  1. CH340进行STM32单片机程序烧录

    目录 代码: 接法: 结束: 刚写完32点灯程序,接下来打算用CH340进行烧录 代码: #include<stm32f10x.h> void led_init(){ GPIO_InitT ...

  2. STLINK怎么与STM32单片机连接

    STLink是ST官方开发的单片机仿真工具,可以烧写程序.在线仿真,使用非常方便.STLink具有两种接口,分别为:1)SWD模式;2)SWIM单总线模式.SWD模式主要针对STM32系列的单片机,而 ...

  3. 单片机搭建环境烧录方法_万物互联-stm32单片机简介、烧录、编程及其项目环境搭建...

    万物互联-stm32单片机简介.烧录.编程 前言:stm32单片机这里给出简单介绍,给不了解的朋友普及下硬件端的基本知识,叙述的较为简单,想深入研究的朋友可以去一些官方网站.论坛.博客汲取知识.最下端 ...

  4. STM32单片机使用SEGGER J-Flash 烧录的方法

    STM32单片机使用SEGGER J-Flash 烧录的方法 1. 烧录环境需求 硬件需求: 电脑: 装有Windows 7 及以上操作系统的电脑(32位或64位都可以) 烧录工具:J-Link V8 ...

  5. STM32单片机烧录失败汇总

    STM32单片机烧录失败汇总 文章目录 STM32单片机烧录失败汇总 前言 烧录不成功的排查方法 一.硬件问题 1 单片机ADC参考电压引脚,VDDA引脚悬空导致程序不能烧录 2 IO复用引发的血案 ...

  6. 5加载stm32 keil_快速入门STM32单片机-软件篇

    关于这个STM32的编程开发环境Keil,网上有太多相关的资源了,而且大都讲解的非常详细.所以本篇文章无意于深入细节,只会提供我学习时候的一些体会,帮助你更好的掌握相关知识. 1.标准外设库(Stan ...

  7. STM32单片机程序dll实现

    简介 一个Windows程序一般是由一个exe和多个dll文件组成,在exe程序运行时调用dll的二进制代码,这样做相对所有的程序都写到一个exe文件里边有有几个优势: 1.增加代码的复用,比如Dui ...

  8. STM32单片机(三).STM32单片机的开发方法

    经过前两章节对STM32的简单介绍,在接下来的几个章节中开始进行STM32单片机的软件开发实践,所使用到的工具有Keil5.STM32CubeMX以及串口软件.对于STM32F1系列的单片机,其存储器 ...

  9. Vscode开发STM32单片机程序

    STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的.这里介绍一些使用 gcc + vscode 开发单片机程序的经验.(这里不解释 gcc 是什 ...

最新文章

  1. H2Database 转义符
  2. 大数据集群搭建之Linux的安装(一)
  3. 一年前3-1对应阿里P7,贬值得有点快,但说对标好像差点意思...
  4. python nums函数获取结果记录集有多少行记录_Python数据分析——Pandas数据结构和操作...
  5. getElement四种方法返回的不同
  6. MySQL比like语句更高效的写法
  7. UNIX环境高级编程之第10章:信号
  8. python实现xgboost算法
  9. 《21天学通C语言》总结(2)
  10. 读《About Face 4 交互设计精髓》19
  11. 通信原理及matlab仿真实验指导书,通信原理实验指导书——2015.pdf
  12. coherence mysql_Coherence代理的负载均衡
  13. Unity 之 发布PC端CPU高占用温度高的问题解决方案
  14. UPC 小澳的葫芦 (最短路+01分数规划 )
  15. Oracle 11g 学习笔记-6(触发器、函数、存储过程、程序包)
  16. 决策树预测音乐喜好(弱)
  17. 同花顺程序交易接口实现类
  18. 大学生实习证明怎么获得?
  19. 3D目标检测之数据集
  20. iphone X 屏幕适配

热门文章

  1. JavaSE基础学习——内部类
  2. 如何利用Kubernetes实现自动弹性伸缩
  3. bootstrap手机界面自适应
  4. WEB端三维可视化(threejs)02
  5. python学习—400行纯代码学完Python基本入门操作
  6. 单隐层BP神经元个数对迭代步数和预测误差的影响
  7. 技术规模化、复杂化?看作业帮如何利用OpenCloudOS解决技术难题!
  8. nuxt 使用vuex在模块中无法调用全局的store
  9. 如何快速接手并熟悉新项目
  10. AcWing 1113. 红与黑 【 DFS深度优先搜索 】 题解