P89LPC932的几种ISP编程方法
且1E00H~1FFFH的Flash程序存储器不要使用或擦除。这样配置完成后,只要异步串行口的接收脚检测到中止控制符信号后,处理器就会复位,复位后LPC932将从由启动向量指定的地址处取指令执行。
有两个问题在使用这种触发方式的时候应该了解。一是某些USB转RS232的转换器无法发出中止控制符信号,所以无法使用检测中止控制符信号的方式触发处理器复位并进入ISP模式;二是中止控制符信号在正常的串口通信不会出现,所以用户可以放心使用这种触发方式。
1.2.3硬件激活进入ISP模式
使用这种模式的好处在于,不论处理器内部原来存储着什么用户代码,也不论状态位的值是什么,ISP模式总是可以进入的(不过有一点还是必须得到保证,就是处理器里原来的启动代码未被擦除或覆盖,而默认的启动向量1EH也没有修改过)。由于P89LPC932引脚数比较少,而且内置了程序存储器,又没有传统的用于外扩总线的P0、P2口和PSEN引脚,所以依靠硬件方式触发芯片进入ISP模式的方法与传统MCS-51芯片有所不同。
上电后,如果处理器在复位脚上检测到如图2所示的脉冲波形,则处理器将从启动向量指定的地址处取指令运行,也就是进入ISP模式,而不是从0000H处取指令执行。其实,这种进入方式的结果和有一个非零的状态字节有着相同效果。不过要注意的是,产生的脉冲数目只允许有3个,多于或少于3个脉冲都不能触发处理器进入ISP模式。
图2P89LPC932硬件激活ISP模式波形图
可以利用一枚外部的微处理器来产生这3个脉冲,同时它还控制一枚电源芯片来产生P89LPC932需要的电源电压。这种方法的原理很容易弄明白,笔者在此不再赘述。另外,还有一种更简单的方法,就是由用户PC机上的异步串行口加上部分硬件电路来直接产生所需的时序,具体介绍可以参看参考文献1。
1.2.4直接调用法触发处理器执行ISP代码
P89LPC932的ISP模式的预置启动向量为1EH,所以其ISP驻留代码首地址为1E00H,要进入ISP,直接调用1E00H处的代码就可以了。在C代码中,程序通过函数指针的方式就可以调用ISP驻留代码(即进入ISP模式)。
1.3在P89LPC932上使用Flashmagic
Flashmagic是一个免费的软件工具,可以为Philips的许多处理器作ISP编程,包括P89LPC932。Flashmagic启动时将试图连接用户选择的器件,不过通常在这里都会报错,因为并没有任何处理器处于ISP模式,又或者还有什么其他的设置需要更改。请选择Flashmagic控制的PC机上的正确串行口,同时选择目标器件为P89LPC932,如图3所示。然后使这片P89LPC932进入ISP模式(如果
图3FlashMagic的启动画面
这是一枚全新的处理器,则它这时已经处于ISP模式了)。如果这不是一枚全新的处理器(状态位不是1),那么必须使用硬件方式激活处理器进入ISP模式,或用检测中止控制符信号的方式触发处理器复位并进入ISP模式。
如果使用检测中止控制符信号的方式触发处理器复位并进入ISP模式,如图4所示,则应当配置Flashmagic,以使用这种方式来初始化ISP模式。首先,检查“options”菜单下的“advanced options”选项,在弹出的对话框的“hardware config”页上应该取消“Use DTR and RTS to enter ISP mode”选择框中的选择(注:FlashMagic可以记住你的各种设置,下次你再次使用,如果不需要其他设置,可不再设置它即可使用)。然后,从 “ISP”菜单下选择选项“start bootrom”,并从弹出的对话框中选择“send break condition”按钮,Flashmagic可以通过PC机串行口直接向P89LPC932发出中止控制符信号。一般来说,这时P89LPC932就应该处于ISP模式下了。不过,Flashmagic不会自动校验P89LPC932是否已经真正进入了ISP模式,这个工作需要由用户自己来做。如果 P89LPC932未处于ISP模式,若干个Flashmagic的菜单是无法使用的
(即使用户选择这些菜单,Flashmagic也会报错而不会有执行结果),用户可以通过选择这些菜单来检验P89LPC932是否已经处于ISP模式下了,例如“ISP”菜单下的“Blank Check…”选项。当然,P89LPC932未进入ISP模式时,对它的编程是无法进行的,从这层意义上说,同样也可以知道P89LPC932并未处于 ISP模式下。
图4发送中止控制符条件的界面
Flashmagic的缺省设置是自动保护P89LPC932中扇区7内高端512字节的启动代码,不过用户可以在“options-advanced options-security”对话框中关闭这个保护功能。不过,并不推荐用户这么做,因为这会提高误操作对覆盖ISP启动代码的可能性。
注意,有些菜单选
- 基于FPGA的DSP设计方法(08-26)
- 专家指导:Linux操作系统密码恢复方法(05-16)
- 基于多核DSP Bootload代码加载方法研究(01-16)
- 基于DSP 的大容量无线传输技术中高性能的启动方法(03-16)
- 多核调试新方法探讨(10-22)
- 有备无患Linux操作系统备份方法介绍(06-06)