当前位置:首页 > 通信技术 > 通信技术
[导读]ICP是一种在实际的目标电路板上烧写和擦除芯片的方法,无需从目标板上将芯片卸下来再编程实现用户程序的修改。这种方法适用于产品开发和代码升级。目前市面上很多芯片(如Philips公司的P89C51、P89V51和LPC932A1,STC

ICP是一种在实际的目标电路板上烧写和擦除芯片的方法,无需从目标板上将芯片卸下来再编程实现用户程序的修改。这种方法适用于产品开发和代码升级。目前市面上很多芯片(如Philips公司的P89C51、P89V51和LPC932A1,STC89C51和STC89L516RD+,以及AVR公司的ATmega8系列等)都支持串口ICP方式。本文采用USB接口的ICP方法,烧写速度快,无需专用的电平转换芯片,硬件通过微处理器JB8的USB接口与计算机USB口连接即可。

  1 底层软件实现方法

  1.1 Flash配置

  为使用ICP通信连接的USB接口,必须修改JB8中的用户代码以识别预先为ICP定义的USB命令。因此在出厂前,必须将ICP代码烧入JB8中。JB8的Flash配置如图1所示。

  

 

  图1中,用户Flash区范围为$DC00~$FBFF,用户Flash向量区是从$FFFO到$FFFF。ICP的配置中:ICP的代码是从$F800到 $FBFF。用户Flash向量区在ICP操作中是不能再编程的,这两个区是JB8事先写入的,ICP操作可以对$DCOO~$F7FF的Flash区(图1中阴影区)进行擦除和烧写。

  1.2 向量重定位

  因为ICP的操作只能对用户代码进行编程和烧写,不能擦除用户Flash向量,且用户F1ash向量是固定的,因此在用户代码中的中断服务子程序地址必须重新定位到合适的地址。这种重新定位是通过“假”向量来实现的,3字节的假向量包括JMP指令和在用户代码中的中断服务子程序的绝对地址。图2中指出了假向量是如何重定位的。只有复位向量没有重新定位,总是指向$F800(ICP代码的入口地址)。

  

 

  表1列出了中断向量地址和重定位“假”向量地址。

  

1.3 安全密钥防止非法访问

 

  $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所示。

  

 

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

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

  本文使用了一些必要的擦除、编程、校验Flash命令,如表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所列。

  

2 应用软件

 

  USB ICP驱动程序的安装与普通的硬件驱动程序安装一样,需要安装USB ICP.SYS文件和注册表文件USBICP.INF。USB ICP的Windows运行界面如图4所示。

  

 

  选择烧写文件(.SX格式),擦除Flash(Erase Flash)后执行空检查(Blank Check),然后选择烧写(Program)芯片,最后执行校验(Verify)。

  结语

  本文采用集成USBl.1协议的MC68HC908JB8,扩展了ICP在串行口的应用方式用于开发,调试方便,实际运行效果很好,有一定的应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

西班牙塞维利亚,2024年3月12日 — Teledyne Technologies旗下公司、全球成像解决方案创新者Teledyne e2v宣布扩展其Flash™ CMOS图像传感器系列,推出Flash 2K LSA,该...

关键字: 图像传感器 Flash 摄像机

在这篇文章中,小编将为大家带来JTAG接口与Flash的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: JTAG Flash

近日,第11届EEVIA年度中国硬科技媒体论坛暨产业链研创趋势展望研讨会在深圳召开,兆易创新Flash事业部产品市场经理张静在会上发布了主题为“持续开拓,兆易新一代存储产品助力行业创新”的演讲。

关键字: 兆易创新 Flash 闪存

随着信息技术的快速发展,存储器的需求日益增长。Flash存储器作为一种非易失性存储器,具有重要的应用价值和广泛的应用领域。本文将详细介绍Flash存储器的基本原理、工作方式和作用,帮助读者更好地了解这一重要的存储器技术。

关键字: Flash 汽车 电子设备

随着信息时代的到来,数据存储成为了一项基本需求。Flash存储器成为了一种常见的存储设备,用于存储各种类型的数据,如文档、图片、视频等。本文将详细介绍如何使用Flash存储器以及如何写入数据,帮助读者了解Flash存储器...

关键字: Flash 存储器 数据

随着科技的不断发展,Flash存储器已经成为存储设备中最常用的一种类型。它具有非易失性、高密度、低功耗和快速读写等特点,广泛应用于各种领域,如移动设备、嵌入式系统和存储芯片等。本文将介绍Flash存储器的编程设计以及一些...

关键字: 存储器 Flash 嵌入式

(全球TMT2023年7月28日讯)2023年7月28日,江波龙上海总部项目封顶仪式在中国(上海)自由贸易试验区临港新片区举行。江波龙上海总部位于临港新片区滴水湖科创总部湾核心区,项目于2021年启动建设,占地面积约1...

关键字: 存储芯片 数据中心 芯片设计 Flash

昨天下午,中国市场监管总局附加限制性条件批准了美国半导体公司迈凌(MaxLinear)对全球最大 NAND Flash 控制芯片供应商慧荣科技(SMI)的收购。

关键字: 迈凌 慧荣 芯片 NAND Flash

Flash存储器,也称为闪存存储器,是一种非易失性存储器(Non-Volatile Memory,NVM),用于在设备断电后仍然能够保持存储的数据。它的名称来源于一种称为“闪存技术”的特殊电子存储技术。Flash存储器的...

关键字: Flash 存储器 电荷贮存器

据业内信息统计数据,2023 年第一季度 NAND-Flash 存储市场的营收或将持续下滑,除了传统的淡季影响之外,还和过去两年的市场影响以及双边制裁等因素有关。据悉,NAND-Flash 存储市场去年不断下跌,最后一个...

关键字: NAND Flash 闪存 三星 美光 SK 海力士 铠侠
关闭
关闭