mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-19 08:52:15 +01:00
00706284de
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.
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>