...figuring out how to use avrdude
:
Much more effective, I think, to figure out how to do it with the tools I'm familiar with.
Except that the only familiar tool here seems to be the editor. As you're noticing, there's a bit more that the IDE does beyond just providing an editor, even though the editor is the most clearly visible part of the IDE. I use a different editor for editing my sketches quite frequently, and I still use the IDE for the compile/upload/small fix part of the cycle. This works reasonably well, given a little care. If your IDE takes a minute to load and speaks in the wrong language, that's sort of a separate issue...
Have you looked at: Redirecting and the parent pages?
(Alas, building code for microcontrollers seems to involve either quirky IDEs or complicated Makefiles...)
The IDE does approximately:
- retain settings (Board, Serial Port, Library locations)
- Edit
- Pre-process
- Compile libraries and core code.
- Compile sketch (using avr-gcc or avr-g++ as appropriate, and based on settings.)
- Link with libraries and core. (avr-gld)
- upload (using avrdude, according to settings.)
- convert to uploadable format (avr-objcopy)
All but step 3 have normal CLI equivalents, but the file locations are obscure and the options significant, so it's not like they'll be easy without doing a lot of additional setup (depending on your operating system, somewhat.)
You can turn on the "verbose" flags in preferences to see most of what is happening. Here's a summary (from a Mac):
[Build/link libraries]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=16000000L -I/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino /Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino/pins_arduino.c -o/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/pins_arduino.c.o
[ Lots more library builds ]
[preprocess and build sketch]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega168 -DF_CPU=16000000L -I/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/cores/arduino /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp -o/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.o
[link]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-gcc -Os -Wl,--gc-sections -mmcu=atmega168 -o /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.o /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/core.a -L/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet -lm
[reformat for upload]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.eep
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.elf /Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.hex
[upload]
/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/arduino/arduino-0017/Arduino17.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pm168 -cstk500v1 -P/dev/tty.usbserial-A9005bXZ -b19200 -D -Uflash:w:/Users/billw/Documents/Arduino/-Blink-Variants-/Blink_c/applet/Blink_c.cpp.hex:i