I still don't understand "why" I need this $120 contraption. Can someone tell me in lame man terms?
It is needed if you want to debug your code on the target device, i.e. single step through code or halt execution on a specific place in the source code.
It is also needed if you want to program the device directly (i.e. not go through a USB bootloader og U-Boot).
My device is the STK1000. The STK1000 has a USB interface. Why can't I just use that USB interface to program or debug?
The jtagicemk2 is a programmer. You need one for the same reason you need a programmer for any other microcontroller.
You cannot use the USB port to program anything. The chip simply doesn't support it. Nor does it support boot over serial or any other fancy methods.
The UC3 family of processors have internal flash which ships with a USB-enabled bootloader already installed and therefore, so long as you keep that bootloader in tact, you don't need a programmer like the jtagicemk2.
The AP7 device which is on the STK1000 doesn't have any internal flash and therefore cannot ship with a bootloader installed. In order to get your software on to an AP7 system you need to be able to write to the external flash. If you don't program the flash before you solder it to the PCB then you will need a jtagicemk2 or AVRONE! programmer to write your software to the board.
The STK1000 itself does ship with u-boot preinstalled which will work for some particular programming applications, but not all. In particular, if you accidentally overwrite a bit of u-boot the *only* way to restore your board is using a jtagicemk2 or AVRONE! programmer.
So, long story short: If you ever have to modify the contents of the flash connected to an AP7 device, you need a jtagicemk2 or AVRONE! programmer. The exception is if you already somehow have u-boot on that flash but note that if you accidentally corrupt u-boot, your STK1000 will be completely bricked without a programmer.
Excellent explanation! Thanks S!
© 2022 Microchip Technology Inc.