首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修经验技巧
Flash型单片机的加密与解密的方法
来源:本站整理  作者:佚名  2010-07-05 10:15:36



  ·完全加密
    所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作。在MC9S12DP256单片机中,加密是通过对某一Flash单元($FF0F)编程来实现的。加密后的芯片,BDM编程器对Flash的读操作就被禁止了。

  采用完全加密,读取ROM代码的可能性就不存在了,这是一种最为“安全”的加密方法。如果用户想修改ROM的内容,唯一的办法就是将Flash的内容全部擦除,这一操作可以通过BDM编程器来完成。

  使用BDM编程器擦除FLASH ROM和EEPROM的过程与在普通模式下对片内的Flash ROM擦除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由BDM命令来实现。通过BDM编程器将一连串完整的擦除指令序列送给单片机,就可将Flash ROM和EEPROM的内容全部擦除了。

  在全擦除操作完成后,BDM编程器将系统复位,系统会自动检查全擦除操作是否成功。如果成功,BDM状态寄存器的UNSEC位会自动置“1”,系统进入解密状态。

  由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。

  ·使用密码的加密为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。

  使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。

  解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用BDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。

  假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:

;******************
;*  TEST KEYS 
;******************
TESTKEYS
     BSET  FCNFG,$20             ;置KEYACC为1
     LDD   KEY0
     STD   $FF00
     LDD   KEY2
     STD   $FF02
     LDD   KEY4
     STD   $FF04
     LDD   KEY6
     STD   $FF06                  ;验证KEY0-KEY7
     BCLR  FCNFG,$20     ;清KEYACC为0
  LDAA  FSEC
ANDA  #$03
CMPA  #$02
BNE   FAIL                   ; 是否验证成功?
SUCCESS          ; 密码验证成功
LDAA  FSTAT      ; 清除Flash状态寄存器
     ORAA  #%00110000
     STAA  FSTAT
     LDAA  #0
     STAA  FCNFG
     BRCLR FSTAT,$80,*
     LDD   #$FFFE
     STD   $FF0E                  ; 改写加密状态,复位后系统不再加密
     LDAA  #$20
     STAA  FCMD                 
     BSET  FSTAT,#$80             ; 开始执行
     BRCLR FSTAT,$40,*   
   RTS                          ; 返回
FAIL RTS

    程序返回后,如果用户输入的密码和原值符合,系统将会把保密寄存器FSEC的最后两位SEC[1:0]改写到未加密的状态,系统自动解密。如果验证没有通过,系统将保持加密状态。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:110,875.00000 毫秒