0 引 言
一般来说,在系统编程(ISP)是指依靠某种外部工具(除了常规的并行编程器以外)直接给处理器内部集成的程序存储器编程。这里所指的外部工具常见的有很多种,不同的处理器供应厂商可能提供不同的方案。例如,根据编程接口的不同,就有JTAG、单线、串口、SPI口等多种方式。尽管编程方式有所不同,但其原理都是类似的,就是依靠外部条件触发处理器,令其脱离正常执行的内部常规用户应用程序代码的进程,转而执行保存在其程序存储空间内某个固定位置处的控制擦除程序存储器及给程序存储器编程的代码(或是处理器外部提供的执行代码),然后通过某种与PC计算机的通信方式,将用户指定的某个在PC上编译完成的嵌入式处理器可运行的二进制代码文件编程人嵌入式处理器内的程序存储器。这种编程方式只需要常规的硬件配置(某些处理器可能需要某些叫作下载线的简单硬件电路)支持,而不需要特别的编程器(指并行编程器)支持,所以即使处理器芯片已经焊接到了电路板上也可以实现编程,这也就是ISP的真实含义。
1 通用的在系统编程方法
随着嵌入式系统技术的发展,电可擦除的FLASH芯片以容量大,价格低,编程方便等优势得到了广泛的应用。用一片FLASH作为程序存储器的系统无法直接实现在系统编程(ISP),为了方便现场调试和程序升级,可以采用集成ISP功能的MCU(如AVR、部分ARM芯片等),或者采用双FLASH设计等方法实现ISP功能。但有不少系统仍然使用不具备直接ISP功能的MCU(如M68K、N
针对使用不具备ISP功能的MCU系统,只要满足以下四个条件,就可以按照本文的方法进行ISP设计。考虑自编程过程中文件出错、断电等特殊情况,此方案可实现故障保护。
(1)程序空间和数据空间统一编址,程序可以在RAM中运行;
(2)FLASH芯片正确连接了写信号;
(3)拥有能放下Update程序并让其正常工作的额外程序/数据空间;
(4)具备某种通信能力(例如以太网、串口、CAN、MODEM等)。
程序分布如图1所示。这种情况下需要把整个工作分为三部分完成。第一是引导程序(称为Boot程序);第二是升级程序(Update程序);第三是正常程序(Normal程序)。Boot程序负责控制程序的运行模式:升级模式、正常模式。如果进入升级模式,Boot程序需要将Update程序复制到指定的运行空间,并转入执行Update程序;如果进入正常模式,Boot需要做的工作就十分简单,可以直接把控制权交给正常程序。要注意Update在自编程时不能破坏Boot程序。此时Normal程序不再负有复制Update程序到指定运行空间的任务,完全按照正常的模式运行。
按照这种方案,Boot程序和Update程序是自编程设计的核心内容,只要保证这部分程序代码的完整性,就能拥有在线编程的能力。要对这部分程序代码区进行保护,保证在第一次写入程序存储器后就不会再被擦除。这样即使在自编程时发生灾难性故障,Boot程序和Update程序是不会被破坏的,仍然可以继续运行,保证下次仍然可以进行自编程。程序完成后必须分别固化到程序存储器的指定空间,以保证程序的正常运行。
2 80C196KC ISP的通信模块设计
实现
2.1 通信协议
目前微机的串行通信口都是基于RS 232协议的,但因其传送速率较低、抗干扰能力较差、传送距离太近等缺点,该系统采用RS 422通信方式。RS 422每个通道通过二条信号线进行传输,采用平衡驱动、差分接收形式,对在接收器输入端出现的共模噪声起到了抑制作用,可以允许较大的信号衰减。另外由于两者之间不共地,不存在回路之间的电位差,彻底消除了远距离信号传输中因地电位不等造成的影响,从而有很强的抗干扰能力,并且可获得较长的传输距离。