root / arduino-1.0 / hardware / arduino / bootloaders / optiboot / README.TXT @ 58d82c77
History | View | Annotate | Download (3.36 KB)
1 | 58d82c77 | Tom Mullins | 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. |