JTAG、debugWIRE、ISP、和高压编程

什么是JTAG?

JTAG是IEEE的标准规范,通过这个标准,可对具有JTAG接口的芯片的硬件电路进行边界扫描和故障检测。部分AVR型号带JTAG仿真调试接口,可使用JTAG仿真方式。

什么是debugWIRE?

用以降低成本和调试引脚的开销,ATMEL在AVR器件上使用的新的调试接口:debugWIRE,与JTAG相比其主要区别在于仅使用一根信号线(RESET),即可完成调试信息的交互,达到控制程序流向,执行指令以及编程熔丝位的功能。它的总的连接图如下:



这里的 RESET 信号被用于传递调试信息。

什么是ISP?

ISP是In System Program的缩写,意思是在系统编程。目前的AVR芯片基本上都具备ISP接口,可通过ISP接口进行编程。它一共使用了两条电源线:VCC、GND,三条信号线:SCK、MOSI、MISO,以及复位线:RESET。由于仅仅使用了几条数据线,所以我们亦常将其称为串行编程。值得注意的是,虽然下载器端使用的信号线名为SCK、MOSI、MISO,但AVR MCU的信号端不一定是名为SCK、MOSI、MISO。

AVR的串行编程方式有什么特点?

AVR的串行编程方式有很多种,如:
(1)STK200/STK300:并口下载器多采用该烧写方式,最早期的一种烧写方式,支持型号少,烧写速度低,不支持AVR Studio。
(2)STK500:ATMEL最推荐的编程方式,由于采用ATMEL官方的STK500固件,使得它可烧写全系列AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。
(3)AVRISP(准STK500):由于采用ATMEL官方的STK500固件,使得它可烧写大部分AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。
(4)AVRISPmkII:由于采用ATMEL官方的AVRISPmkII固件,使得它可烧写大部分AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。
(5)当然还有其它的ISP方式,但已经那些均不是最为常见的串行编程方式,在此不在作一一介绍。

AVR的高压编程方式有什么特点?

AVR的高压编程/并行编程,实际上是更早出现的编程方法,它功能强大,但需要:
1)连接较多的引脚(故称“并行编程”)
2)使用12V电压(故称“高压编程”)
联合起来一般叫高压/并行编程。实际上,有些编程是高压/串行编程,如Attiny13。(Attiny13端口非常少)高压/并行编程(理论上)能修复任何熔丝位,例如:
1)Attiny13/24/2313、Atmega8/48/88/168等AVR的RESET端口与IO端口是共用的,由于这类AVR的引脚一般较少,(如Attiny13仅有6个IO口),经常出现IO不够用的情况,需要将RESET端口设置为IO端口使用,然而,一旦将RESET设置为IO,便无法再进行ISP编程了,更无法使用ISP恢复RESET功能,因为ISP编程需要RESET功能。然而,这种情况下,使用高压/并行编程,可以恢复RESET功能,(注意:RESET端口与IO端口是共用的AVR,具备debugWIRE功能,“dW”熔丝位必须为启动状态)因为高压/并行编程不需要RESET功能。
2)当设置错了熔丝位导致芯片锁死,这种情况下,使用高压/并行编程,可恢复熔丝位。