Skip to content
Commits on Oct 5, 2011
  1. Explicitly set the SHELL variable when OS=windows, so that we'll use

    the same shell regardless of whether other shells are installed
    (different shells have different behavior WRT directory component
    separators, so this matters. )
Commits on Jun 15, 2011
Commits on Jun 14, 2011
  1. Allow the READ PARAMETER command to return our version number.

    (significant size impact: 14 bytes!)
    Initialized "address" to eliminate compiler warning (4 bytes!)
    Add "atmega168" as a more accurate target name than "diecimila"
    (keep diecimila as well for backward compatibility)
    Reduce the .hex and .lst targets that are stored in source control
    to the three basics: atmega8, atmega168, atmega328.  The other
    targets remain in the makefile and makeall, but will need to be
    built from source if wanted.  Which should be less of a problem
    now that the source is buildable without installing crosspack.

    Optiboot does not support ArduinoasISP programmer.
    When avrdude runs and talks to an arduino running ArduinoISP,
    it needs the optiboot (entered due to auto-reset) to abort and
    start the ArduinoISP "application" when it sees communications
    at the wrong serial speed.  Unfortunately, optiboot treats all
    unrecognized command characters as "no-ops" and responds/loops
    for more commands, leading to a nice loop that never gets to
    the sketch.   This patch causes characters received with Framing
    errors (the most likely error for speed mis-matches) to NOT
    reset the watchdog timer (normally done in getch()), which will
    cause the application to start if it continues for "a while."
    (tested.  Works!  Running ArduinoISP at speeds as high as 57600
    still causes the bootloader to start the sketch (although it fails
    later on for other reasons.))
Commits on Jun 11, 2011
  1. Fix errors in LDSECTIONS refactoring

    (found during atmega8 testing.)
  2. Shrink code by using registers for variables "length" and "address"

    Fix high-value watchdog timeouts on ATmega8
    Change "start app on bad commands" code to start the app via the
    watchdog timer, so that the app is always started with the chip
    in fully reset state.
  3. Add a version number to the optiboot source and binary.

    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
    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.
Commits on Jun 10, 2011
  1. Update shell script makeall

  2. This is a relatively significant edit that brings the Arduino copy of

    optiboot up-to-date with the optiboot source repository as of Jun-2011
    (the last changes made in the optiboot repository were in Oct-2010)
    This adds support for several plaforms, fixes the "30k bug", and
    refactors the source to have separate stk500.h, boot.h, and pin_defs.h
    These are the arduino opticode issues fixed:
        optiboot has problems upload sketches bigger than 30 KB
        update optiboot to the point of the latest optiboot project sources.
    These are issues that had been solved in the optiboot source aready:
       optiboot leaves timer1 configured when starting app, breaks PWM on
       pin 9 and 10.  (fixed with a workaround in arduino core.)
       Support for ATmega8 and mega88.
       Fix fuse settings for mega168 _ISP targets
       Additional new platforms (mega, sanguino)
       Set R1 to 0  (already in arduino code)
       Fails to build correctly for mega88
    After this commit, the only differences between the Arduino optiboot.c
    and the optiboot repository optiboot.c are cosmetic.

    Remove the trailing comments when setting fuse values for the various
    *_isp targets, so that they won't cause avrdude errors.
    This was done the same way as in the optiboot source tree:
  4. Makefile modification to allow building optiboot in more environments.

    Allows building within the Arduino Source tree, and within the Arduino
    IDE tree, as well as using CrossPack on Mac.
    Adds README.TXT to track arduino-specific changes (and documents the
    new build options.)
    This addresses Arduino issue:
    And optiboot issue
    (which can be thought of as a subset of the Arduno issue.)
    Note that the binaries produced after these Makefile changes (using any
    of the compile environments) are identical to those produced by the
    crosspack-20100115 environment on a Mac.
Commits on Jan 15, 2011
  1. @damellis

    Fix to optiboot infinite loop problem.

    damellis committed
    Explicitly setting R1 to 0 so that the watchdog timer is properly initializing, preventing it from timing out and resetting the processor.
Commits on Sep 22, 2010
  1. @damellis
Something went wrong with that request. Please try again.