第一篇:芯片烧录的 ICP、ISP、IAP、JTAG 技术小结参考
本文档仅供参考,若有纰漏,欢迎提议改正„„
芯片烧录的 ICP、ISP、IAP、JTAG 技术小结 1.MCU传统编程方法
最初,单片机使用并口编程,一般要用高压12V、5V,按照数据手册上的操作方式,使能编程引脚,最终是通过I2C或者SPI总线协议,发送相应的指令,进入编程模式,把程序写到MCU程序存储器。这种方法,往往需要从实际最终产品上取下 MCU,放到编程器上烧录程序。
2.ICP技术
ICP 是 In-Circuit Programming(在电路编程)的缩写.当做为 ICP 编程器时,它事实上完全像一个通用编程器,除了它采用的只需占用 4 个引脚的串行接。
3.ISP技术
In-System-Programming即,在系统编程,烧录程序的时候,直接在系统进行,不需要把MCU取出来。
这种编程方式,需预先写ISP引导代码到MCU的ISP程序区。
上电后,目标MCU从ISP程序区启动并且执行ISP代码来检测是否需要进行ISP操作。如果需要,目标MCU 将从编程器接收数据,并且使用ISP程序区的相应函数、指令,把数据写入到应用程序区。ISP过程完成后,MCU将会从应用程序区重新引导来运行新的应用程序代码。
ISP接口如下图,主要有四根线:数据输入、输出,时钟,编程触发,分别对应于单片机的相应接口(由芯片手册得知)。ISP数据传输符合 SPI协议。
ISP 编程操作是通过不同的指令实现的,以编程使能命令作为其他命令的前导命令,必须首先执行编程使能命令,再执行其他命令。例如要擦除芯片,首先执行编程使能命令,然后执行芯片擦除命令,这样才能完成操作擦除。部分指令如下:
4.IAP 技术
全称“In-ApplicationProgramming”,中文解释为“在程序中编程”。MCU可以在系统运行中获取新代码并对自己重新编程,即用程序来改变程序。
实现IAP技术的核心是一段预先烧写在单片机内部的IAP程序。这段程序主要负责与外部的上位机软件进行握手同步,然后将通过外设通信接口将来自于上位机软件的程序数据接收后写入单片机内部指定的闪存区域,然后再跳转执行新写入的程序,最终就达到了程序更新的目的。
IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。
IAP函数是固化在微处理器内部flash上的一些函数代码,最终的用户程序可以直接通过调用这些函数来对内部flash进行擦除和编程操作。
IAP 命令汇总 IAP命令
ISP和IAP的优点:
ISP技术的优势是直接烧录电路板上的单片机芯片,免去调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。
IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。
5.JTAG技术
JTAG是Joint Test Action Group(联合测试行动小组)的缩写,是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。JTAG用来对芯片进行测试的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对内部节点进行测试。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
TMS: 测试模式选择。此引脚用来实现TAP 控制器各个状态之间的切换。TCK: 测试时钟。JTAG 操作是与TCK 同步的。
TDI:测试数据输入--需要移位到指令寄存器或数据寄存器(扫描链)的串行输入数据。TDO:测试数据输出--自指令寄存器或数据寄存器串行移出的数据。现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对EEPROM、FLASH等器件进行编程和在线调试。JTAG编程方式是在线编程,传统开发流程中先对芯片进行预编程再装到板上的模式因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。