ArduinoCore-avr/bootloaders/optiboot
WestfW 2a83ee55b3 Add a version number to the optiboot source and binary.
http://code.google.com/p/arduino/issues/detail?id=554

end of flash memory where they can be read (at least in theory) by
device programmers, hex-file examination, or application programs.
This is done by putting the version number in a separate section
(".version"), and using linker/objcopy magic to locate that section as
appropriate for the target chip.  (See
http://lists.gnu.org/archive/html/avr-gcc-list/2011-02/msg00016.html
for some discussion on the details.)

Start the version at 4.1 (the last "packaged" version of optiboot was
called version 3, so the "top of source" would be 4.0, and adding the
version number makes 4.1)

Refactor LDSECTION in the Makefile to LDSECTIONS so that multiple
section start addresses can be defined.

Change the _isp makefile definitions to make the bootloader section
readable (but not writable) by the application section.  (This would
need to be done elsewhere as well to handle all bootloader programming
techniques.  Notably Arduino's boards.txt

Note that this change does not change the "code" portion of optiboot
at all.  The only diffs in the .hex files are the added version word
at the end of flash memory.
2011-06-10 17:47:47 -07:00
..
Makefile Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
README.TXT Makefile modification to allow building optiboot in more environments. 2011-06-09 22:36:05 -07:00
boot.h This is a relatively significant edit that brings the Arduino copy of 2011-06-10 16:17:13 -07:00
makeall Update shell script makeall 2011-06-10 16:29:34 -07:00
omake Makefile modification to allow building optiboot in more environments. 2011-06-09 22:36:05 -07:00
omake.bat Makefile modification to allow building optiboot in more environments. 2011-06-09 22:36:05 -07:00
optiboot.c Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_atmega328.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_atmega328.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_atmega328_pro_8MHz.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_atmega328_pro_8MHz.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_diecimila.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_diecimila.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_lilypad.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_lilypad.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_lilypad_resonator.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_lilypad_resonator.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_luminet.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_luminet.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_8MHz.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_8MHz.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_16MHz.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_16MHz.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_20mhz.hex Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
optiboot_pro_20mhz.lst Add a version number to the optiboot source and binary. 2011-06-10 17:47:47 -07:00
pin_defs.h This is a relatively significant edit that brings the Arduino copy of 2011-06-10 16:17:13 -07:00
stk500.h This is a relatively significant edit that brings the Arduino copy of 2011-06-10 16:17:13 -07:00

README.TXT

This directory contains the Optiboot small bootloader for AVR
microcontrollers, somewhat modified specifically for the Arduino
environment.

Optiboot is more fully described here: http://code.google.com/p/optiboot/
and is the work of Peter Knight (aka Cathedrow), building on work of Jason P
Kyle, Spiff, and Ladyada.  Arduino-specific modification are by Bill
Westfield (aka WestfW)

Arduino-specific issues are tracked as part of the Arduino project
at http://code.google.com/p/arduino


------------------------------------------------------------
Building optiboot for Arduino.

Production builds of optiboot for Arduino are done on a Mac in "unix mode"
using CrossPack-AVR-20100115.  CrossPack tracks WINAVR (for windows), which
is just a package of avr-gcc and related utilities, so similar builds should
work on Windows or Linux systems.

One of the Arduino-specific changes is modifications to the makefile to
allow building optiboot using only the tools installed as part of the
Arduino environment, or the Arduino source development tree.  All three
build procedures should yield identical binaries (.hex files) (although
this may change if compiler versions drift apart between CrossPack and
the Arduino IDE.)


Building optiboot in the arduino IDE install.

Work in the .../hardware/arduino/bootloaders/optiboot/ and use the
"omake <targets>" command, which just generates a command that uses
the arduino-included "make" utility with a command like:
    make OS=windows ENV=arduino <targets>
or  make OS=macosx ENV=arduino <targets>
On windows, this assumes you're using the windows command shell.  If
you're using a cygwin or mingw shell, or have one of those in your
path, the build will probably break due to slash vs backslash issues.
On a Mac, if you have the developer tools installed, you can use the
Apple-supplied version of make.
The makefile uses relative paths ("../../../tools/" and such) to find
the programs it needs, so you need to work in the existing optiboot
directory (or something created at the same "level") for it to work.


Building optiboot in the arduino source development install.

In this case, there is no special shell script, and you're assumed to
have "make" installed somewhere in your path.
Build the Arduino source ("ant build") to unpack the tools into the
expected directory.
Work in Arduino/hardware/arduino/bootloaders/optiboot and use
    make OS=windows ENV=arduinodev <targets>
or  make OS=macosx ENV=arduinodev <targets>