« Back to home

Bootloaders and Bricked AVRs

The last project based around an ATtiny85 was pretty successful, I'm impressed with what you can squeeze out of the chips and I have a few more smaller projects that they would be perfect for as well.

One of the more frustrating aspects was having to physically move the chip from the circuit to the programmer every time I wanted to update the firmware - by the fourth iteration I was wishing very hard for some sort of serial bootloader. The ATtiny doesn't have a UART on board but the functionality can be implemented in software (and, with the help of a little bit of hardware, can be done on a single pin).

I thought that taking that idea, and going over the source code for some existing bootloaders for the ATtiny and ATmega, would give me enough information to write my own. Although it would probably be smarter to use an existing bootloader (or at least implement and existing bootloader protocol) I wanted to use the task as an opportunity to get more in depth with the AVR architecture as well as learn more about the boot-loading process. To make things a little more tricky I would like to implement the bootloader protocol I come up with on the PIC16F1872 and PIC32MX series of chips - all CPUs used in my Microboard form factor.

While I'm busy mucking around with bootloaders and fuse bits I run a fairly high risk of bricking the AVR - putting into a state that you can only get out of by using High Voltage Programming or HVP - something that my little USBasp programmer can't do. Luckily, I found this tool which will automatically fix the fuses on a range of AVR chips to allow ISP programming to work again . I'm going to build one up over the next few days before I get too heavily into testing the bootloader- an image of what the finished product should look like is on the left, I doubt mine is going to look that neat though.

I'll post an update on how well the device works once I have one built and running (I intend to deliberately brick some chips just to make sure it can clear them so I'm really hoping it works as advertised). The bootloader project will get it's own write up as well once I've tested it enough to be confident of it's reliability.