MSP430自毁功能设计

2018-07-11 20:51:54编辑:什么鱼 关键字:MSP430  自毁功能

了知识产权的保护,或其它一些目的,为了保护单片机中的软件不能被读出,可以选择具有加密功能的单片机,保护代码不被非法读取。由于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,以防碍扣除操作。

该方法已经取得成功。


关键字:MSP430  自毁功能

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news071140247.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430G2553 WDT的看门狗模式例子
下一篇:MSP430F149单片机实现uart数据接收中断

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430G2553电子时钟实验

用msp430g2553控制1602液晶显示时间,并可以通过按键设置时间,我做了正计时和倒计时两种模式/*********************************************************************msp430g2553与1602引脚连接情况* PIN1 --> 地* PIN2 --> VCC(一定要接+5V)* PIN3 -->仿真时悬空,实际电路 2K电阻-->地 (电阻可以是500-2k的,改变电阻可以改变字符显示的亮度,电阻接不好会导致什么都不显示)* PIN4 --> RS --> P1.6* PIN5 --> R/W -->
发表于 2018-07-14 20:42:53

msp430按键控制LED灯

#include "io430.h"/*       按键控制lLED灯的亮灭,有两种方法.       方法一:中断功能.                          方法二:利用 if(P4IN&BIT2)判断即可.       写代码时,尽量按照步骤来,避免因疏忽而浪费大量时间找bug.*/int main( void ){ 
发表于 2018-07-14 20:41:09

MSP430G2553 1602显示字符

代码:# include "msp430G2553.h"# define uchar unsigned char # define uint unsigned int # define LCD1602_RS_H  P2OUT|=BIT0# define LCD1602_RS_L  P2OUT&=~BIT0# define LCD1602_RW_H  P2OUT|=BIT1# define LCD1602_RW_L  P2OUT&=~BIT1# define LCD1602_EN_H  P2OUT|=BIT2# define LCD1602_EN_L
发表于 2018-07-14 20:40:26

MSP430G2553串口通讯 发送接收

数据发送代码:void UartPutchar(unsigned char c){while(!(IFG2 & UCA0TXIFG));  //待发送为空UCA0TXBUF=c;IFG2 &=~UCA0RXIFG;}只需要将那个buf变量的值改变即可接收数据#pragma vector=USCIAB0RX_VECTOR__interrupt void USCI0RX_ISR(void){while (!(IFG2&UCA0TXIFG));                // 等待发送完成//UCA0TXBUF
发表于 2018-07-14 20:33:37

MSP430按键控制串口发送数据

#include <msp430.h>//MSP430G2553  - 使用USCI_A0,Up Mode, DCO SMCLK////  介绍: 该程序利用USCI_A0来与计算机通信 通过接在P1.3口的按键来实现按一次发送一个数据//  波特率9600,数据格式8N1////  ACLK = 32768, SMCLK = 32768  MCLK =  DCO-16M////               MSP430G2553//        
发表于 2018-07-14 20:30:59

MSP430 - G2553之串口操作

#include <msp430.h> void delay1s(void) {  int t = 1000;  while (t--)    __delay_cycles(1000);    } #define UART_TXD 0x02                                  // TXD on P1.1 (Timer0_A.OUT0
发表于 2018-07-14 20:26:54

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved