Here I will build a really small Arduino clone. A MCU a Atmega168 is used. To save space and solder the device is preloaded with the Arduino bootloader, before the other components are mounted.
1 - Program the bootloader.
-The Mega168 is placed in the socket on a Arduino Duemilanove, replacing the original Mega328.
-An Avrisp mkII programmer is attached to the programming header on the Duemilanove, to this card I also connect an external power supply.
-Windows XP is booted in Virtualbox on my Ubuntu system.
-The Avrisp is connected to the computer. Devices/USB/Atmel Avrisp mkII in Virtualbox gives the virtual XP machine access to the programmer.
-AVR Studio is launched, then we follow the instructions here: http://www.arduino.cc/playground/Learning/Burn168.
In AVR Tools, the following is made:
-Click "Tools/Program AVR/Auto Connect". On the main tab, select device "ATmega168", click "Read signature" and check that it matches.
-Click "Settings" in the Programming Mode and Target Settings" and set "ISP Freq" to 100.0Hz, then click "Write".
-Goto Program tab. Click the dotted box to the right of "Input HEX file" in the "Flash"-box. Select "ATmegaBOOT_168_diecemila.hex" (in the folder "Program/Arduino-00xx/hardware/arduino/bootloaders/atmega").
-Change to Fuses panel. Set fuses to 0xF8 (extended), 0xDF (high) and 0xFF (Low)). Click "Program".
-Change to Lockbits tab, set fuses to 0xCF and click "Program".
-Change the ISP-frequency to 500kHz, then back to Program tab, click Program button in the Flash box.
With a Linux system and Avrdude, the Bootloader can be loaded with the following command:
avrdude -p m168 -c avrispv2 -P usb -U flash:w:/arduino-0022/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex
-Disconnect the power supply, remove the programming connector and move the usb-cable from the Avrisp to the Duemilanove.
-Start the Arduino IDE, load the example Blink Led and upload it to the board. Make sure the board is set to Duemilanove with ATMega168 in the Tools/Board menu. If the L-led blinks, all is ok.
-Disconnect the Duemilanove, remove the Mega168.
-Step 2, building the device.
Here is a simple, cheap and ugly Arduino clone:
The schematic is taken from the Breaduino project, http://www.appliedplatonics.com/breaduino/