#
# Boards.txt file for Optiboot platforms, in format for Arduino 1.5.x and later.
#
# See: http://github.com/Arduino/arduino/

name=[Optiboot]
version=6.2

##############################################################
##  Optiboot on 28-pin processors (atmega8/88/168/328/etc)

menu.cpu=Processor
menu.mhz=CPU Speed

optiboot28.name=Optiboot on 28-pin cpus

optiboot28.upload.tool=arduino:avrdude
optiboot28.upload.protocol=arduino
optiboot28.upload.speed=115200

optiboot28.bootloader.tool=arduino:avrdude
optiboot28.bootloader.low_fuses=0xF7
optiboot28.bootloader.unlock_bits=0x3F
optiboot28.bootloader.lock_bits=0x2F
optiboot28.build.f_cpu=16000000L


#
# Other Clock speeds.
#  For 8MHz using the internal RC Oscillator, we adjust fuses, use the same
#  bootloader binary, and halve the upload rate.
#
optiboot28.menu.mhz.16MHz=16MHz
optiboot28.menu.mhz.16MHz.upload.speed=115200
optiboot28.menu.mhz.8MHz=8MHz (int)
optiboot28.menu.mhz.8MHz.build.f_cpu=8000000L
optiboot28.menu.mhz.8MHz.bootloader.low_fuses=0xE2
optiboot28.menu.mhz.8MHz.upload.speed=57600
optiboot28.menu.mhz.1MHz=1MHz (int)
optiboot28.menu.mhz.1MHz.build.f_cpu=1000000L
optiboot28.menu.mhz.1MHz.bootloader.low_fuses=0x62
optiboot28.menu.mhz.1MHz.upload.speed=9600

# optiboot platforms should be UNO-like more than anything else.
optiboot28.build.board=AVR_UNO
optiboot28.build.core=arduino:arduino
optiboot28.build.variant=arduino:standard


## Optiboot for ATmega328p
## ---------------------------------------------
optiboot28.menu.cpu.atmega328p=ATmega328p
optiboot28.menu.cpu.atmega328p.upload.maximum_size=32256
optiboot28.menu.cpu.atmega328p.upload.maximum_data_size=2048

optiboot28.menu.cpu.atmega328p.bootloader.high_fuses=0xDE
optiboot28.menu.cpu.atmega328p.bootloader.extended_fuses=0x05
optiboot28.menu.cpu.atmega328p.bootloader.file=optiboot/optiboot_atmega328.hex

optiboot28.menu.cpu.atmega328p.build.mcu=atmega328p

## Optiboot for ATmega328
## ---------------------------------------------
optiboot28.menu.cpu.atmega328=ATmega328
optiboot28.menu.cpu.atmega328.upload.maximum_size=32256
optiboot28.menu.cpu.atmega328.upload.maximum_data_size=2048

optiboot28.menu.cpu.atmega328.bootloader.high_fuses=0xDE
optiboot28.menu.cpu.atmega328.bootloader.extended_fuses=0x05
optiboot28.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
# lie!  Arduino wise, these are compatible
optiboot28.menu.cpu.atmega328.build.mcu=atmega328p


## Optiboot ATmega168
## ---------------------------------------------
optiboot28.menu.cpu.atmega168=ATmega168

optiboot28.menu.cpu.atmega168.upload.maximum_size=15872
optiboot28.menu.cpu.atmega168.upload.maximum_data_size=1024

optiboot28.menu.cpu.atmega168.bootloader.high_fuses=0xDD
optiboot28.menu.cpu.atmega168.bootloader.extended_fuses=0xFC
optiboot28.menu.cpu.atmega168.bootloader.file=optiboot/optiboot_atmega168.hex

optiboot28.menu.cpu.atmega168.build.mcu=atmega168

## ---------------------------------------------
optiboot28.menu.cpu.atmega168p=ATmega168p

optiboot28.menu.cpu.atmega168p.upload.maximum_size=15872
optiboot28.menu.cpu.atmega168p.upload.maximum_data_size=1024

optiboot28.menu.cpu.atmega168p.bootloader.high_fuses=0xDD
optiboot28.menu.cpu.atmega168p.bootloader.extended_fuses=0xFC
optiboot28.menu.cpu.atmega168p.bootloader.file=optiboot/optiboot_atmega168.hex

optiboot28.menu.cpu.atmega168p.build.mcu=atmega168p


## optiboot for ATmega8
## ---------------------------------------------
optiboot28.menu.cpu.atmega8=ATmega8

optiboot28.menu.cpu.atmega8.upload.maximum_size=7680
optiboot28.menu.cpu.atmega8.upload.maximum_data_size=1024

optiboot28.menu.cpu.atmega8.bootloader.high_fuses=0xCC
optiboot28.menu.cpu.atmega8.bootloader.low_fuses=0xBF
# optiboot28.menu.cpu.atmega8.bootloader.extended_fuses=0x00
optiboot28.menu.cpu.atmega8.bootloader.file=optiboot/optiboot_atmega8.hex

optiboot28.menu.cpu.atmega8.build.mcu=atmega8

## Atmega88
## ---------------------------------------------
optiboot28.menu.cpu.atmega88=ATmega88

optiboot28.menu.cpu.atmega88.upload.maximum_size=7680
optiboot28.menu.cpu.atmega88.upload.maximum_data_size=1024

optiboot28.menu.cpu.atmega88.bootloader.high_fuses=0xDD
optiboot28.menu.cpu.atmega88.bootloader.extended_fuses=0xFC
optiboot28.menu.cpu.atmega88.bootloader.file=optiboot/optiboot_atmega88.hex

optiboot28.menu.cpu.atmega88.build.mcu=atmega88p


##############################################################
## Optiboot on 32pin (SMT) CPUs (Nano, Pro Micro, etc.)
##############################################################

optiboot32.name=Optiboot on 32-pin cpus

optiboot32.upload.tool=arduino:avrdude
optiboot32.upload.protocol=arduino
optiboot32.upload.speed=115200

optiboot32.bootloader.tool=arduino:avrdude
optiboot32.bootloader.low_fuses=0xF7
optiboot32.bootloader.unlock_bits=0x3F
optiboot32.bootloader.lock_bits=0x2F
optiboot32.build.f_cpu=16000000L

#
# Other Clock speeds.
#  For 8MHz using the internal RC Oscillator, we adjust fuses, use the same
#  bootloader binary, and halve the upload rate.
#
optiboot32.menu.mhz.16MHz=16MHz
optiboot32.menu.mhz.16MHz.upload.speed=115200
optiboot32.menu.mhz.8MHz=8MHz (int)
optiboot32.menu.mhz.8MHz.build.f_cpu=8000000L
optiboot32.menu.mhz.8MHz.bootloader.low_fuses=0xE2
optiboot32.menu.mhz.8MHz.upload.speed=57600
optiboot32.menu.mhz.1MHz=1MHz (int)
optiboot32.menu.mhz.1MHz.build.f_cpu=1000000L
optiboot32.menu.mhz.1MHz.bootloader.low_fuses=0x62
optiboot32.menu.mhz.1MHz.upload.speed=9600

# optiboot platforms should be UNO-like more than anything else.
optiboot32.build.board=AVR_UNO
optiboot32.build.core=arduino:arduino
optiboot32.build.variant=arduino:eightanaloginputs


## Optiboot for ATmega328p
## ---------------------------------------------
optiboot32.menu.cpu.atmega328p=ATmega328p
optiboot32.menu.cpu.atmega328p.upload.maximum_size=32256
optiboot32.menu.cpu.atmega328p.upload.maximum_data_size=2048

optiboot32.menu.cpu.atmega328p.bootloader.high_fuses=0xDE
optiboot32.menu.cpu.atmega328p.bootloader.extended_fuses=0x05
optiboot32.menu.cpu.atmega328p.bootloader.file=optiboot/optiboot_atmega328.hex

optiboot32.menu.cpu.atmega328p.build.mcu=atmega328p

## Optiboot for ATmega328
## ---------------------------------------------
optiboot32.menu.cpu.atmega328=ATmega328
optiboot32.menu.cpu.atmega328.upload.maximum_size=32256
optiboot32.menu.cpu.atmega328.upload.maximum_data_size=2048

optiboot32.menu.cpu.atmega328.bootloader.high_fuses=0xDE
optiboot32.menu.cpu.atmega328.bootloader.extended_fuses=0x05
optiboot32.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
# lie!  Arduino wise, these are compatible
optiboot32.menu.cpu.atmega328.build.mcu=atmega328p


## Optiboot ATmega168
## ---------------------------------------------
optiboot32.menu.cpu.atmega168=ATmega168

optiboot32.menu.cpu.atmega168.upload.maximum_size=15872
optiboot32.menu.cpu.atmega168.upload.maximum_data_size=1024

optiboot32.menu.cpu.atmega168.bootloader.high_fuses=0xDD
optiboot32.menu.cpu.atmega168.bootloader.extended_fuses=0xFC
optiboot32.menu.cpu.atmega168.bootloader.file=optiboot/optiboot_atmega168.hex

optiboot32.menu.cpu.atmega168.build.mcu=atmega168

## ---------------------------------------------
optiboot32.menu.cpu.atmega168p=ATmega168p

optiboot32.menu.cpu.atmega168p.upload.maximum_size=15872
optiboot32.menu.cpu.atmega168p.upload.maximum_data_size=1024

optiboot32.menu.cpu.atmega168p.bootloader.high_fuses=0xDD
optiboot32.menu.cpu.atmega168p.bootloader.extended_fuses=0xFC
optiboot32.menu.cpu.atmega168p.bootloader.file=optiboot/optiboot_atmega168.hex

optiboot32.menu.cpu.atmega168p.build.mcu=atmega168p



##############################################################
## Other optiboot platforms
##############################################################

optiboot1280.name=Optiboot on Mega1280

optiboot1280.upload.tool=arduino:avrdude
optiboot1280.upload.protocol=arduino
optiboot1280.upload.speed=115200

optiboot1280.bootloader.tool=arduino:avrdude
optiboot1280.bootloader.unlock_bits=0x3F
optiboot1280.bootloader.lock_bits=0x2F

optiboot1280.build.f_cpu=16000000L

optiboot1280.build.board=AVR_MEGA
optiboot1280.build.core=arduino:arduino
optiboot1280.build.variant=arduino:mega

optiboot1280.upload.maximum_size=130048
optiboot1280.upload.maximum_data_size=8192

optiboot1280.bootloader.low_fuses=0xFF
optiboot1280.bootloader.high_fuses=0xDE
optiboot1280.bootloader.extended_fuses=0x05
optiboot1280.bootloader.file=optiboot/optiboot_atmega1280.hex

optiboot1280.build.mcu=atmega1280

##############################################################


optiboot1284.name=Optiboot on (generic) Mega1284

optiboot1284.upload.tool=arduino:avrdude
optiboot1284.upload.protocol=arduino
optiboot1284.upload.speed=115200

optiboot1284.bootloader.tool=arduino:avrdude
optiboot1284.bootloader.unlock_bits=0x3F
optiboot1284.bootloader.lock_bits=0x2F

optiboot1284.build.f_cpu=16000000L

optiboot1284.build.board=AVR_M1284
optiboot1284.build.core=arduino:arduino
optiboot1284.build.variant=arduino:standard

optiboot1284.upload.maximum_size=130048
optiboot1284.upload.maximum_data_size=16384

# Select full swing crystal oscillator (F7 rather than FF)
optiboot1284.bootloader.low_fuses=0xF7
optiboot1284.bootloader.high_fuses=0xDE
optiboot1284.bootloader.extended_fuses=0x05
optiboot1284.bootloader.file=optiboot/optiboot_atmega1284p.hex

optiboot1284.build.mcu=atmega1284p

##############################################################


optibootm32.name=Optiboot on Mega32

optibootm32.upload.tool=arduino:avrdude
optibootm32.upload.protocol=arduino
optibootm32.upload.speed=115200

optibootm32.bootloader.tool=arduino:avrdude
optibootm32.bootloader.unlock_bits=0x3F
optibootm32.bootloader.lock_bits=0x2F

optibootm32.build.f_cpu=16000000L

optibootm32.build.board=AVR_M32
optibootm32.build.core=arduino:arduino
optibootm32.build.variant=arduino:standard

optibootm32.upload.maximum_size=130048
optibootm32.upload.maximum_data_size=8192

optibootm32.bootloader.low_fuses=0xBF
optibootm32.bootloader.high_fuses=0xCE
optibootm32.bootloader.extended_fuses=0xFF
optibootm32.bootloader.file=optiboot/optiboot_atmega32.hex

optibootm32.build.mcu=atmega32


##############################################################

optiboott84.name=Optiboot on Tiny84

optiboott84.menu.mhz.8MHz=8MHz (int)
optiboott84.menu.mhz.8MHz.build.f_cpu=8000000L
optiboott84.menu.mhz.8MHz.upload.speed=57600
optiboott84.menu.mhz.8MHz.bootloader.file=optiboot/optiboot_attiny84_8mhz.hex
optiboott84.menu.mhz.8MHz.bootloader.low_fuses=0xE2
optiboott84.menu.mhz.8MHz.bootloader.high_fuses=0xDE
optiboott84.menu.mhz.8MHz.bootloader.extended_fuses=0xFE

optiboott84.menu.mhz.1MHz=1MHz (int)
optiboott84.menu.mhz.1MHz.build.f_cpu=1000000L
optiboott84.menu.mhz.1MHz.upload.speed=9600
optiboott84.menu.mhz.1MHz.bootloader.file=optiboot/optiboot_attiny84.hex
optiboott84.menu.mhz.1MHz.bootloader.low_fuses=0x62
optiboott84.menu.mhz.1MHz.bootloader.high_fuses=0xDE
optiboott84.menu.mhz.1MHz.bootloader.extended_fuses=0xFE

optiboott84.upload.tool=arduino:avrdude
optiboott84.upload.protocol=arduino
optiboott84.upload.speed=9600

optiboott84.bootloader.tool=arduino:avrdude
optiboott84.bootloader.unlock_bits=0x3F
optiboott84.bootloader.lock_bits=0x2F

optiboott84.build.f_cpu=1000000L

optiboott84.build.board=AVR_TINY
optiboott84.build.core=tiny:tiny
optiboott84.build.variant=tiny:tiny

optiboott84.upload.maximum_size=7600
optiboott84.upload.maximum_data_size=512

optiboott84.build.mcu=attiny84

##############################################################

optiboot2560.name=Optiboot on Mega2560

optiboot2560.upload.tool=arduino:avrdude
optiboot2560.upload.protocol=arduino
optiboot2560.upload.speed=115200

optiboot2560.bootloader.tool=arduino:avrdude
optiboot2560.bootloader.unlock_bits=0x3F
optiboot2560.bootloader.lock_bits=0x2F

optiboot2560.build.f_cpu=16000000L

optiboot2560.build.board=AVR_MEGA
optiboot2560.build.core=arduino:arduino
optiboot2560.build.variant=arduino:mega

optiboot2560.upload.maximum_size=261120
optiboot2560.upload.maximum_data_size=8192

optiboot2560.bootloader.low_fuses=0xF7
optiboot2560.bootloader.high_fuses=0xDE
optiboot2560.bootloader.extended_fuses=0xFD
optiboot2560.bootloader.file=optiboot/optiboot_atmega2560.hex

optiboot2560.build.mcu=atmega2560

##############################################################


optibootxmini168b.name=Optiboot Xplained Mini 168pb

optibootxmini168b.upload.tool=arduino:avrdude
optibootxmini168b.upload.protocol=arduino
optibootxmini168b.upload.speed=57600

optibootxmini168b.bootloader.tool=arduino:avrdude
optibootxmini168b.bootloader.unlock_bits=0x3F
optibootxmini168b.bootloader.lock_bits=0x2F

optibootxmini168b.build.f_cpu=16000000L

optibootxmini168b.build.board=AVR_UNO
optibootxmini168b.build.core=arduino:arduino
optibootxmini168b.build.variant=arduino:standard

optibootxmini168b.upload.maximum_size=15872
optibootxmini168b.upload.maximum_data_size=1024

optibootxmini168b.bootloader.low_fuses=0xBF
optibootxmini168b.bootloader.high_fuses=0xCE
optibootxmini168b.bootloader.extended_fuses=0xFF
optibootxmini168b.bootloader.file=optiboot/optiboot_xplained168b.hex

optibootxmini168b.build.mcu=atmega168

#############################


optibootxmini328pb.name=Optiboot Xplained Mini 328pb

optibootxmini328pb.upload.tool=arduino:avrdude
optibootxmini328pb.upload.protocol=arduino
optibootxmini328pb.upload.speed=57600

optibootxmini328pb.bootloader.tool=arduino:avrdude
optibootxmini328pb.bootloader.unlock_bits=0x3F
optibootxmini328pb.bootloader.lock_bits=0x2F

optibootxmini328pb.build.f_cpu=16000000L

optibootxmini328pb.build.board=AVR_UNO
optibootxmini328pb.build.core=arduino:arduino
optibootxmini328pb.build.variant=arduino:standard

optibootxmini328pb.upload.maximum_size=32128
optibootxmini328pb.upload.maximum_data_size=1024

optibootxmini328pb.bootloader.low_fuses=0xBF
optibootxmini328pb.bootloader.high_fuses=0xCE
optibootxmini328pb.bootloader.extended_fuses=0xFF
optibootxmini328pb.bootloader.file=optiboot/optiboot_xplained328pb.hex

optibootxmini328pb.build.mcu=atmega328p

#############################


optibootxmini328p.name=Optiboot Xplained Mini 328p

optibootxmini328p.upload.tool=arduino:avrdude
optibootxmini328p.upload.protocol=arduino
optibootxmini328p.upload.speed=57600

optibootxmini328p.bootloader.tool=arduino:avrdude
optibootxmini328p.bootloader.unlock_bits=0x3F
optibootxmini328p.bootloader.lock_bits=0x2F

optibootxmini328p.build.f_cpu=16000000L

optibootxmini328p.build.board=AVR_UNO
optibootxmini328p.build.core=arduino:arduino
optibootxmini328p.build.variant=arduino:standard

optibootxmini328p.upload.maximum_size=32128
optibootxmini328p.upload.maximum_data_size=1024

optibootxmini328p.bootloader.low_fuses=0xBF
optibootxmini328p.bootloader.high_fuses=0xCE
optibootxmini328p.bootloader.extended_fuses=0xFF
optibootxmini328p.bootloader.file=optiboot/optiboot_xplained328p.hex

optibootxmini328p.build.mcu=atmega328p
