新闻中心

EEPW首页>手机与无线通信>设计应用> 基于USB总线的MC68HC908JB8 Flash在线编程

基于USB总线的MC68HC908JB8 Flash在线编程

作者: 时间:2011-05-11 来源:网络 收藏
1.3 安全密钥防止非法访问

本文引用地址://m.amcfsurvey.com/article/156311.htm

  $FFF6~$FFFD的8字节内容用于进入JB8的监控模式。监控软件能完全访问F1ash区,正常情况下,8字节的安全密钥是不可能被猜出的,因为这些中断服务程序的起始地址是被固化到用户代码区中的。

  1.4 在ICP期间防止掉电的措施

  配置ICP时必须考虑到ICP子程序运行过程中有可能掉电,系统必须能够恢复和完成ICP程序。ICP_FLAG字的设计正是此目的。复位后读ICP_FLAG字,决定JB8是进入正常的工作模式还是ICP模式。该字地址是$F7FE,在用户代码区的最后2个字节。复位之后,复位向量地址$FFFE~$FFFF指向ICP程序入口地址$F800,一旦初始化完成,检查进入ICP模式或用户模式的条件。在以下2种情况下JB8进入ICP模式:

  ①“假”向量的高字节$FF7C是无效的,即不在$DC和$F7之间;

  ②ICP_FLAG字不等于校验和。否则,JB8进入正常的工作模式。

  1.5 ICP

  ICP流程图如图3所示。

ICP编程流程图

  一旦用户代码被烧入芯片,而“假”向量的高字节在无效的范围($DC~$F7),同时ICP_FLAG被写入校验和(不能是$0000),则在插拨设备后,ICP代码跳转到正常操作的用户模式。

  进入JB8 ICP模式有2种方式:ICP_FLAG被写入$0000,或者PTA0被下拉成低电平。用户代码包括特别的命令来编写ICP_FLAG,一旦ICP_FLAG被写入零,则再次插拨上电后,JB8进入ICP模式。ICP指令支持有限的标准协议,如读取描述符和状态字,设置地址和配置字,以及清特征字。

  本文使用了一些必要的擦除、、校验命令,如表2所列。

一些必要的擦除

  在使用读取状态命令后,程序返回1字节的应答命令来表示Program Row(行编程命令)、Erase Block(块擦除命令)和Verify Row(行校验命令)命令是否成功。字节$01表示命令执行成功,字节$04表示命令执行失败。

  1.6 ICP_FLAG的编程

  由于JB8是为HID应用设计的,最好使用HID命令来编写ICP_FLAG,这样可以无需额外的驱动。本文使用8字节的Set_Feature指令来设置ICP_FLAG,使用8字节的Get_Ack指令(只有1字节是有用的)来校验设置是否正确(响应为$0O表示命令成功,为$01表示命令失败)。设置8字节足出于安全的考虑,如果这8字节与JB8中$FFE6~$FFED的8字节相匹配,那么命令才是有效的。只有命令有效,ICP_FLAG才会被写入0。指令使用格式如表3所列。

指令使用格式

评论


相关推荐

技术专区

关闭