Skip to content

Latest commit

 

History

History

all

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Size Usage Version Features Hex file
190 192 u8.0 ----jpr-- attiny2313_min.hex
230 256 u8.0 w---hpr-- atmega8_min.hex
242 256 u8.0 w---hpr-- atmega168_min.hex
244 256 u8.0 w---jPr-- atmega32_min.hex
252 256 u8.0 w---jPr-- attiny167_min.hex
254 256 u8.0 w---jPr-- atmega1280_min.hex
254 256 u8.0 w---jPr-- atmega1284p_min.hex
254 256 u8.0 w---jPr-- atmega2560_min.hex
254 256 u8.0 w---jPr-- atmega644p_min.hex
254 256 u8.0 w---jPr-- attiny84_min.hex
254 256 u8.0 w---jPr-- attiny85_min.hex
256 256 u8.0 w---jPr-- atmega328p_min.hex
256 256 u8.0 w---jPr-- atmega88_min.hex
256 256 u8.0 w---jPra- atmega328p_amin.hex
256 256 u8.0 we--jpr-- attiny2313_emin.hex
304 320 u8.0 we--jPr-- atmega8.hex
316 320 u8.0 we--jPr-- atmega88.hex
318 320 u8.0 we--jPra- atmega88_a.hex
318 320 u8.0 we--jpr-- attiny85.hex
318 320 u8.0 we--jpr-- digispark.hex
320 320 u8.0 we--jPra- atmega8_a.hex
320 320 u8.0 we--jpr-- luminet_baud9600.hex
364 384 u8.0 weU-jPr-- atmega328p_8125khz_swio.hex
366 384 u8.0 weU-jPr-- atmega328p_8000khz_swio.hex
366 384 u8.0 weU-jPr-- atmega328p_swio.hex
366 384 u8.0 weU-jPr-- lilypad.hex
366 384 u8.0 weU-jPr-- pro_8mhz.hex
368 384 u8.0 weU-jPr-- atmega328p_7875khz_swio.hex
368 384 u8.0 weU-jPr-c anarduino.hex
368 384 u8.0 weU-jPr-c atmega328p.hex
368 384 u8.0 weU-jPr-c diecimila.hex
368 384 u8.0 weU-jPr-c jeenode.hex
368 384 u8.0 weU-jPr-c moteino.hex
368 384 u8.0 weU-jPr-c pro_16mhz.hex
368 384 u8.0 weU-jPr-c promini_led13.hex
368 384 u8.0 weU-jPr-c promini_led9.hex
368 384 u8.0 weU-jPr-c timeduino.hex
368 384 u8.0 weU-jPr-c urclock.hex
372 384 u8.0 weU-jPrac atmega32_a.hex
374 384 u8.0 -eU-jPrac atmega328p_fa.hex
376 384 u8.0 weU-jPr-c atmega32.hex
378 384 u8.0 weU-jPrac attiny167_a.hex
382 384 u8.0 weU-jPr-c attiny167.hex
382 384 u8.0 weU-jPr-c digisparkpro.hex
384 384 u8.0 weU-jPr-c atmega328p_led9_50Hz_fp9.hex
384 384 u8.0 weU-jPr-c pro_20mhz.hex
384 384 u8.0 weU-jPrac atmega328p_a.hex
384 384 u8.0 weU-jPrac pro_a.hex
384 384 u8.0 weU-jPrac promini_led13_a.hex
384 384 u8.0 weU-jPrac promini_led9_a.hex
354 512 u8.0 weU-hprac atmega8_h.hex
366 512 u8.0 weU-hprac atmega88_h.hex
394 512 u8.0 weU-jPr-c atmega644p.hex
406 512 u8.0 weU-hprac atmega328p_h.hex
410 512 u8.0 weU-jPrac atmega644p_a.hex
422 512 u8.0 weU-jPr-c atmega1280.hex
422 512 u8.0 weU-jPr-c atmega1284p.hex
422 512 u8.0 weU-jPr-c atmega2560.hex
438 512 u8.0 weU-jPrac atmega1280_a.hex
438 512 u8.0 weU-jPrac atmega1284p_a.hex
438 512 u8.0 weU-jPrac atmega2560_a.hex
474 512 o8.3 -.s-.-r-- optiboot_atmega328.hex
490 512 u8.0 we-djPr-- atmega1284p_d.hex
492 512 u8.0 we-djPr-- atmega1280_d.hex
492 512 u8.0 we-djPr-- atmega2560_d.hex
496 512 u8.0 weUdhpr-c atmega328p_d.hex
496 512 u8.0 weUdjPra- attiny167_ad.hex
504 512 u8.0 weUdhprac moteino_cs8_ad.hex
504 512 u8.0 weUdhprac timeduino_cs8_ad.hex
504 512 u8.0 weUdhprac urclock_cs8_ad.hex
506 512 u8.0 we-djPra- atmega1284p_ad.hex
508 512 u8.0 we-djPra- atmega1280_ad.hex
508 512 u8.0 we-djPra- atmega2560_ad.hex
512 512 u8.0 weUdhprac anarduino_cs5_ad.hex
512 512 u8.0 weUdhprac atmega328p_ad.hex
710 1024 o8.3 -.s-.-r-- bigboot_328.hex
  • Size: Bootloader code size including small table at top end
  • Usage: How many bytes of flash are needed, ie, HW boot section or a multiple of the page size
  • Version: For example, u7.6 is an urboot version, o5.2 is an optiboot version
  • Features:
    • w bootloader provides pgm_write_page(sram, flash) for the application at FLASHEND-4+1
    • e EEPROM read/write support
    • U checks whether flash pages need writing before doing so
    • s uses skeleton of STK500v1 protocol (deprecated); -c urclock and -c arduino both work
    • d dual boot (over-the-air programming from external SPI flash)
    • h hardware boot section: make sure fuses are set for reset to jump to boot section
    • j vector bootloader: applications need to be patched externally, eg, using avrdude -c urclock
    • p bootloader protects itself from being overwritten
    • P vector bootloader only: protects itself and reset vector from being overwritten
    • r preserves reset flags for the application in the register R2
    • a autobaud detection (f_cpu/8n using discrete divisors, n = 1, 2, ..., 256)
    • c bootloader provides chip erase functionality (recommended for large MCUs)
    • . unable to tell from .hex file whether this feature is present
    • - corresponding feature not present
  • Hex file: often qualified by the MCU name and/or configuration
    • swio software I/O (not UART)
    • led9 toggles an LED on, in this example, Arduino pin 9
    • cs8 uses Arduino pin 8 as chip select of external SPI flash memory for dual boot
    • fp9 for debugging the bootloader uses, eg, Arduino pin 9 to swing a signal of low frequency, eg, 50 Hz
    • min most feature-rich bootloader for smallest achievable flash usage

Note that the bootloaders with a part name, eg, atmega8_a.hex are usually template bootloaders: instead of the opcodes for toggling specific LEDs or pulling a specific CS line for external SPI flash memory they hold generic nops of the sort mov rx,rx. This means they can be replaced on the fly just before burning the bootloader; thus specifying the LED, CS or RX/TX pins (for software I/O) can be done at burn time w/o compiling the bootloader. Therefore atmega8_a.hex won't operate blinkenlights, but has placeholder code to insert the right opcodes for doing so. In contrast to this, bootloaders with a board name, eg, jeenode will normally have been compiled for that board, ie, the bootloader uses the LED and/or CS for external SPI flash memory as is on that board.