I've made a board for a project that doesn't need serial interfacing.
My wife & I built up 2 of them, surface mount using old (really old) Kenmore toaster over & thermocouple into a multimeter for manual temperature control.
Our (my) application of solder paste needs work still, but we're slowly improving.
Anyway, both times I scratched my head for quite a while because the board seemed to be running really slow. After the reflow, and adding a couple of thru hole headers, I had buzzed power & gnd, then powered it up & used File:Upload Using Programmer.
The upload went fine, the sketch started, could tell from state of LEDs.
Finally dawned on me - I hadn't installed the bootloader. Apparantly the fuses were not getting set to use the external 16 MHz crystal.
Burned the bootloader, re-uploaded the file via programmer again, and things are running great.
Can't believe I had to figure that a 2nd time. Altho in my defense, I was distracted by having to touch up soldering on several chips, confirmed with meter that pins were not connected. Not enough solder paste.
Left myself a Big Note at the top of the sketch to try & remind myself for next time...
the arduino enviroment does both at once as a service to you, though there is nothing stopping you from burning the fuses and not installing a boot loader, the bootloader just allows you to self program over the uart and nothing else
heck its been at least 3 years since I even bothered installing a boot loader, still using my original arduino as a ISP for every chip since, and its been at least 1.5 dozen
the only importance of it is if you want to program over the serial port
thats right, its a 2fer in the arduino, but that doesnt change the fact the fuses and the bootloader are 2 different things loaded at the same time by a glorified batch file
you should learn how to use avrdude, it only takes a few times and its basics are burned into your memory...
I found this site helpful to determine fuse settings http://www.engbedded.com/fusecalc/ when ISP programming a couple of ATmega8's. As Osgeld says burning the bootloader does not effect the speed but sets the fuse bits from factory default of internal clock to use external (faster) clock.
A related question. Now that the Arduino IDE has the option to 'upload using programmer' shown in the file menu, does that also burn the fuses to the arduino values shown in the boards.txt file of the selected board?
I have used that option a few time and do know for instance that if the chip had a bootloader installed prior it will be erased when doing this upload using programmer action, which means it at least reset the bootloader memory protection fuses, so it certainly does some fuse manipulations?
"As Osgeld says burning the bootloader does not effect the speed but sets the fuse bits from factory default of internal clock to use external (faster) clock."
But burnloading does affec the speed - by changing the fuses to use the external clock.
"Now that the Arduino IDE has the option to 'upload using programmer' shown in the file menu, does that also burn the fuses to the arduino values shown in the boards.txt file of the selected board?"
No, you have to load the bootloader for the fuse changing to occur.
But burnloading does affec the speed - by changing the fuses to use the external clock.
if you only want to look at it by the wording in the IDE but
I've made a board for a project that doesn't need serial interfacing.
so the in effect all you did was waste 2k and 2 second on startup .... its not that big of a deal but "burning the bootloader" is not the only way to fix your problem
"so the in effect all you did was waste 2k and 2 second on startup "
Not at all - I burned the bootloader, then uploaded via the File:Upload Using Programmer.
So the fuses are set to use external crystal, it starts up immediately, and as far as I know it used the bootload space as well. And if it didn't use the bootload space, I believe optiboot uses only 512 bytes, not 2K.
May be, but I have never - not one time - been able to get avrdude to do anything I wanted. So its likely I am not doing something right.
This method is pretty straightforward.
I connect my Atmel AVR ISP MKii and power up the board.
I select Tools: Burn Bootloader.
I select File:Upload Using Programmer.
I am done.
Same process works for '1284 boards, but I usually upload via the serial port to make sure the port is working.
This particular board does not have the serial lines connected up, only ICSP.