完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为了知识产权的保护,或其它一些目的,为了保护单片机中的软件不能被读出,可以选择具有加密功能的单片机,保护代码不被非法读取。由于MSP430可以进行FLASH自编程,当然就可以进行可升级的程序设计,以后可以通过串行口或者其它方式进行固件的升级。 用MSP430设计的硬件可能与计算机上运行的上位机程序协作完成一定功能,这样就可以在MSP430与软件之间建立一定的协议进行软件和硬件的保护,比如硬件的序列号,或软件的序列号,当软件发现硬件的序列号不正确时而不继续执行,当硬件发现使用的是非却破解版的控制程序,就可以进行自毁,自动销毁内部所有的程序,使得单片机程序被清空而不能使用。 进行自毁还可以产生硬件的损坏,如地求板上提供12V或更高的电压,通过一定的检测电路检测是否满足,不满足要求,程序则不继续执行,当需要自毁时把12V的电压直接加到3.3V或5V的器件上去进行硬件销毁。但这在一定程度上造成了危险性,如果设计不善可能会引发火灾,并推荐使用。 下面只说MSP430实现程序自毁。 方案1:通过全部擦除FLASH的指令擦除全部FLASH内容,但当前的程序正在使用FLASH,使得该指令不能够有效执行,这些操作在程序中不能完成。 方案2:将FLASH中擦除操作代码复制到RAM中,因为MSP430是冯氏结构,RAM与FLASH为同一地址空间,而程序中擦除代码用到的在RAM中的变量所使用的RAM只要不被覆盖,程序应该能够在RAM中执行,而且代码中不能有跳转指令,因为这些指令在编译成机器码时跳转的地址已经确定,使用这些指令就会使使程序跑飞,而会用访问FLASH,这样也会导致擦除操作失败。在开始擦除操作后还不能退出RAM进入到FASH,这样一访问FLASH也会导致擦除操作失败。 通过试验方案2并没有成功,可能复制到RAM后又跳转到了FLASH中造成操作失败,需要修改代码进一步试验。 方案3:擦除除擦除操作代码外的所有程序。这样也只留下很小一部分不重要的代码,实现代码保护的目的可以达到。 首先找到当前代码段所在的位置,通过块擦除操作擦除除当前代码所在块的所有程序;然后擦除该块中当前代码面前、后代码,这些操作不能通过擦除操作,但可以通过字节或字写入操作,因为写操作只能把1写成0,干脆直接全写成0,这样就可以仅剩下擦除操作的一小段代码,为了停止操作失败,在操作等待时做一无限循环,不要跑到其它位置的FLASH,以防碍扣除操作。 该方法已经取得成功。 |
|
相关推荐
25 个讨论
|
|
够犀利!有批量生产的方法吗?
|
|
|
|
|
|
赞一个,太犀利了
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3039个成员聚集在这个小组
加入小组2940 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3617 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2351 浏览 1 评论
4817 浏览 1 评论
2579 浏览 1 评论
1337浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3618浏览 2评论
2940浏览 1评论
1526浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 14:00 , Processed in 1.688908 second(s), Total 68, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号