picoboot beta release

Go To Last Post
3 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Today I've released the beta-1 version of picoboot. Requiring only 66 bytes of flash, picoboot is the smallest AVR bootloader, taking a quarter of the space of other "tiny" bootloaders which start at around 512 bytes. Not only is it the smallest available bootloader, it is the smallest possible bootloader for AVRs with a 64-byte page size such as the ATtiny84. Picoboot is also fast, taking less than 3 seconds to write 8126 bytes to flash.

Future plans include builds for the ATtiny2313a and support for zero-wire auto-reset.

The code is open-source, and available here:
https://code.google.com/p/picoboot/

I have no special talents.  I am only passionately curious. - Albert Einstein

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:

Not only is it the smallest available bootloader, it is the smallest possible bootloader for AVRs with a 64-byte page size such as the ATtiny84.

Pretty big claim there. Among these freaks, somebody will take on that challenge.

Pretty cool, none the less.

If you don't know my whole story, keep your mouth shut.

If you know my whole story, you're an accomplice. Keep your mouth shut. 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Torby wrote:
Quote:

Not only is it the smallest available bootloader, it is the smallest possible bootloader for AVRs with a 64-byte page size such as the ATtiny84.

Pretty big claim there. Among these freaks, somebody will take on that challenge.

I'm not asserting that nobody could make a bootloader in fewer instructions - in fact I had working versions of picoboot in 27 or 28 instructions. By smaller I mean a smaller memory requirement. If there are a few free bytes in the page, the bootloader would have to modify the page at the same time the code is running in that page. That is not possible on AVR parts since modifying a page requires a page erase followed by page write, and the two together cannot be done in an atomic operation.

I guess it is theoretically possible to have the programmer feed the bootloader instructions to write some extra code to another page, have the bootloader jump to that page, then re-write the bootloader code along with the extra data for the unused portion of the bootloader page, then jump back to the bootloader page and then write the rest of the unused flash. I'm pretty confident though that in practice nobody will be able to do it.

I have no special talents.  I am only passionately curious. - Albert Einstein