Skip to content

Reference RevE Bootloader

shinhub edited this page Aug 18, 2019 · 3 revisions

Original RevE rebooted bootloader reference

NOTE: this is NOT required to flash the RevE rebooted with a new firmware from a regular user perspective. Please go to "Flashing" section of this Wiki menu if you want to flash a new firmware to RevE rebooted.

The problem is that RevE rebooted as we buy them are stuffed with a modified bootloader. Such bootloader does not accept firmware flashing through USB with standard DFU tools, and require compiled firmwares to be encrypted/scrambled, with @slurdge crypto_operations.py tool in this repo for OSX and GNU/Linux, or with original manufacturer-provided Windows binaries.

This describes the 'reverse-engineering' current work on original RevE bootloader, in order to find a way to build and flash it ourselves through USB, and fully unlock the RevE. This is mainly based on issue #11 for now.

  • The original bootloader in RevE is an Atmel-provided ATxmega32A4U DFU USB bootloader source, with changed default ISP I/O pining (PORTA instead of PORTC, and PIN6 instead of PIN3), and which is then patched, using script Firmware/Atmel DFU Bootloader/GenerateBootloader.bat in this repo;
  • The result of this previous operation is the original compiled RevE bootloader, as found in Firmware/Compiled/ChameleonMiniRDV2.0_ATxmega32A4U.hex in this repo;
  • The compiled Atmel-provided ATxmega32A4U DFU USB bootloader source, with ISP I/O pining adapted for RevE, as it is supposed to be fed in GenerateBootloader.bat, is found as RevE-atxmega32a4u_104_modified.hex in emsec ChameleonMini repo. It would have to be renamed as atxmega32a4u_104_PA6.hex to work with GenerateBootloader.bat;
  • We can access, and compile, the Atmel-provided ATxmega32A4U DFU USB bootloader source. Source is packed in ZIP file in this page from Atmel technical support centre. The source is originally attached to a Document of type "Application Note", called "Atmel AVR1916: USB DFU Boot Loader for XMEGA", which is notably linked in ATxmega32A4U product page;
  • Compiled need to be 4Kbytes max in size. As so, it seems that the IAR AVR Workbench software/compiler is needed to compile the bootloader, as it is the only one that is able to produce such size. The software is expensive, but a free evaluation version is available, provided the compiled object is < 4K;
  • @exander77 already provided a patch for Atmel-provided ATxmega32A4U DFU USB bootloader source to reflect RevE non-default ISP I/O pining, in this commit from his repo.

It is as so possible to flash a patched and compiled Atmel-provided ATxmega32A4U DFU USB bootloader into RevE rebooted, so that it is then fully unlocked and accepts to be firmware-flashed with standard DFU methods through USB.

For now, it is only possible to flash the patched and compiled Atmel-provided ATxmega32A4U DFU USB bootloader using a hardware interface, like described here.