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

发布者:泥匠手最新更新时间:2012-10-19 来源: 21IC 关键字:USB总线  MC68HC908JB8  Flash  在线编程 手机看文章 扫描二维码
随时随地手机看文章

  Freescale公司的MC68HC908JB8(简称“JB8”)是HC908系列中的一种。它包括USB接口,是专为计算机人机接口设备设计的。

  诸如鼠标、键盘等应用。JB8包含8KB的Flash用户存储区和16字节的中断复位向量,使用它内部产生的升压泵就可以实现F1ash的烧写和擦除,而不需要高电压。

  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代码跳转到正常操作的用户模式。[page]

  进入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在串行口的应用方式用于开发,调试方便,实际运行效果很好,有一定的应用价值。

 

关键字:USB总线  MC68HC908JB8  Flash  在线编程 引用地址:基于USB总线的MC68HC908JB8 Flash在线编程

上一篇:Kinco步科总线型触摸屏在电动大巴行业的应用
下一篇:总线标准与层次结构

推荐阅读最新更新时间:2024-05-02 22:22

你的STM32芯片FLASH容量真如ST官方选型手册那样吗?
如果某一个天项目经理提出一个需求,要求在现有STM32产品基础上,内部FLASH增加64K字库,你脑海中首先会想到什么? 1先说点其它 一般对于初学者来说,内部FLASH完全足够,跑一个简单的裸机Demo,或者一个RTOS加上两个任务的Demo,对于现在的MCU完全没有压力。 但是,一旦你接触到实际项目,你会发现很多地方都会开支FLASH,而且有些项目占用FLASH还不小。比如:某种特定算法,加载字库,甚至放两张图片在FLASH里面。 再拿一个IAP应用编程的例子来说:一般对升级这个功能做的好一点的,会有一块区域(备份区域)与应用程序差不多大小的FLASH区域。就是说:为了保证安全,你程序下载保
[单片机]
你的STM32芯片<font color='red'>FLASH</font>容量真如ST官方选型手册那样吗?
Atmega128单片机的RC5和RC6算法比较与改进
引言 在无线局域网中,传输的介质主要是无线电波和红外线,任何具有接收能力的窍听者都有可能拦截无线信道中的数据,掌握传输的内容,造成数据泄密。因此,对于无线局域网来说,数据的加密是关键技术之一。 AVR高速嵌入式单片机是8位RISC MCU,执行大多数指令只需一个时钟周期,速度快(8MHz AVR的运行速度约等于200MHz C51的运行速度);32个通用寄存器直接与ALU相连,消除和运算瓶颈。内嵌可串行下载或自我编程的Flash和EPPROM,功能繁多,具有多种运行模式。 依照IEEE1999年发布的802.11无线局域网协议标准,采用Atmel公司的Atmega128高速嵌入式单片机,开发无线数据传输装置。为了实现无
[单片机]
基于MSP430单片机及USB总线的便携式血压计
目前,市场上的血压计大部分仍是水银血压计,电子血压计在国外已经大量普及,而我国才开始应用。水银血压计每次测量必须由医生戴上听诊器进行测量,测量过程复杂,而且不同的医生,测量结果可能不同。而电子血压计弥补了水银血压计的不足。本文使用低功耗MSP430单片机对人体血压信号进行采集,通过USB控制芯片CH375将这些数据存储到U盘中,可以通过PC机的软件分析一天中血压的变化。   1 硬件设计   1.1芯片介绍   MSP430是近几年流行的16位单片机,由于它具有超低功耗(在5V电压下运行于12MHz的80C51工作电流达到十几mA;而MSP430在3V时的工作电流为340μA,在2.2V的工作电流为220μA)、众多的片内
[单片机]
430 flash的操作
大概印象:430的flash好像有点像arm的flash,只不过是arm的flash要比430的大很多,而且430的flash不同于E2PROOM,这一点需要值得注意 MSP430flash的基本特点: 1,拥有内置的编程电压发生器 2:可以进行位,字节,还有字的寻址 3:可以进行段擦除,和整体的擦除 注意:对flash进行操作的时候,flash的操作编程电压必须要大于2.7V,如果小于2.7v的话,将会出现不可预知的错误 还是先来看看430的整体的基本框图:这张框图集合了430flash的所有的操作 标号1,定时器发生器:注意这里的定时器的编程频率必须处于257KHz到476KHz之间, 标号2:编程电压发生器,这
[单片机]
430 <font color='red'>flash</font>的操作
对Nand Flash的操作(S3C2440)
Nand Flash的概述 nandflash主要以page(页)为单位进行读写,以block(块)为单位进行擦除。每一页中又分为main区和spare区,main区用于正常数据的存储,spare区用于存储一些附加信息,如块好坏的标记、块的逻辑地址、页内数据的ECC校验和等。 先看下电路原理图 从原理图可以看出: 在DATA0~DATA7上既传输数据,又传输地址,也传输命令: 当ALE为高电平时传输的是地址。 当CLE为高电平时传输的是命令。 当ALE和CLE都为低电平时传输的是数据。 假设烧写NAND FLASH,把命令、地址、数据发给它之后,NAND FLASH肯定不可能瞬间完成烧写的,怎么判断烧写完成? 通过状态
[单片机]
对Nand <font color='red'>Flash</font>的操作(S3C2440)
stm32对flash的读写保护与解除
一、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:A、 通过调试器(JTAG或SWD); B、从RAM中启动并执行的程序; 2、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护 写保护 对Flash的操作功能 有效 有效 CPU只能
[单片机]
stm32对<font color='red'>flash</font>的读写保护与解除
串行FLASH存储器在小型LED显示系统中的应用
  LED显示屏由于其具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点,已经成为新一代的信息传播媒体工具。LED与LCD相比较最突出的特点是亮度高、成本低且屏幕尺寸可根据现场情况用标准LED单元板拼制。按安装位置可分为:室外、半室外和室内;按颜色可分为:单色、双基色和彩色;按发光二极管点距可分为:φ5.0,φ3.75及φ3.0等。本文以市场上常见的室内双色LED单元板为控制对象,说明基于STC单片机的LED显示屏控制系统工作原理以及数据组织方法。 1 标准双色LED单元板的硬件组成及工作原理   市场上常见的室内双色LED单元板电路框图如图1(a)所示。其中行扫描电路由2片74HC138(3-8译码器)
[家用电子]
串行<font color='red'>FLASH</font>存储器在小型LED显示系统中的应用
一种基于MCU内部Flash在线仿真器设计方法
    摘要: 提出了一种基于MCU内部Flash的仿真器设计方法,并完成了设计和仿真。     关键词: 微控制器 在线仿真 开发系统 Flash SRAM 由于市场对MCU功能的要求总是不断变化和升级,MCU应用的领域也不断扩展,因此往往需要对最初的设计进行修改。Flash MCU与以往OTP/MASK MCU相比,最大的优点就在于可进行高达上万次的擦写操作,顺应了MCU功能不断修改的需求;另一方面,Flash MCU市场价格也在不断下降。因此,许多OEM已将Flash MCU用于产品的批量生产。对于Flash MCU,基于内部Flash的在线仿真器更接近于程序真实的运行特性,程序调
[缓冲存储]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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