Timonel Versions Save

ATtiny85/45/25 I2C bootloader

v1.5

3 years ago

Notes:

  • Production-ready release.
  • Slightly smaller bootloader footprint: some memory got by removing unused pre-checks from the "crt1.S" initialization file (before calling main), and tweaking compiler options. Now smallest bootloader size, when compiled using the "tml-t85-small" @8Mhz configuration, is ~880 bytes (less than 14 pages). This leaves 7.3 Kbytes (114 pages) available for the user application on an ATtiny85.
  • READDEVS command added: this optional command allows getting the device signature bytes, lock, and fuse bits from the device.
  • READEEPR and WRITEEPR commands added: These optional commands are to read and write data to the device's EEPROM. The extended features flag 5 "EEPROM_ACCESS" includes/excludes both commands from the bootloader binary.

v1.4

4 years ago

Notes:

  • Production-ready release.
  • Significant memory saving by inlining TWI driver functions. Now the smaller version "tml-t85-small" occupies ~1 kB, leaving 7 kB available for user applications on a Tiny85.
  • Transmission speed improved by adjusting the code to send and receive 32-byte packets (half memory-page on a Tiny85).
  • User-application autorun is now optional.
  • Internal clock configuration support improved.
  • Two I2C-master applications for ESP8266 included: one for controlling interactively a Tiny85 slave. Another one for controlling multiple Tiny85 slaves in an automatic memory-flashing loop. Streamlined I2C master libraries.

v1.3

4 years ago

Notes:

  • Production-ready release.
  • Bootloader inline functions (smaller code) and low fuse auto clock tweaking.
  • TWI master UploadApplication refactoring.
  • Bootloader now supports both types of page address calculation: bootloader itself and TWI master.
  • Both modes of APP_USE_TPL_PG supported.
  • Several bug fixes.

v1.2

5 years ago

Notes:

  • Production-ready release.
  • "Good-neighbor" behavior: Fixes data dump operation on multi-device bus setups.
  • The TWI master functionality has been packed in a couple of Arduino libraries to ease the handling of the several configuration options. The "timonel-master-ss" firmware shows its usage.
  • The TWI master code was moved to PlatformIO.

v1.1

5 years ago

Notes:

  • Production-ready release.
  • Optional READFLSH command implemented.
  • Minor tweaks for getting Timonel to work reliably at 8 MHz.
  • Operation at 16 Mhz improved.

This bootloader version size, with its current configurations, is ~1.3 kB. That's ~20 pages of 64 bytes.

The ATtiny85 has a total of 128 pages (8 kB), of which 107 are available for the application when the bootloader makes the trampoline calculation internally (as is currently set up).

v1.0

5 years ago

Notes:

  • First production-ready release.
  • Optional features implemented.

This bootloader version size, with its current configurations, is ~1.3 kB. That's ~20 pages of 64 bytes.

The ATtiny85 has a total of 128 pages (8 kB), of which 107 are available for the application when the bootloader makes the trampoline calculation internally (as is currently set up).

If this function gets off-loaded to the I2C master, there is extra page gain, so there would be a total of 108 pages available for the application.

See it working ...

v0.9

5 years ago

Notes:

In this version, the first-page garbage issue after a writing retry when an I2C transmission error occurs is solved. The temporary page buffer is cleared in a way that works before writing the application to flash memory again.

The ATtiny85 datasheet is confusing on how to clear this buffer. Setting CTBP in the SPMCSR register:

SPMCSR |= (1 << CTPB);

is not enough. So this code (or similar) has to be implemented to properly clearing the temporary buffer:

__SPM_REG = (_BV(CTPB) | _BV(__SPM_ENABLE)); asm volatile("spm");

This issue was spotted and its solution suggested by Joey Morin @ AVRFreaks.net

v0.8

5 years ago

Notes:

This version 0.8 is the first fully operational bootloader release (not necessarily bug-free). From now on, new versions will only include optimizations and debugging without functional changes until version 1.0.