灵动微mm32f003通过flash读写保护设置,实现对程序的加密保护

灵动微mm32f003通过flash读写保护设置,实现对程序的加密保护,第1张

项目终于完工,准备批量生产。考虑到知识产权的保护,需要对MM32F003程序进行加密保护。如果不做任何处理,就把产品投入市场,万一竞争对手直接抄袭硬件,拷贝程序,那自己辛辛苦苦的劳动成功就只能拱手让人了。

好在MM32F003这颗M0芯片,比起老古董51单片机要强大了许多,自带flash的写、读保护功能。在用户手册flash的章节,可以看到相关的介绍。如果需要在自己的程序里面实现flash区域的读写保护功能,请直接与原厂索要相关资料。反正实现起来比较复杂,我试了两天,放弃了。

另外一个比较简单的方法就是直接使用灵动微官方的MM32-LINK工具,直接配置相应的寄存器,就可以实现flash的读写保护。

具体 *** 作步骤可以查看官方文档《qs_MM32-LINK_V1.1》,我这边只简要说明一下流程和注意事项。

运行mm32-link program程序,菜单project->OPTByte...,打开OPTByte configure,如下图:

勾选 Address 前面的复选框即开启写保护。

菜单project->Block Protect...,打开Block Protect configure,如下图:

勾选 Block0 前面的复选框即开启读保护。

点击 program 按钮,见下图:

点击后d出新的窗口,见下图:

点击 program 按钮会完成烧写动作。注意右侧的 OPTByte 和 Protect 复选框,只有选中时才能写入flash读写保护的配置。

我就是在这里翻车的,试了好久,有时可以成功配置标志位,有时又不能成功。后来请原厂的Z工帮忙远程 *** 作,才发现原来有一个细节我没有注意到。在主界面的下侧有几个状态指示灯,当芯片的指示灯为红色时,是无法烧写程序的,说明mm32-link与芯片没有建立连接,需要将目标板重新断电再上电,才能正常烧写。

芯片写入读写保护的配置后,使用keil就无法烧写程序了,只有通过mm32-link program工具恢复标志位,才能烧写。

读写保护之后,如果你想通过jflash工具读取目标板的程序,只能读出全FF的文件。通过mm32-link program读出的程序虽然看似有意义,但是某些数据是错误的,重新写入目标板会导致程序工作异常。

使用mm32-link program工具,去掉OPTByte和Block Protect的复选框,重新烧写标志位即可。

1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确

3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。

四、做软件加密时注意

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870

2, 利用校验和或是crc对程序区进行校验,防止改程序

给文件加密,我建议您使用超级加密3000试试。

1

下载安装超级加密3000。

2

然后在需要加密的文件上单击鼠标右键选择加密。

3

在d出的文件加密窗口中设置文件加密密码就OK了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12060795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存