README.TXT
1 This directory contains the Optiboot small bootloader for AVR 2 microcontrollers, somewhat modified specifically for the Arduino 3 environment. 4 5 Optiboot is more fully described here: http://code.google.com/p/optiboot/ 6 and is the work of Peter Knight (aka Cathedrow), building on work of Jason P 7 Kyle, Spiff, and Ladyada. Arduino-specific modification are by Bill 8 Westfield (aka WestfW) 9 10 Arduino-specific issues are tracked as part of the Arduino project 11 at http://code.google.com/p/arduino 12 13 14 ------------------------------------------------------------ 15 Building optiboot for Arduino. 16 17 Production builds of optiboot for Arduino are done on a Mac in "unix mode" 18 using CrossPack-AVR-20100115. CrossPack tracks WINAVR (for windows), which 19 is just a package of avr-gcc and related utilities, so similar builds should 20 work on Windows or Linux systems. 21 22 One of the Arduino-specific changes is modifications to the makefile to 23 allow building optiboot using only the tools installed as part of the 24 Arduino environment, or the Arduino source development tree. All three 25 build procedures should yield identical binaries (.hex files) (although 26 this may change if compiler versions drift apart between CrossPack and 27 the Arduino IDE.) 28 29 30 Building Optiboot in the Arduino IDE Install. 31 32 Work in the .../hardware/arduino/bootloaders/optiboot/ and use the 33 "omake <targets>" command, which just generates a command that uses 34 the arduino-included "make" utility with a command like: 35 make OS=windows ENV=arduino <targets> 36 or make OS=macosx ENV=arduino <targets> 37 On windows, this assumes you're using the windows command shell. If 38 you're using a cygwin or mingw shell, or have one of those in your 39 path, the build will probably break due to slash vs backslash issues. 40 On a Mac, if you have the developer tools installed, you can use the 41 Apple-supplied version of make. 42 The makefile uses relative paths ("../../../tools/" and such) to find 43 the programs it needs, so you need to work in the existing optiboot 44 directory (or something created at the same "level") for it to work. 45 46 47 Building Optiboot in the Arduino Source Development Install. 48 49 In this case, there is no special shell script, and you're assumed to 50 have "make" installed somewhere in your path. 51 Build the Arduino source ("ant build") to unpack the tools into the 52 expected directory. 53 Work in Arduino/hardware/arduino/bootloaders/optiboot and use 54 make OS=windows ENV=arduinodev <targets> 55 or make OS=macosx ENV=arduinodev <targets> 56 57 58 Programming Chips Using the _isp Targets 59 60 The CPU targets have corresponding ISP targets that will actuall 61 program the bootloader into a chip. "atmega328_isp" for the atmega328, 62 for example. These will set the fuses and lock bits as appropriate as 63 well as uploading the bootloader code. 64 65 The makefiles default to using a USB programmer, but you can use 66 a serial programmer like ArduinoISP by changing the appropriate 67 variables when you invoke make: 68 69 make ISPTOOL=stk500v1 ISPPORT=/dev/tty.usbserial-A20e1eAN \ 70 ISPSPEED=-b19200 atmega328_isp 71 72 The "atmega8_isp" target does not currently work, because the mega8 73 doesn't have the "extended" fuse that the generic ISP target wants to 74 pass on to avrdude. You'll need to run avrdude manually. 75 76 77 Standard Targets 78 79 I've reduced the pre-built and source-version-controlled targets 80 (.hex and .lst files included in the git repository) to just the 81 three basic 16MHz targets: atmega8, atmega16, atmega328.