20130426-[转]分享STM32代码读保护个人解决方案,有需要的请来验证一下!

原文地址:http://www.amobbs.com/thread-5513417-1-1.html

稍加编辑。

 

之前也看到有网友提出代码保护的问题,辛苦写的程序,怎么着也不想被别人拿去用!
刚好前一段有个项目完成了,在产品发出去的时候按照老总吩咐,加了代码的读保护!
现在就把之前的工作做个总结,以便哪天忘记,可来此查询,也方便网友使用,当然,这个也可能有人发现了,如果你已经知道该方法,或者有更好的方法,请不吝赐教

步骤:
1.准备工作:HEX文件和JLINK驱动(本人使用的是Setup_JLinkARM_V415e)
安装完毕后,可以在开始--所有程序--SEGGER--J-Flash ARM打开该应用程序,如下图

 

先进行一下设置,对要写入的芯片和写入方式
选择芯片型号 

 

选择JATG还是SWD

 

2.打开要烧写的HEX文件:File--Open data file ,可以下拉选择HEX文件类型

 

3.连接要写入的芯片:Target-Connect

 

4.写入代码:Target--Program & Verify(F6)

(到此,就是代码的写入过程,下面是加读保护的步骤)


5.加读保护:Target---Secure chip,点击是,就是加上了读保护!

验证方法,可以使用一个没有加读保护的芯片,重复步骤中的3,连接上之后,read back一下,看看是否能读出?

 

然后再使用一个加了读保护的芯片,重复步骤中的3,连接之后,read back一下,看看是不是真的不能读出了,如果成功加了读保护,它会一直停在那里,数据一直读不出来,最后弹出一个错误警告!

 

 

到此,读保护已经加载进去了!
可是有的时候,你突然发现你的代码需要更新,如果你不解除读保护功能的话,你将很难再次将程序写入,解除方法也就是步骤中的5项中的反操作:Target---Unsecure chip
解除成功后,你就可以再次写入你更新后的代码了。并没有网友所说的要更改BOOT0和BOOT1的设置,等等。。。

(BOOT0和BOOT1用来改变程序从哪个区运行,本人遇到过把JTAG的RST引脚Remap成GPIO时,禁用JTAG后需要改变BOOT0和BOOT1来进入ISP模式来探险Flash,这里是加入写保护,而非禁用JTAG,故可以不改变BOOT0和BOOT1的设置。不知理解的是否正确)

这个加载代码读保护功能的步骤可能对有些人来说还是比较麻烦的,毕竟产品多的时候,写入之后还要按一下写保护命令,对于产线操作员来说,可能一时疏忽忘记其中一个,就会造成代码的外泄,是不是应该还有更简单的办法一键写入呢,答案是肯定的!
可惜此方法不是我发现的,是我们的项目经理

具体做法,就是要在生成HEX文件之前,要多几个步骤
1.首先,加载: C:\Keil\ARM\Boards\Keil\MCBSTM32\Blinky文件夹中的一个STM32F10xOPT.s文件

 

2.修改下面两个值为1

 

3.生成HEX文件之前务必进行一下此配置

 

这样的话,就简单的一个HEX文件就会使你的产品流入市场之后,即便是被抄板成功,也不会是代码流出了
当然,必须保证自己公司的员工不会外泄。。。

个人之见,如果大家有更好的方法,请指教一下!谢谢


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值