Skip to content

Commit 9c7c850

Browse files
committed
Added patches to optiboot from WestfW
1 parent 72caa9c commit 9c7c850

31 files changed

+3274
-5077
lines changed

hardware/arduino/bootloaders/optiboot/Makefile

Lines changed: 259 additions & 47 deletions
Large diffs are not rendered by default.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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

Comments
 (0)