I'm trying to understand the "programmer-id" concept, as specified in
avrdude asks me to choose a "programmer-id" among many it knows of.
Let's say (just as an example) I have a Arduino 2560 to which I connect via USB, and I want to program it using the bootloader. Then, in this scenario,
is one programmer-id and just one supposed to work?
More in general, one has
1) some particular board (MCU,
2) some particular programming method/connection (JTAG, ISP, development board, USB/serial, etc)
3) (if using bootloader) some particular bootloader code in Flash.
How are these things related with the programmer selection? I guess that some (most?) programmers-ids are specific to some programmer connection/method (AND probably with some hardware family?), and they have nothing to do with the bootloader. What is the programmer to use for a standard Arduino with bootloader, connected via USB? What more can be said?
Furthermore, the Arduino IDE lets me choose "Upload" and "Upload Using Programmer" (the first works for me, the second doesn't). Why this distinction? Isn't a programmer always used? What does the IDE do, under the hood (does it call avrdude?) when choosing "Upload" ?