I’m just starting out with AVR controllers, and I’m hearing a lot about JTAG. I’ve pretty much got ICSP figured out, but what is JTAG, and how can I use it? is it just another method of programming, like ICSP? Or is it something else? I’ve heard it can be used for debugging…
If anyone can hold this newbie’s hand, I’d be grateful.
roach:
I’m just starting out with AVR controllers, and I’m hearing a lot about JTAG. I’ve pretty much got ICSP figured out, but what is JTAG, and how can I use it? is it just another method of programming, like ICSP? Or is it something else? I’ve heard it can be used for debugging…
If anyone can hold this newbie’s hand, I’d be grateful.
What I’m ultimately trying to decide, I guess, is whether it’s actually worth shlepping through 145 pages of jargon-heavy garbage to learn about this, or whether (for me) it’s an evolutionary dead-end. Is it “hard” to use? What information can JTAG provide, that I couldn’t get from a UART and some code?
Your resopnse of RTFM is, of course, entirely justified, and richly deserved. Now that we’ve established that I’m lazy, inexperienced and unprincipled :), is there an answer?](http://www-s.ti.com/sc/psheets/ssya002c/ssya002c.pdf)
JTAG is a hardware interface that uses a synchronous serial protocol to talk to the on-board chip hardware. It’s used for things like testing/reading/monitoring/controlling the on-chip hardware. And yes, it is also used by chips like the AVR, ARM and MSP430 for programming on-chip flash too. A lot of chips like the MSP430 also have on-chip debugger hardware that use the same JTAG interface, which is a big plus.
In general, I have found that using a JTAG interface for programming is a lot less complex and error prone that some of the more proprietary methods like Microchip’s ICSP. JTAG programming is also almost always done at the normal operating voltage of the CPU too, which simplifies the interface hardware back to the PC.