|
| 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. |
0 commit comments