Removable bootloader delay

lots of development boards use a simple switch or removable jumper to activate the bootloader or not on power-up or reset. While it does take up a digital input pin, it does eliminate a delay on programs starting.

I'd really rather not use a pin, for the following reasons:

  1. I have two project which use 18 I/O's :slight_smile:
  2. There are very few choices of pin which aren't a disaster.
    Shouldn't be:
  • pin 0 or 1, USB to serial connection
  • SPI as they are used to blow firmware (pins 10, 11, 12, 13)
  • ADC as they are too precious (and two are I2C)
  • PWM as they are too precious, (3, 5, 6, 9, 10, 11)
  • digital pin 8 on Timer1 (16 bit), that is timed input capture
  • pin 2 (or 3) change-pin direct interrupts (their own ISR's)
  • pin 6 & 7 are the analogue comparator pins AIN0 & AIN1
  • pin 4 is PD4 XCK (USART External Clock I/O, i.e. uSrt)) & T0
    (that's all of them, I think)
    Losing these pin uses would reduce the value to me as a prototyping and physical computing platform - Arduino is so flexible its wonderful.
  1. All the pins go to shields which may use any pin permutation, so someone needs to worry about them

The biggest obstacle for me, is I haven't understood the Use Case. Without a clear need, I'd be worried to make any changes to a part of the interface that is so concrete and physical.

So, I'd like to understand the need.

A simple solution does exist; program the flash with a different bootloader. Ladyada does that, and it seems a robust, simple solution.

To facilitate that, I'd prefer to have the unused pins on the FTDI (USB to serial) wired up to a more convenient header so that it can be used in "bit-banging" mode to reprogram the Arduino, then folks who want a different bootloader can flash a new bootloader with minimal extra cost.

I'd like the unused FTDI header pins to have ground and +V in an 2x3 arrangement so a simple 6-pin to 6pin header is all that is needed to reprogram the board. It will cost a redesign of the PCB, but I think at least one attempt already exists by Solarbotics. (My only reservation is the pin layout is not a 2x3 match to ICSP header for an easy cable connection)
[edit]I did say I'd like the FTDI header to not need to be cleared of solder but I think that doesn't matter, and it protects the pads, and is probably easy to do, so cover them in solder![/edit]

That might satisfy use cases of people who want to reprogram the bootloader, or the whole board, without extra cost, or external hardware. It doesn't change the Arduino's more significant (IMHO) physical interface.
(It would satisfy my use case in that area when the functionality is in avrdude and the Arduino IDE :))

HTH
GB