找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 25028|回复: 5
收起左侧

ST MCU芯片加密了还能再次使用吗?

[复制链接]
ID:98618 发表于 2015-12-7 02:37 | 显示全部楼层 |阅读模式
整理:MilerShao

先说明下,这里说的加密仅指对MCU芯片做读保护处理,毕竟MCU芯片加密是个非常宽泛的概念和艺术。

有时会有人就ST MCU读保护加密后能否二次使用的问题进行咨询,偶尔也有极少数人问及ST MCU是否具有加密功能。

ST MCU的芯片都是FLASH型的,不论是STM8系列还是STM32系列都可以做读保护加密,以防程序代码被轻易读出,从而达到保护开发者知识产权等相关权益。关于ST MCU的读保护加密及芯片能否二次使用话题,得按STM8STM32两大系列分开来说,二者在读保护处理上有差异。

 

一、STM8系列芯片读保护实施及解除

 

对于STM8系列芯片,都可以进行读保护。ST官方有提供一个STVP的软件工具【它是经过STTOOLSET这个安装包安装的】,可以对STM8芯片的OPTION项进行编程,将OPTION中的读保护项打开,设置为ON,然后进行芯片编程就能使能芯片的读保护。之后,用户程序代码就不能被读出来了。还有部分STM8芯片【FLASH容量大于等于16K的芯片】往往支持通过UART、CAN、SPI等接口进行的系统编程,即ISP。ST官方有提供了一个Flash loader demonstrator工具软件,也可以利用它对STM8芯片进行芯片读保护加密。

在读保护状态下,既不能读取芯片内的程序代码,也不能对芯片进行再次做程序编写或调试了。

 

 

 

 

那如果想对做过读保护加密的STM8芯片再次使用呢?还是可以利用上面提到的2个工具进行解除读保护。解除读保护后芯片内原来的程序代码全部烟消云散,不复存在

第一种还是通过STVP软件工具,将OPTION项中读保护项ROP关闭,即设置为OFF,然后进行OPITON单独编程,之后芯片内部程序代码全部被擦除,读保护解开,芯片就犹如一颗新的芯片,可以再次使用。

还有一种办法就是,对于支持ISP功能的STM8芯片。利用上面提到的Flash loader demonstrator工具软件,将设置过读保护的STM8芯片进行芯片读保护解除。之后,芯片可以再次使用。

当然,也可以借助其它第三方工具进行上述操作,原理是一样的。另外,除了利用上面提到的软件工具对MCU芯片做读保护加密外,用户也可以自行编程对OPTION项编程而达到对芯片读保护之目的。

二、STM32系列芯片读保护实施及解除

对于STM32芯片的读保护的实施及解除怎么操作呢?目前为止,通用性STM32 MCU有9个系列。其中除了32F1系列只具有1级读保护外,其它8个子系列都具有2级读保护。 也就是说从读保护处理上看,32F1系列跟其它几个芯片要稍逊一筹。 顺便说下,其实后出的基于CORTEX M4的内核STM32F3系列的性价比要远高于32F1系列,支持DSP和FPU,外设更为丰富

                     

ST MCU技术手册上提到3级,即LEVEL 0,LEVEL 1,LEVEL 2。其中LEVEL 0 就是不做读保护级别。如果芯片被设置LEVEL 1读保护,在LEVEL 1级状态下,既不能读取芯片内的程序代码内容,也不能对芯片再次做存储空间的擦写或芯片调试了。FLASH存储器和备份域寄存器都不能被访问,即使强行访问也会出错。实施这步的操作可以利用ST官方的STLINK UTILITY工具、STVP 工具、Flash loader demonstrator来进行,将OPTION里的RDP选项选择LEVEL 1,之后进行编程。

下面是两个工具STLINK UTILITY和STVP的操作界面示意图。

 

 

 

 

此时,LEVEL 1级读保护是可以解除的,同样可以利用上面的工具来完成。操作步骤跟加密动作类似,只是把读保护级别选择为LEVEL 0,然后进行OPTION编程,芯片读保护解除,此时芯片内的程序代码全部清空。显然,经过LEVEL 1读保护后,选项字节的访问是被开放了出来。

至于如何启用LEVEL 2级读保护加密,有2钟方式。第一种就是直接从LEVEL 0通过对读保护选项字RDP进行编程让芯片进入LEVEL 2级保护;还有一种就是从LEVEL 1的基础上,做一次RDP编程进入到LEVEL 2级保护。具体的操作还是可以利用ST官方的STLINK UTILITY工具、STVP 工具、Flash loader demonstrator来进行,将OPTION栏里的RDP选项选择LEVEL 2之后进行编程。操作跟LEVEL 1级读保护一样,只是选项不一样而已。

 

不过LEVEL 2级读保护是不可逆的,即不能像LEVEL 1一样可以被解除。经过LEVEL 2级读保护的芯片,除了内部程序代码不可访问外,连从RAM或系统闪存引导启动的特性及调试模式都被永久禁用了,JTAG调试接口被锁死。此时既不可能通过JTAG调试口访问芯片,也不能通过ISP的方式跟芯片相连来访问芯片或者对RDP选型字节进行修改。即使片内用户程序也只能修改RDP选项以外的部分选项。

总之,经过LEVEL 2读保护加密后,除了用户程序能正常运行外,若还想从外部对芯片做什么调试或修改或擦除后再次使用,那是没机会了,基本上它就是一块砖。如果说经过LEVEL 2级读保护加密的芯片有啥故障想做测试分析的话,即使交到ST 原厂也没有办法。

 

下面是两级读保护加密的不同级别走向示意图。很明显,LEVEL 0/1间是可以往返的,LEVEL 2级就不可返回了。同样,除了利用上面提到的软件工具对STM32芯片做读保护加密外,用户也可以自行编程对OPTION项编程而达到对芯片读保护之目的。

 

小结下:目前STM32的9个系列里面,除了F1系列只有1级读保护外,其它都具有两级读保护。其中2级保护对调试口、系统引导启动功能都予以不可逆的禁用,保护深度、难度都比1级读保护更强。一般调试时不用随意启用LEVEL 2级读保护,不然想修改代码只得换芯片了。只有在产品调试、测试、试产稳定后可以考虑启用LEVEL 2保护。

最后以分享一个问题来结束。如果有人希望产品代码测试验证稳定后将MCU芯片做2级读保护,但又希望未来还可以做程序升级,可行否?如果可行,如何操作?

 

             【抛砖引玉 旨在交流,如有错疏 欢迎赐教】

 

 

回复

使用道具 举报

ID:221675 发表于 2017-7-23 22:52 | 显示全部楼层
收益匪浅收益匪浅。
回复

使用道具 举报

ID:158375 发表于 2017-8-2 17:26 | 显示全部楼层
谢谢。
回复

使用道具 举报

ID:229887 发表于 2017-8-29 15:56 | 显示全部楼层
用加密芯片吧,比较保险。单片机都能被破解。推荐你使用SMEC98SP这个芯片,占用IO少,设计简单
回复

使用道具 举报

ID:225446 发表于 2017-9-4 08:36 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:412641 发表于 2018-10-20 11:17 | 显示全部楼层
讲解的非常好,看了就明白 了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表