From f38f7cb4615d6fbd41632b814a469a743d956a56 Mon Sep 17 00:00:00 2001 From: Katya Date: Tue, 5 Mar 2024 16:37:26 +0300 Subject: [PATCH] change stk500 files --- bootloaders/stk500v2/Makefile | 628 ++++++- .../Mega2560-prod-firmware-2011-06-29.hex | 513 ++++++ bootloaders/stk500v2/STK500V2.pnproj | 1 + bootloaders/stk500v2/STK500V2.pnps | 1 + .../{avr_cpunames.h => avr-1.8.6_cpunames.h} | 0 ...rruptnames.h => avr-1.8.6interruptnames.h} | 0 bootloaders/stk500v2/makedep.mk | 6 - bootloaders/stk500v2/stk500boot.c | 968 +++++++++- .../stk500v2/stk500boot.componentinfo.xml | 86 - bootloaders/stk500v2/stk500boot.cproj | 174 -- bootloaders/stk500v2/stk500boot.d | 67 - bootloaders/stk500v2/stk500boot.o | Bin 23616 -> 0 bytes bootloaders/stk500v2/stk500boot.ppg | 1 + .../stk500v2/stk500boot_v2_mega2560.eep | 2 - .../stk500v2/stk500boot_v2_mega2560.elf | Bin 22576 -> 0 bytes .../stk500v2/stk500boot_v2_mega2560.hex | 587 ++++-- .../stk500v2/stk500boot_v2_mega2560.lss | 1641 ----------------- .../stk500v2/stk500boot_v2_mega2560.map | 582 ------ .../stk500v2/stk500boot_v2_mega2560.srec | 123 -- 19 files changed, 2474 insertions(+), 2906 deletions(-) create mode 100644 bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex create mode 100644 bootloaders/stk500v2/STK500V2.pnproj create mode 100644 bootloaders/stk500v2/STK500V2.pnps rename bootloaders/stk500v2/{avr_cpunames.h => avr-1.8.6_cpunames.h} (100%) rename bootloaders/stk500v2/{avrinterruptnames.h => avr-1.8.6interruptnames.h} (100%) delete mode 100644 bootloaders/stk500v2/makedep.mk delete mode 100644 bootloaders/stk500v2/stk500boot.componentinfo.xml delete mode 100644 bootloaders/stk500v2/stk500boot.cproj delete mode 100644 bootloaders/stk500v2/stk500boot.d delete mode 100644 bootloaders/stk500v2/stk500boot.o create mode 100644 bootloaders/stk500v2/stk500boot.ppg delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.eep delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.elf delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.lss delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.map delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.srec diff --git a/bootloaders/stk500v2/Makefile b/bootloaders/stk500v2/Makefile index c4cf20d..1bde7b1 100644 --- a/bootloaders/stk500v2/Makefile +++ b/bootloaders/stk500v2/Makefile @@ -1,127 +1,587 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ +# ---------------------------------------------------------------------------- +# Makefile to compile and link stk500boot bootloader +# Author: Peter Fleury +# based on WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. +# +# Adjust F_CPU below to the clock frequency in Mhz of your AVR target +# Adjust BOOTLOADER_ADDRESS to your AVR target +# +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device, using avrdude. +# Please customize the avrdude settings below first! +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- +# = Mark Sproul msproul-at-skychariot.com + + +# MCU name +#MCU = atmega128 + + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +#F_CPU = 16000000 + + +# Bootloader +# Please adjust if using a different AVR +# 0x0e00*2=0x1C00 for ATmega8 512 words Boot Size +# 0xFC00*2=0x1F800 for ATmega128 1024 words Boot Size +# 0xF800*2=0x1F000 for ATmega1280 +# 0xF000*2=0x1E000 for ATmega1280 +#BOOTLOADER_ADDRESS = 1E000 + + +# Output format. (can be srec, ihex, binary) +FORMAT = ihex + + +# Target file name (without extension). +TARGET = stk500boot + + +# List C source files here. (C dependencies are automatically generated.) +SRC = stk500boot.c -SHELL := cmd.exe -RM := rm -rf -USER_OBJS := +# List Assembler source files here. +# Make them always end in a capital .S. Files ending in a lowercase .s +# will not be considered source files but generated files (assembler +# output from the compiler), and will be deleted upon "make clean"! +# Even though the DOS/Win* filesystem matches both .s and .S the same, +# it will preserve the spelling of the filenames, and gcc itself does +# care about how the name is spelled on its command-line. +ASRC = + -LIBS := -PROJ := +# Optimization level, can be [0, 1, 2, 3, s]. +# 0 = turn off optimization. s = optimize for size. +# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) +OPT = s -O_SRCS := -C_SRCS := -S_SRCS := -S_UPPER_SRCS := -OBJ_SRCS := -ASM_SRCS := -PREPROCESSING_SRCS := -OBJS := -OBJS_AS_ARGS := -C_DEPS := -C_DEPS_AS_ARGS := -EXECUTABLES := -OUTPUT_FILE_PATH := -OUTPUT_FILE_PATH_AS_ARGS := -AVR_APP_PATH :=$$$AVR_APP_PATH$$$ -QUOTE := " -ADDITIONAL_DEPENDENCIES:= -OUTPUT_FILE_DEP:= -LIB_DEP:= -LINKER_SCRIPT_DEP:= -# Every subdirectory with source files must be described here -SUBDIRS := +# Debugging format. +# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. +# AVR Studio 4.10 requires dwarf-2. +# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. +DEBUG = dwarf-2 -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../stk500boot.c +# List any extra directories to look for include files here. +# Each directory must be separated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRAINCDIRS = -PREPROCESSING_SRCS += +# Compiler flag to set the C Standard level. +# c89 = "ANSI" C +# gnu89 = c89 plus GCC extensions +# c99 = ISO C99 standard (not yet fully implemented) +# gnu99 = c99 plus GCC extensions +CSTANDARD = -std=gnu99 -ASM_SRCS += +# Place -D or -U options here +CDEFS = -DF_CPU=$(F_CPU)UL -OBJS += \ -stk500boot.o +# Place -I options here +CINCS = -OBJS_AS_ARGS += \ -stk500boot.o -C_DEPS += \ -stk500boot.d -C_DEPS_AS_ARGS += \ -stk500boot.d +#---------------- Compiler Options ---------------- +# -g*: generate debugging information +# -O*: optimization level +# -f...: tuning, see GCC manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns...: create assembler listing +CFLAGS = -g$(DEBUG) +CFLAGS += $(CDEFS) $(CINCS) +CFLAGS += -O$(OPT) +CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-jump-tables +CFLAGS += -Wall -Wstrict-prototypes +CFLAGS += -Wa,-adhlns=$(<:.c=.lst) +CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +CFLAGS += $(CSTANDARD) -OUTPUT_FILE_PATH +=stk500boot_v2_mega2560.elf -OUTPUT_FILE_PATH_AS_ARGS +=stk500boot_v2_mega2560.elf +#---------------- Assembler Options ---------------- +# -Wa,...: tell GCC to pass this to the assembler. +# -ahlms: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs -ADDITIONAL_DEPENDENCIES:= -OUTPUT_FILE_DEP:= ./makedep.mk +#---------------- Library Options ---------------- +# Minimalistic printf version +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min -LIB_DEP+= +# Floating point printf version (requires MATH_LIB = -lm below) +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt -LINKER_SCRIPT_DEP+= +# If this is left blank, then it will use the Standard printf version. +PRINTF_LIB = +#PRINTF_LIB = $(PRINTF_LIB_MIN) +#PRINTF_LIB = $(PRINTF_LIB_FLOAT) -# AVR32/GNU C Compiler -./stk500boot.o: .././stk500boot.c - @echo Building file: $< - @echo Invoking: AVR/GNU C Compiler : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -DF_CPU=16000000UL -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega2560 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\gcc\dev\atmega2560" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" - @echo Finished building: $< - +# Minimalistic scanf version +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min +# Floating point + %[ scanf version (requires MATH_LIB = -lm below) +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt +# If this is left blank, then it will use the Standard scanf version. +SCANF_LIB = +#SCANF_LIB = $(SCANF_LIB_MIN) +#SCANF_LIB = $(SCANF_LIB_FLOAT) -# AVR32/GNU Preprocessing Assembler +MATH_LIB = -lm -# AVR32/GNU Assembler +#---------------- External Memory Options ---------------- +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff +EXTMEMOPTS = + + + + +#---------------- Linker Options ---------------- +# -Wl,...: tell GCC to pass this to linker. +# -Map: create map file +# --cref: add cross reference to map file +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref +LDFLAGS += $(EXTMEMOPTS) +LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) + + +#--------------- bootloader linker Options ------- +# BOOTLOADER_ADDRESS (=Start of Boot Loader section +# in bytes - not words) is defined above. +#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles -nodefaultlibs +#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles +LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) + +#---------------- Programming Options (avrdude) ---------------- + +# Programming hardware: alf avr910 avrisp bascom bsd +# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 +# +# Type: avrdude -c ? +# to get a full listing. +# +AVRDUDE_PROGRAMMER = stk500v2 + +# com1 = serial port. Use lpt1 to connect to parallel port. +AVRDUDE_PORT = com1 # programmer connected to serial device + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE_COUNTER = -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_NO_VERIFY = -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See +# to submit bug reports. +#AVRDUDE_VERBOSE = -v -v + +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) +AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) +AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) + + + +#---------------- Debugging Options ---------------- + +# For simulavr only - target MCU frequency. +DEBUG_MFREQ = $(F_CPU) + +# Set the DEBUG_UI to either gdb or insight. +# DEBUG_UI = gdb +DEBUG_UI = insight + +# Set the debugging back-end to either avarice, simulavr. +DEBUG_BACKEND = avarice +#DEBUG_BACKEND = simulavr + +# GDB Init Filename. +GDBINIT_FILE = __avr_gdbinit + +# When using avarice settings for the JTAG +JTAG_DEV = /dev/com1 + +# Debugging port used to communicate between GDB / avarice / simulavr. +DEBUG_PORT = 4242 + +# Debugging host used to communicate between GDB / avarice / simulavr, normally +# just set to localhost unless doing some sort of crazy debugging when +# avarice is running on a different computer. +DEBUG_HOST = localhost + + + +#============================================================================ + + +# Define programs and commands. +SHELL = sh +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +NM = avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +COPY = cp +WINSHELL = cmd + + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: + + + + +# Define all object files. +OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(SRC:.c=.lst) $(ASRC:.S=.lst) + + +# Compiler flags to generate dependency files. +GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) - -$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) - @echo Building target: $@ - @echo Invoking: AVR/GNU Linker : 5.4.0 - $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="stk500boot_v2_mega2560.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mrelax -Wl,-section-start=.text=3e000 -mmcu=atmega2560 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\gcc\dev\atmega2560" - @echo Finished building target: $@ - "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "stk500boot_v2_mega2560.elf" "stk500boot_v2_mega2560.hex" - "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "stk500boot_v2_mega2560.elf" "stk500boot_v2_mega2560.eep" || exit 0 - "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "stk500boot_v2_mega2560.elf" > "stk500boot_v2_mega2560.lss" - "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "stk500boot_v2_mega2560.elf" "stk500boot_v2_mega2560.srec" - "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "stk500boot_v2_mega2560.elf" +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + + +############################################################ +# May 25, 2010 Adding 1280 support +mega1280: MCU = atmega1280 +mega1280: F_CPU = 16000000 +mega1280: BOOTLOADER_ADDRESS = 1E000 +mega1280: CFLAGS += -D_MEGA_BOARD_ +mega1280: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_mega1280.hex + + +############################################################ +# Jul 6, 2010 Adding 2560 support +mega2560: MCU = atmega2560 +mega2560: F_CPU = 16000000 +mega2560: BOOTLOADER_ADDRESS = 3E000 +mega2560: CFLAGS += -D_MEGA_BOARD_ +mega2560: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_mega2560.hex + + +############################################################ +#Initial config on Amber128 board +# avrdude: Device signature = 0x1e9702 +# avrdude: safemode: lfuse reads as 8F +# avrdude: safemode: hfuse reads as CB +# avrdude: safemode: efuse reads as FF +# Jul 17, 2010 Adding 128 support +############################################################ +amber128: MCU = atmega128 +#amber128: F_CPU = 16000000 +amber128: F_CPU = 14745600 +amber128: BOOTLOADER_ADDRESS = 1E000 +amber128: CFLAGS += -D_BOARD_AMBER128_ +amber128: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_amber128.hex + +############################################################ +# Aug 23, 2010 Adding atmega2561 support +m2561: MCU = atmega2561 +m2561: F_CPU = 8000000 +m2561: BOOTLOADER_ADDRESS = 3E000 +m2561: CFLAGS += -D_ANDROID_2561_ -DBAUDRATE=57600 +m2561: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_android2561.hex + + +############################################################ +# avrdude: Device signature = 0x1e9801 +# avrdude: safemode: lfuse reads as EC +# avrdude: safemode: hfuse reads as 18 +# avrdude: safemode: efuse reads as FD +# Aug 23, 2010 Adding cerebot 2560 @ 8mhz +#avrdude -P usb -c usbtiny -p m2560 -v -U flash:w:/Arduino/WiringBootV2_upd1/stk500boot_v2_cerebotplus.hex +############################################################ +cerebot: MCU = atmega2560 +cerebot: F_CPU = 8000000 +cerebot: BOOTLOADER_ADDRESS = 3E000 +cerebot: CFLAGS += -D_CEREBOTPLUS_BOARD_ -DBAUDRATE=38400 -DUART_BAUDRATE_DOUBLE_SPEED=1 +cerebot: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_cerebotplus.hex + + +############################################################ +# Aug 23, 2010 Adding atmega2561 support +penguino: MCU = atmega32 +penguino: F_CPU = 16000000 +penguino: BOOTLOADER_ADDRESS = 7800 +penguino: CFLAGS += -D_PENGUINO_ -DBAUDRATE=57600 +penguino: begin gccversion sizebefore build sizeafter end + mv $(TARGET).hex stk500boot_v2_penguino.hex + + +# Default target. +all: begin gccversion sizebefore build sizeafter end + +build: elf hex eep lss sym +#build: hex eep lss sym + +elf: $(TARGET).elf +hex: $(TARGET).hex +eep: $(TARGET).eep +lss: $(TARGET).lss +sym: $(TARGET).sym + + + +# Eye candy. +# AVR Studio 3.x does not check make's exit code but relies on +# the following magic strings to be generated by the compile job. +begin: + @echo + @echo $(MSG_BEGIN) + +end: + @echo $(MSG_END) + @echo + + +# Display size of file. +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex +ELFSIZE = $(SIZE) --format=avr --mcu=$(MCU) $(TARGET).elf + +sizebefore: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ + 2>/dev/null; echo; fi + +sizeafter: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ + 2>/dev/null; echo; fi + + + +# Display compiler version information. +gccversion : + @$(CC) --version + + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + +# Generate avr-gdb config/init file which does the following: +# define the reset signal, load the target file, connect to target, and set +# a breakpoint at main(). +gdb-config: + @$(REMOVE) $(GDBINIT_FILE) + @echo define reset >> $(GDBINIT_FILE) + @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) + @echo end >> $(GDBINIT_FILE) + @echo file $(TARGET).elf >> $(GDBINIT_FILE) + @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) +ifeq ($(DEBUG_BACKEND),simulavr) + @echo load >> $(GDBINIT_FILE) +endif + @echo break main >> $(GDBINIT_FILE) + +debug: gdb-config $(TARGET).elf +ifeq ($(DEBUG_BACKEND), avarice) + @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. + @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ + $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) + @$(WINSHELL) /c pause +else + @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ + $(DEBUG_MFREQ) --port $(DEBUG_PORT) +endif + @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + + +coff: $(TARGET).elf + @echo + @echo $(MSG_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(TARGET).cof + + +extcoff: $(TARGET).elf + @echo + @echo $(MSG_EXTENDED_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof + + +# Create final output files (.hex, .eep) from ELF output file. +%.hex: %.elf + @echo + @echo $(MSG_FLASH) $@ + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +%.eep: %.elf + @echo + @echo $(MSG_EEPROM) $@ + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +%.lss: %.elf + @echo + @echo $(MSG_EXTENDED_LISTING) $@ + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +%.sym: %.elf + @echo + @echo $(MSG_SYMBOL_TABLE) $@ + $(NM) -n $< > $@ + + + +# Link: create ELF output file from object files. +.SECONDARY : $(TARGET).elf +.PRECIOUS : $(OBJ) +%.elf: $(OBJ) + @echo + @echo $(MSG_LINKING) $@ + $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +%.o : %.c + @echo + @echo $(MSG_COMPILING) $< + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +%.s : %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +%.o : %.S + @echo + @echo $(MSG_ASSEMBLING) $< + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + +# Create preprocessed source for use in sending a bug report. +%.i : %.c + $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ + + +# Target: clean project. +clean: begin clean_list end + +clean_list : + @echo + @echo $(MSG_CLEANING) + $(REMOVE) *.hex + $(REMOVE) *.eep + $(REMOVE) *.cof + $(REMOVE) *.elf + $(REMOVE) *.map + $(REMOVE) *.sym + $(REMOVE) *.lss + $(REMOVE) $(OBJ) + $(REMOVE) $(LST) + $(REMOVE) $(SRC:.c=.s) + $(REMOVE) $(SRC:.c=.d) + $(REMOVE) .dep/* + + + +# Include the dependency files. +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + +# Listing of phony targets. +.PHONY : all begin finish end sizebefore sizeafter gccversion \ +build elf hex eep lss sym coff extcoff \ +clean clean_list program debug gdb-config -# Other Targets -clean: - -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) - -$(RM) $(C_DEPS_AS_ARGS) - rm -rf "stk500boot_v2_mega2560.elf" "stk500boot_v2_mega2560.a" "stk500boot_v2_mega2560.hex" "stk500boot_v2_mega2560.lss" "stk500boot_v2_mega2560.eep" "stk500boot_v2_mega2560.map" "stk500boot_v2_mega2560.srec" "stk500boot_v2_mega2560.usersignatures" - \ No newline at end of file diff --git a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex new file mode 100644 index 0000000..a2213ee --- /dev/null +++ b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex @@ -0,0 +1,513 @@ +:020000023000CC +:10E000000D94F6F20D941FF30D941FF30D941FF36E +:10E010000D941FF30D941FF30D941FF30D941FF334 +:10E020000D941FF30D941FF30D941FF30D941FF324 +:10E030000D941FF30D941FF30D941FF30D941FF314 +:10E040000D941FF30D941FF30D941FF30D941FF304 +:10E050000D941FF30D941FF30D941FF30D941FF3F4 +:10E060000D941FF30D941FF30D941FF30D941FF3E4 +:10E070000D941FF30D941FF30D941FF30D941FF3D4 +:10E080000D941FF30D941FF30D941FF30D941FF3C4 +:10E090000D941FF30D941FF30D941FF30D941FF3B4 +:10E0A0000D941FF30D941FF30D941FF30D941FF3A4 +:10E0B0000D941FF30D941FF30D941FF30D941FF394 +:10E0C0000D941FF30D941FF30D941FF30D941FF384 +:10E0D0000D941FF30D941FF30D941FF30D941FF374 +:10E0E0000D941FF341546D65676132353630004140 +:10E0F000726475696E6F206578706C6F72657220DE +:10E1000073746B3530305632206279204D4C530099 +:10E11000426F6F746C6F616465723E004875683F52 +:10E1200000436F6D70696C6564206F6E20203D2028 +:10E1300000435055205479706520202020203D2038 +:10E14000005F5F4156525F415243485F5F203D2070 +:10E1500000415652204C69624320566572203D2092 +:10E16000004743432056657273696F6E20203D203F +:10E1700000435055207369676E61747572653D2068 +:10E18000004C6F77206675736520202020203D208D +:10E1900000486967682066757365202020203D204F +:10E1A00000457874206675736520202020203D206E +:10E1B000004C6F636B2066757365202020203D2026 +:10E1C00000536570202039203230313000312E3636 +:10E1D0002E3700342E332E33005623202020414486 +:10E1E00044522020206F7020636F6465202020201F +:10E1F00020696E737472756374696F6E20616464F4 +:10E2000072202020496E74657272757074006E6F92 +:10E2100020766563746F7200726A6D702020006AE8 +:10E220006D7020005768617420706F72743A0050EE +:10E230006F7274206E6F7420737570706F72746576 +:10E2400064004D7573742062652061206C65747480 +:10E2500065720020005772697474696E67204545C5 +:10E260000052656164696E6720454500656570729E +:10E270006F6D206572726F7220636F756E743D00F2 +:10E28000504F525400303D5A65726F206164647281 +:10E290006573732063747273003F3D435055207360 +:10E2A0007461747300403D454550524F4D20746574 +:10E2B000737400423D426C696E6B204C45440045CE +:10E2C0003D44756D7020454550524F4D00463D44CC +:10E2D000756D7020464C41534800483D48656C7050 +:10E2E000004C3D4C69737420492F4F20506F72745D +:10E2F0007300513D517569742026206A756D702038 +:10E30000746F20757365722070676D00523D44759F +:10E310006D702052414D00563D73686F7720696ED5 +:10E320007465727275707420566563746F727300D1 +:10E33000593D506F727420626C696E6B002A0052F6 +:10E340004553455400494E543000494E543100491C +:10E350004E543200494E543300494E543400494E15 +:10E36000543500494E543600494E54370050434905 +:10E370004E5430005043494E5431005043494E549E +:10E3800032005744540054494D45523020434F4DBC +:10E3900050410054494D45523020434F4D504200AA +:10E3A00054494D455230204F56460054494D455230 +:10E3B0003120434150540054494D45523120434F80 +:10E3C0004D50410054494D45523120434F4D50422C +:10E3D0000054494D45523120434F4D50430054495C +:10E3E0004D455231204F56460054494D455232203A +:10E3F000434F4D50410054494D45523220434F4DFB +:10E4000050420054494D455232204F56460054491F +:10E410004D45523320434150540054494D455233E9 +:10E4200020434F4D50410054494D45523320434FF6 +:10E430004D50420054494D45523320434F4D5043B7 +:10E440000054494D455233204F56460054494D45DE +:10E45000523420434150540054494D4552342043D6 +:10E460004F4D50410054494D45523420434F4D507B +:10E47000420054494D45523420434F4D50430054BF +:10E48000494D455234204F56460054494D4552356A +:10E4900020434150540054494D45523520434F4D7F +:10E4A00050410054494D45523520434F4D50420094 +:10E4B00054494D45523520434F4D50430054494D2A +:10E4C000455235204F564600555341525430205244 +:10E4D000580055534152543020554452450055532D +:10E4E0004152543020545800555341525431205217 +:10E4F000580055534152543120554452450055530C +:10E5000041525431205458005553415254322052F4 +:10E5100058005553415254322055445245005553EA +:10E5200041525432205458005553415254332052D2 +:10E5300058005553415254332055445245005553C9 +:10E5400041525433205458005350492053544300EF +:10E5500041444300414E414C4F4720434F4D5000F2 +:10E560004545205245414459005457490053504DA8 +:10E57000205245414459002A003FE345E34AE34F16 +:10E58000E354E359E35EE363E368E36DE374E37B41 +:10E59000E382E3E9E3F6E303E4ABE3B7E3C4E3D107 +:10E5A000E3DEE386E393E3A0E348E5C8E4D2E4DEF8 +:10E5B000E454E550E560E50EE41AE427E434E44170 +:10E5C000E4E8E4F2E4FEE469E56DE54CE458E46572 +:10E5D000E472E47FE48AE496E4A3E4B0E4BDE408F2 +:10E5E000E512E51EE528E532E53EE50011241FBEF3 +:10E5F000CFEFD1E2DEBFCDBF01E00CBF12E0A0E063 +:10E60000B2E0EAEDFFEF03E00BBF02C007900D920E +:10E61000A030B107D9F712E0A0E0B2E001C01D922E +:10E62000AC30B107E1F70F94FBF40D94EBFF01E27E +:10E630000EBF0FEF0DBF11241FBE0D94FBF40D9400 +:10E6400000F020E030E040ED57E005C0FA013197DE +:10E65000F1F72F5F3F4F28173907C0F308959C014A +:10E66000442737FD4095542FDA01C901860F911DCB +:10E67000A11DB11DABBFFC018791882369F0809378 +:10E68000C6008091C00086FFFCCF8091C0008064EE +:10E690008093C0006F5FE8CF08958DE08093C6003F +:10E6A0008091C00086FFFCCF8091C0008064809381 +:10E6B000C0008AE08093C6008091C00086FFFCCF36 +:10E6C0008091C00080648093C00008950F942FF360 +:10E6D0000F944DF30895FC019081992359F0909384 +:10E6E000C6008091C00086FFFCCF8091C00080648E +:10E6F0008093C0003196992379F70895282F982F99 +:10E7000092959F70892F805D8A3308F0895F80938E +:10E71000C6008091C00086FFFCCF8091C00080645D +:10E720008093C000822F8F70982F905D9A3308F0ED +:10E73000995F9093C6008091C00086FFFCCF8091C6 +:10E74000C00080648093C00008959C01FB01853661 +:10E7500091051CF46330710594F0C90164E670E022 +:10E760000F948CFF605D7F4F6093C6008091C00066 +:10E7700086FFFCCF8091C00080648093C0002B3066 +:10E78000310514F43297B4F0C90164E670E00F94D7 +:10E790008CFF6AE070E00F948CFF605D7F4F6093A8 +:10E7A000C6008091C00086FFFCCF8091C0008064CD +:10E7B0008093C000C9016AE070E00F948CFFC0969E +:10E7C0008093C6008091C00086FFFCCF8091C0007E +:10E7D00080648093C0000895282F277020642093C0 +:10E7E0007C0020917B0086958695869590E08170CF +:10E7F000907033E0880F991F3A95E1F7277F282B17 +:10E8000020937B0080917A00806480937A008091CD +:10E810007A0086FDFCCF2091780040917900942FFA +:10E8200080E030E0282B392BC90108951F93182F61 +:10E8300080E892EE60E00F942FF31093C600809171 +:10E84000C00086FFFCCF8091C00080648093C00030 +:10E850000F944DF31F9108952F923F924F925F9224 +:10E860006F927F928F929F92AF92BF92CF92DF92E0 +:10E87000EF92FF920F931F93DF93CF93CDB7DEB745 +:10E8800062970FB6F894DEBF0FBECDBF382E622E52 +:10E89000CA01DB015C016D01772460E2262E2E01A6 +:10E8A0000894411C511C8BC081E0A81680E0B8067A +:10E8B00081E0C80680E0D80628F0C601AA27BB2759 +:10E8C0000F947EF3BB27AD2D9C2D8B2D0F947EF3E3 +:10E8D0008A2D0F947EF32092C6008091C00086FF9F +:10E8E000FCCF8091C00080648093C0009DE2909333 +:10E8F000C6008091C00086FFFCCF8091C00080647C +:10E900008093C0002092C6008091C00086FFFCCF9B +:10E910008091C00080648093C000198286017501D7 +:10E9200088249924A1E03A1651F03A1620F0B2E07A +:10E930003B1661F409C00BBFF701779007C0C70110 +:10E940000F94D5FF782E02C0F7017080872D0F94A9 +:10E950007EF32092C6008091C00086FFFCCF80919C +:10E96000C00080648093C000872D8052F401EF7056 +:10E97000F0708F3520F4E40DF51D708204C0E40DB5 +:10E98000F51D8EE280830894E11CF11C011D111D10 +:10E990000894811C911C90E18916910409F0C2CF62 +:10E9A00080E190E0A0E0B0E0A80EB91ECA1EDB1E18 +:10E9B000198AC2010F946BF30F944DF36A94662089 +:10E9C00009F072CF62960FB6F894DEBF0FBECDBFCE +:10E9D000CF91DF911F910F91FF90EF90DF90CF903B +:10E9E000BF90AF909F908F907F906F905F904F906F +:10E9F0003F902F9008952F923F924F925F926F9287 +:10EA00007F928F929F92AF92BF92CF92DF92EF92BE +:10EA1000FF920F931F93DF93CF93CDB7DEB7CD5304 +:10EA2000D1400FB6F894DEBF0FBECDBF279A2F9A04 +:10EA30008091C00082608093C00080E18093C40018 +:10EA400088E18093C1000000EE24FF248701B4E038 +:10EA5000AB2EB12CCC24DD2424C0C5010197F1F7E5 +:10EA60000894E11CF11C011D111D21E2E2162EE4A7 +:10EA7000F20620E0020720E0120718F0A1E0CA2EFB +:10EA8000D12CC801B70128E53BE140E050E00F94EC +:10EA90009FFF611571058105910519F485B18058B5 +:10EAA00085B98091C00087FD03C0C114D104A9F2CB +:10EAB000A6014F5F5F4FC25EDE4F59834883CE5140 +:10EAC000D140C25EDE4F68817981CE51D140613044 +:10EAD000710511F00D946EFFC05DDE4F1982188232 +:10EAE000C053D14060E0C15DDE4F1882CF52D140AB +:10EAF000AA24BB24C05EDE4F188219821A821B82B0 +:10EB0000C052D140CE5CDE4F188219821A821B821D +:10EB1000C253D14080E090E0A0E0B0E0ABBFFC0188 +:10EB2000A791B691C45CDE4FB983A883CC53D14082 +:10EB30000D9469FFC25EDE4FE881F981CE51D1406C +:10EB4000319709F52091C600C25EDE4F1982188206 +:10EB5000CE51D14022C02F5F3F4F4F4F5F4F2130EA +:10EB6000F2E13F07FAE74F07F0E05F0780F0C45C8F +:10EB7000DE4F08811981CC53D1400F5F1F4F19F030 +:10EB8000EE27FF27099420E030E040E050E080913C +:10EB9000C00087FFE0CF2091C600213209F094C663 +:10EBA0000894A11CB11C33E0A316B10409F08EC671 +:10EBB00000E010E018C041E24093C6008091C00020 +:10EBC00086FFFCCF8091C00080648093C0002F5FDF +:10EBD0003F4F2931310579F70F944DF30F5F1F4FE8 +:10EBE0000530110519F020E030E0E5CF1092080261 +:10EBF0001092090210920A0210920B021092040263 +:10EC00001092050210920602109207021092000262 +:10EC10001092010210920202109203028FEE90EE07 +:10EC200060E00F9466F380E191EE60E00F942FF3C3 +:10EC30008091C00087FFFCCF9091C600903608F00D +:10EC40009F759032B8F09093C6008091C00086FF07 +:10EC5000FCCF8091C00080648093C00080E28093EC +:10EC6000C6008091C00086FFFCCF8091C000806408 +:10EC70008093C000983409F4DBC19934B8F492341D +:10EC800009F45DC1933458F4903319F1903308F4CA +:10EC900018C69F33A1F1903409F013C6BDC0953456 +:10ECA00009F474C1963409F00CC69CC1923509F47C +:10ECB0002FC2933538F49C3409F4F9C1913509F029 +:10ECC00000C61CC2963509F449C2993509F0F9C548 +:10ECD0009CC485E892EE62E00F9466F31092040201 +:10ECE000109205021092060210920702109208027A +:10ECF0001092090210920A0210920B0217C189E9C0 +:10ED000092EE62E00F9466F38FEE90EE60E00F9467 +:10ED100066F381E291EE60E00F942FF381EC91EEC7 +:10ED200060E00F9466F381E391EE60E00F942FF3BF +:10ED300084EE90EE60E00F9466F381E491EE60E083 +:10ED40000F942FF386E090E061E070E00F94A5F35C +:10ED50000F944DF381E691EE60E00F942FF383ED75 +:10ED600091EE60E00F9466F381E591EE60E00F9420 +:10ED70002FF38DEC91EE60E00F9466F381E791EE56 +:10ED800060E00F942FF38EE10F947EF388E90F94E7 +:10ED90007EF381E00F947EF30F944DF381E891EEC2 +:10EDA00060E00F942FF319E0E0E0F0E010935700DB +:10EDB000E4918E2F0F947EF30F944DF381E991EE41 +:10EDC00060E00F942FF3E3E0F0E010935700E4913C +:10EDD0008E2F0F947EF30F944DF381EA91EE60E055 +:10EDE0000F942FF3E2E0F0E010935700E4918E2FA0 +:10EDF0000F947EF30F944DF381EB91EE60E00F944E +:10EE00002FF3E1E0F0E0109357001491812F0F945D +:10EE10007EF30F944DF307CF85EA92EE62E00F94F4 +:10EE200066F385E592EE60E00F9466F30F944DF380 +:10EE300000E010E019C0C8016F2D0F94DDFFFF2026 +:10EE400031F483E592EE60E00F942FF30BC0F09263 +:10EE5000C6008091C00086FFFCCF8091C000806416 +:10EE60008093C0000F5F1F4FC80181519F41AA27A7 +:10EE700097FDA095BA2FABBFFC01F7905AE2F516AB +:10EE800021F062E000301607B1F60F944DF30F94B5 +:10EE90004DF381E692EE60E00F9466F30F944DF32C +:10EEA000CC24DD2400E010E01EC0C8010F94D5FF83 +:10EEB000F82E882331F483E592EE60E00F942FF36F +:10EEC0000BC08093C6008091C00086FFFCCF80916C +:10EED000C00080648093C000FE1419F00894C11C27 +:10EEE000D11C0F5F1F4FC80181519F41AA2797FD79 +:10EEF000A095BA2FABBFFC01E7907AE2E71621F0AC +:10EF000082E00030180789F60F944DF30F944DF30B +:10EF10008CE692EE60E00F942FF3C60161E070E0A2 +:10EF20000F94A5F30F944DF30F944DF3109200023C +:10EF300010920102109202021092030274CE83EB2F +:10EF400092EE62E00F9466F3279A2F9A16C02F98DC +:10EF500080E090E0E0EDF7E03197F1F7019684363C +:10EF60009105C1F72F9A80E090E0E0EDF7E031974E +:10EF7000F1F7019684369105C1F78091C00087FFB3 +:10EF8000E6CF8091C00087FFFCCF95C48FEB92EE57 +:10EF900062E00F9466F3409100025091010260918B +:10EFA00002027091030281E020E10F942CF4809121 +:10EFB000000290910102A0910202B09103028050E0 +:10EFC0009F4FAF4FBF4F8093000290930102A093D9 +:10EFD0000202B093030280509041A040B04008F478 +:10EFE00022CEA4CF8DEC92EE62E00F9466F34091B6 +:10EFF000040250910502609106027091070280E0C0 +:10F0000020E10F942CF48091040290910502A091CC +:10F010000602B091070280509F4FAF4FBF4F8093C1 +:10F02000040290930502A0930602B0930702FBCD61 +:10F030008AED92EE62E00F9466F385E892EE60E06E +:10F040000F9466F389E992EE60E00F9466F385EA27 +:10F0500092EE60E00F9466F383EB92EE60E00F9423 +:10F0600066F38FEB92EE60E00F9466F38DEC92EE18 +:10F0700060E00F9466F38AED92EE60E00F9466F321 +:10F0800081EE92EE60E00F9466F382EF92EE60E024 +:10F090000F9466F38CE093EE60E00F9466F387E1E3 +:10F0A00093EE60E00F9466F380E393EEB9CD81EECA +:10F0B00092EE62E00F9466F381E40F9416F482E41A +:10F0C0000F9416F483E40F9416F484E40F9416F46A +:10F0D00085E40F9416F486E40F9416F487E40F94F5 +:10F0E00016F488E40F9416F48AE40F9416F48BE473 +:10F0F0000F9416F48CE40F9416F495CD82EF92EEF3 +:10F1000062E00F9466F399249394AA24BB2445C427 +:10F110008CE093EE62E00F9466F340910802509108 +:10F12000090260910A0270910B0282E020E10F94C3 +:10F130002CF48091080290910902A0910A02B091EA +:10F140000B0280509F4FAF4FBF4F809308029093A8 +:10F150000902A0930A02B0930B0265CD87E193EEFA +:10F1600062E00F9466F384EE90EE60E00F9466F335 +:10F1700089ED91EE60E00F9466F309E715EECC5D42 +:10F18000DE4F19830883C452D1406624772443019B +:10F19000CA5DDE4F19821882C652D140A401930184 +:10F1A0005695479537952795C85DDE4F2883398357 +:10F1B0004A835B83C852D140CA5DDE4F4881598182 +:10F1C000C652D1404F5F5F4FCA5DDE4F59834883BF +:10F1D000C652D140CA0162E070E00F94A5F350E23C +:10F1E0005093C6008091C00086FFFCCF8091C00084 +:10F1F00080648093C0006DE26093C6008091C0007F +:10F2000086FFFCCF8091C00080648093C00070E2D4 +:10F210007093C6008091C00086FFFCCF8091C00033 +:10F2200080648093C000C85DDE4FE880F9800A8169 +:10F230001B81C852D140BB27A12F902F8F2D0F9437 +:10F240007EF3C85DDE4F8881C852D1400F947EF3B3 +:10F2500070E2F72EF092C6008091C00086FFFCCFCE +:10F260008091C00080648093C0000DE30093C600CD +:10F270008091C00086FFFCCF8091C00080648093A5 +:10F28000C00010E21093C6008091C00086FFFCCF42 +:10F290008091C00080648093C0008BBEF3012791F1 +:10F2A000C45DDE4F2883CC52D140A22EBB24CC2497 +:10F2B000DD240894611C711C811C911C8BBEF30120 +:10F2C0008791282E332444245524142D032DF22C09 +:10F2D000EE24EA0CFB1C0C1D1D1D0894611C711C06 +:10F2E000811C911C8BBEF3013791C35DDE4F3883C7 +:10F2F000CD52D1400894611C711C811C911C8BBEA5 +:10F30000F3014791C25DDE4F4883CE52D1402DEFCD +:10F310003FEF4FEF5FEF620E731E841E951E0F943A +:10F320007EF330E23093C6008091C00086FFFCCFB0 +:10F330008091C00080648093C000C45DDE4F8881EE +:10F34000CC52D1400F947EF340E24093C6008091AE +:10F35000C00086FFFCCF8091C00080648093C00015 +:10F36000C25DDE4F8881CE52D1400F947EF350E2D1 +:10F370005093C6008091C00086FFFCCF8091C000F2 +:10F3800080648093C000C35DDE4F8881CD52D14040 +:10F390000F947EF360E26093C6008091C00086FF08 +:10F3A000FCCF8091C00080648093C0007FEFE7169F +:10F3B0007FEFF70670E0070770E0170731F48EE083 +:10F3C00092EE60E00F942FF3DFC0D801C701807088 +:10F3D000907CA070B0708050904CA040B040D1F5AF +:10F3E0002FEF3FE340E050E0E222F3220423152315 +:10F3F000C85DDE4FA880B980CA80DB80C852D1408A +:10F40000AE0CBF1CC01ED11EAA0CBB1CCC1CDD1C2C +:10F4100088E192EE60E00F942FF3BB27A12F902F8D +:10F420008F2D0F947EF38E2D0F947EF330E2309368 +:10F43000C6008091C00086FFFCCF8091C000806430 +:10F440008093C0004EE34093C6008091C00086FFC9 +:10F45000FCCF87C06EE07EEF80E090E0E622F722EE +:10F46000082319237CE0E71674E9F70670E0070724 +:10F4700070E0170709F088C0C25DDE4F8881CE5268 +:10F48000D140E82EFF2400E010E0102F0F2DFE2CBD +:10F49000EE24C35DDE4F9881CD52D140E90EF11CC0 +:10F4A000011D111DD601C50181709070A070B07052 +:10F4B000DC0199278827E80EF91E0A1F1B1F20EF81 +:10F4C00030E040E050E0A222B322C422D522F1E194 +:10F4D000AA0CBB1CCC1CDD1CFA95D1F7EA0CFB1C5A +:10F4E0000C1D1D1D41E050E060E070E0242235223B +:10F4F00046225722E5E1220C331C441C551CEA9598 +:10F50000D1F7E20CF31C041D151D57016801AA0C6C +:10F51000BB1CCC1CDD1C8FE192EE60E00F942FF33E +:10F52000C801AA27BB270F947EF3BB27A12F902FDA +:10F530008F2D0F947EF38E2D0F947EF350E2509317 +:10F54000C6008091C00086FFFCCF8091C00080641F +:10F550008093C0006EE36093C6008091C00086FF78 +:10F56000FCCF8091C00080648093C000C601AA27B0 +:10F57000BB270F947EF3BB27AD2D9C2D8B2D0F94B5 +:10F580007EF38A2D0F947EF370E27093C600809113 +:10F59000C00086FFFCCF8091C00080648093C000D3 +:10F5A000CC5DDE4FE881F981C452D140CF01AA275A +:10F5B00097FDA095BA2FABBFFC018791969160E0B3 +:10F5C0000F942FF30F944DF3CC5DDE4F088119811A +:10F5D000C452D1400E5F1F4FCC5DDE4F19830883AC +:10F5E000C452D140CA5DDE4F28813981C652D14014 +:10F5F0002933310509F417CB44E050E060E070E0B6 +:10F60000640E751E861E971EC9CD80E393EE62E0E0 +:10F610000F9466F384E292EE60E00F942FF38091F2 +:10F62000C00087FFFCCF1091C6001F751093C60065 +:10F630008091C00086FFFCCF8091C00080648093E1 +:10F64000C0000F944DF3812F81548A3108F036C1E8 +:10F65000163409F495C0173490F4133409F44EC0ED +:10F66000143430F41134F1F0123409F01DC130C0FB +:10F67000143409F459C0153409F016C16BC01A349A +:10F6800009F4C4C01B3438F4173409F48FC018349B +:10F6900009F00AC1A1C01B3409F4D2C01C3409F01E +:10F6A00003C1E8C08FEF81B90DC082B1809582B9E6 +:10F6B00080E090E0E0EDF7E03197F1F70196883CCB +:10F6C0009105C1F78091C00087FFEFCF12B8EFC05E +:10F6D0008FEF84B90DC085B1809585B980E090E049 +:10F6E000E0EDF7E03197F1F70196883C9105C1F71D +:10F6F0008091C00087FFEFCF15B8D9C08FEF87B9D1 +:10F700000DC088B1809588B980E090E0E0EDF7E029 +:10F710003197F1F70196883C9105C1F78091C000BF +:10F7200087FFEFCF18B8C3C08FEF8AB90DC08BB178 +:10F7300080958BB980E090E0E0EDF7E03197F1F74C +:10F740000196883C9105C1F78091C00087FFEFCFFB +:10F750001BB8ADC08FEF8DB90DC08EB180958EB93D +:10F7600080E090E0E0EDF7E03197F1F70196883C1A +:10F770009105C1F78091C00087FFEFCF1EB897C0F9 +:10F780008FEF80BB0DC081B3809581BB80E090E09E +:10F79000E0EDF7E03197F1F70196883C9105C1F76C +:10F7A0008091C00087FFEFCF11BA81C08FEF83BB7C +:10F7B0000DC084B3809584BB80E090E0E0EDF7E07D +:10F7C0003197F1F70196883C9105C1F78091C0000F +:10F7D00087FFEFCF14BA6BC08FEF809301010FC08A +:10F7E0008091020180958093020180E090E0E0ED3D +:10F7F000F7E03197F1F70196883C9105C1F78091C8 +:10F80000C00087FFEDCF1092020151C08FEF8093AF +:10F8100004010FC08091050180958093050180E06F +:10F8200090E0E0EDF7E03197F1F70196883C910523 +:10F83000C1F78091C00087FFEDCF1092050137C05E +:10F840008FEF809307010FC080910801809580930E +:10F85000080180E090E0E0EDF7E03197F1F70196E4 +:10F86000883C9105C1F78091C00087FFEDCF1092D1 +:10F8700008011DC08FEF80930A010FC080910B011A +:10F88000809580930B0180E090E0E0EDF7E0319708 +:10F89000F1F70196883C9105C1F78091C00087FF80 +:10F8A000EDCF10920B0103C08FE292EEB9C98091A7 +:10F8B000C00087FFFCCF8091C600B5C982E492EEFC +:10F8C000AFC98CE191EEACC9AA24BB24933061F19D +:10F8D000943028F4913089F0923008F508C09530C2 +:10F8E000B1F1953040F1963009F053C04EC02B3144 +:10F8F00009F020C991E06BE11DC9213041F0C15DE3 +:10F90000DE4F5881CF52D140251709F002C362273C +:10F91000C15DDE4F2883CF52D14092E00BC9B22F98 +:10F92000A0E0622793E006C9822F90E0A82BB92BB4 +:10F93000622794E0FFC82E3009F0EBC2622795E001 +:10F94000C05DDE4F19821882C053D140F3C8E1E098 +:10F95000F0E0EC0FFD1FC05DDE4FE880F980C05382 +:10F96000D140EE0DFF1D208387010F5F1F4FC05D4B +:10F97000DE4F19830883C053D14062270A171B0743 +:10F9800009F0D8C8D80196E0D5C8261709F0C1C239 +:10F9900003C0973009F0CEC899248981833109F4D6 +:10F9A000FCC08431C8F4863009F4C2C0873050F4FA +:10F9B000823009F4F0C0833009F458C0813009F076 +:10F9C0000AC23EC0813109F462C0823108F0A6C08B +:10F9D000803109F000C2DFC0883109F472C089317A +:10F9E00050F4853109F4D9C0853108F477C18631E6 +:10F9F00009F0F1C173C18A3109F457C08A3108F4A2 +:10FA00007CC08B3109F446C08D3109F0E4C18D8191 +:10FA1000803311F090E00AC08F81882311F49EE1B9 +:10FA200005C0813011F091E001C098E91A821B8273 +:10FA30008D818C831D829E831F8227E030E0CFC1A1 +:10FA40001A8288E08B8381E48C8386E58D8382E54E +:10FA50008E8389E48F8383E5888780E589878FE5B6 +:10FA60008A8782E38B872BE030E0B9C18A818139B4 +:10FA700041F0823941F0803911F48FE005C080E017 +:10FA800003C082E001C08AE01A828B8344C09924BB +:10FA9000939481C08D81882311F48EE12CC0813034 +:10FAA00011F081E028C088E926C01A82E1E0F0E088 +:10FAB00089E08093570084918B831C8224E030E09E +:10FAC0008EC18B81803589F48C81883039F4E2E0F5 +:10FAD000F0E089E08093570084910DC0E0E0F0E011 +:10FAE00089E080935700849106C0E3E0F0E089E06C +:10FAF0008093570084911A82DFCF8D81836C99E0C7 +:10FB0000E1E0F0E0082E90935700E89507B600FC7E +:10FB1000FDCF1A821B8223E030E061C11A82CE5CE5 +:10FB2000DE4F188219821A821B82C253D14055C1FE +:10FB30008A8190E0A0E0B0E0582F442733272227A5 +:10FB40008B8190E0A0E0B0E0DC0199278827282B8A +:10FB5000392B4A2B5B2B8D8190E0A0E0B0E0282B65 +:10FB6000392B4A2B5B2B8C8190E0A0E0B0E0BA2FC0 +:10FB7000A92F982F8827282B392B4A2B5B2B220F54 +:10FB8000331F441F551FC05EDE4F288339834A83CD +:10FB90005B83C052D1401A8220C19A812B8183316C +:10FBA00049F0C05EDE4F488159816A817B81C05235 +:10FBB000D1408AC0CE5CDE4F488159816A817B8109 +:10FBC000C253D140403080EC580783E0680780E0A2 +:10FBD0007807F0F483E0FA0160935B0080935700AC +:10FBE000E89507B600FCFDCFCE5CDE4F4881598119 +:10FBF0006A817B81C253D14040505F4F6F4F7F4F2E +:10FC0000CE5CDE4F488359836A837B83C253D140E5 +:10FC1000C95CDE4F9883C753D140CA5CDE4F18825F +:10FC2000C653D140022F10E0CA5CDE4F6881798153 +:10FC3000C653D140062B172BC05EDE4F4881598139 +:10FC40006A817B81C052D140DE011B9631E08C91EC +:10FC500011962C9111971296C75CDE4F2883C953D9 +:10FC6000D140C85CDE4F1882C853D14090E0C85CD8 +:10FC7000DE4FE881F981C853D1408E2B9F2B0C01B8 +:10FC8000FA0160935B0030935700E89511244E5FB2 +:10FC90005F4F6F4F7F4F02501040C9F685E0C05E46 +:10FCA000DE4FE880F9800A811B81C052D140F70104 +:10FCB00000935B0080935700E89507B600FCFDCFEA +:10FCC00081E180935700E8951A82C05EDE4F488339 +:10FCD00059836A837B83C052D1407FC0FA80C55C60 +:10FCE000DE4FF882CB53D140C65CDE4F1882CA5338 +:10FCF000D1408B81C82EDD24C65CDE4F088119817E +:10FD0000CA53D140C02AD12A1A828981BE016D5FAF +:10FD10007F4F843121F59601C05EDE4FE880F98087 +:10FD20000A811B81C052D1400BBFF7018791969188 +:10FD3000DB018C9311969C936E5F7F4FD801C701B6 +:10FD40000296A11DB11DC05EDE4F88839983AA83F0 +:10FD5000BB83C052D14022503040F1F636C0C05E65 +:10FD6000DE4F288139814A815B81C052D14008949D +:10FD7000C108D108760100E010E00894C11CD11C34 +:10FD80000894E11CF11C011D111DE20EF31E041F5D +:10FD9000151F21BDBB27A52F942F832F82BD2F5F59 +:10FDA0003F4F4F4F5F4FF89A80B5DB018D93BD01F8 +:10FDB0002E153F054007510761F7C05EDE4F2883CF +:10FDC00039834A835B83C052D14096012D5F3F4FF8 +:10FDD000FB01108204C080EC8A8322E030E08BE1DA +:10FDE0008093C6008091C00086FFFCCF8091C00048 +:10FDF00080648093C000C15DDE4FF881CF52D14056 +:10FE0000F093C6008091C00086FFFCCF8091C000B7 +:10FE100080648093C000432F3093C6008091C0005F +:10FE200086FFFCCF8091C00080648093C000922F39 +:10FE30002093C6008091C00086FFFCCF8091C00057 +:10FE400080648093C0008EE08093C6008091C000E3 +:10FE500086FFFCCF8091C00080648093C00065E184 +:10FE6000C15DDE4FE880CF52D1406E2569276427FF +:10FE7000FE01319610C090819093C6008091C00021 +:10FE800086FFFCCF31968091C00080648093C000D3 +:10FE90006927215030402115310569F76093C6006C +:10FEA0008091C00086FFFCCF8091C0008064809369 +:10FEB000C00085B1805885B9992081F4C15DDE4FBD +:10FEC0000881CF52D1400F5FC15DDE4F0883CF5212 +:10FED000D14090E0A0E0B0E00D949AF527982F98DB +:10FEE00080E090E020ED37E0F9013197F1F70196DD +:10FEF00084369105C9F700008091C0008D7F809302 +:10FF0000C00081E180935700E895EE27FF27099410 +:10FF1000FFCF90E00D949AF597FB092E07260AD0A3 +:10FF200077FD04D02ED006D000201AF4709561958C +:10FF30007F4F0895F6F7909581959F4F0895A1E220 +:10FF40001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F53 +:10FF5000FF1FA217B307E407F50720F0A21BB30B9E +:10FF6000E40BF50B661F771F881F991F1A9469F71A +:10FF700060957095809590959B01AC01BD01CF0176 +:10FF80000895AA1BBB1B51E107C0AA1FBB1FA617E0 +:10FF9000B70710F0A61BB70B881F991F5A95A9F732 +:10FFA00080959095BC01CD010895F999FECF92BD41 +:10FFB00081BDF89A992780B50895262FF999FECF2B +:10FFC0001FBA92BD81BD20BD0FB6F894FA9AF99A76 +:0AFFD0000FBE01960895F894FFCFCC +:040000033000E000E9 +:00000001FF diff --git a/bootloaders/stk500v2/STK500V2.pnproj b/bootloaders/stk500v2/STK500V2.pnproj new file mode 100644 index 0000000..d935019 --- /dev/null +++ b/bootloaders/stk500v2/STK500V2.pnproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bootloaders/stk500v2/STK500V2.pnps b/bootloaders/stk500v2/STK500V2.pnps new file mode 100644 index 0000000..f85cde5 --- /dev/null +++ b/bootloaders/stk500v2/STK500V2.pnps @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bootloaders/stk500v2/avr_cpunames.h b/bootloaders/stk500v2/avr-1.8.6_cpunames.h similarity index 100% rename from bootloaders/stk500v2/avr_cpunames.h rename to bootloaders/stk500v2/avr-1.8.6_cpunames.h diff --git a/bootloaders/stk500v2/avrinterruptnames.h b/bootloaders/stk500v2/avr-1.8.6interruptnames.h similarity index 100% rename from bootloaders/stk500v2/avrinterruptnames.h rename to bootloaders/stk500v2/avr-1.8.6interruptnames.h diff --git a/bootloaders/stk500v2/makedep.mk b/bootloaders/stk500v2/makedep.mk deleted file mode 100644 index bb85aa7..0000000 --- a/bootloaders/stk500v2/makedep.mk +++ /dev/null @@ -1,6 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit or delete the file -################################################################################ - -stk500boot.c - diff --git a/bootloaders/stk500v2/stk500boot.c b/bootloaders/stk500v2/stk500boot.c index de4ce8c..0b49dff 100644 --- a/bootloaders/stk500v2/stk500boot.c +++ b/bootloaders/stk500v2/stk500boot.c @@ -112,6 +112,13 @@ LICENSE: #include "command.h" +#if defined(_MEGA_BOARD_) || defined(_BOARD_AMBER128_) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) \ + || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1284P__) || defined(ENABLE_MONITOR) + #undef ENABLE_MONITOR + #define ENABLE_MONITOR + static void RunMonitor(void); +#endif + #ifndef EEWE #define EEWE 1 #endif @@ -126,22 +133,12 @@ LICENSE: /* * Uncomment the following lines to save code space */ -#define REMOVE_PROGRAM_LOCK_BIT_SUPPORT // disable program lock bits -#define REMOVE_BOOTLOADER_LED // no LED to show active bootloader +//#define REMOVE_PROGRAM_LOCK_BIT_SUPPORT // disable program lock bits +//#define REMOVE_BOOTLOADER_LED // no LED to show active bootloader //#define REMOVE_CMD_SPI_MULTI // disable processing of SPI_MULTI commands, Remark this line for AVRDUDE // -//************************************************************************ -//FUSES -#include -#if defined (__AVR_ATmega2560__) - FUSES={ .extended = 0xFC, .high = 0xD8, .low = 0xE0}; // Fuses + Lock programming - LOCKBITS= 0xCC; -#else - #error "FUSES for selected CPU not set" -#endif -//************************************************************************ //************************************************************************ //* LED on pin "PROGLED_PIN" on port "PROGLED_PORT" @@ -686,6 +683,27 @@ int main(void) } + #ifdef ENABLE_MONITOR + rcvdCharCntr++; + + if ((c == '!') && (rcvdCharCntr < 10)) + { + exPointCntr++; + if (exPointCntr == 3) + { + RunMonitor(); + exPointCntr = 0; // reset back to zero so we dont get in an endless loop + isLeave = 1; + msgParseState = 99; //* we dont want it do anything + break; + } + } + else + { + exPointCntr = 0; + } + #endif + switch (msgParseState) { case ST_START: @@ -976,7 +994,7 @@ int main(void) if ( msgBuffer[0] == CMD_PROGRAM_FLASH_ISP ) { // erase only main section (bootloader protection) - while (eraseAddress < APP_END ) + if (eraseAddress < APP_END ) { boot_page_erase(eraseAddress); // Perform page erase boot_spm_busy_wait(); // Wait until the memory is erased. @@ -1026,13 +1044,6 @@ int main(void) *p++ = STATUS_CMD_OK; if (msgBuffer[0] == CMD_READ_FLASH_ISP ) { - //Read protection - if (eraseAddress < APP_END) { - msgLength = 2; - msgBuffer[1] = STATUS_CMD_FAILED; - break; - } - unsigned int data; // Read FLASH @@ -1192,3 +1203,920 @@ avrdude: safemode: efuse reads as F5 avrdude> */ +//************************************************************************ +#ifdef ENABLE_MONITOR +#include + +unsigned long gRamIndex; +unsigned long gFlashIndex; +unsigned long gEepromIndex; + + +#define true 1 +#define false 0 + +#include "avr_cpunames.h" + +#ifndef _AVR_CPU_NAME_ + #error cpu name not defined +#endif + +#ifdef _VECTORS_SIZE + #define kInterruptVectorCount (_VECTORS_SIZE / 4) +#else + #define kInterruptVectorCount 23 +#endif + + +void PrintDecInt(int theNumber, int digitCnt); + +#ifdef _AVR_CPU_NAME_ + const char gTextMsg_CPU_Name[] PROGMEM = _AVR_CPU_NAME_; +#else + const char gTextMsg_CPU_Name[] PROGMEM = "UNKNOWN"; +#endif + + const char gTextMsg_Explorer[] PROGMEM = "Arduino explorer stk500V2 by MLS"; + const char gTextMsg_Prompt[] PROGMEM = "Bootloader>"; + const char gTextMsg_HUH[] PROGMEM = "Huh?"; + const char gTextMsg_COMPILED_ON[] PROGMEM = "Compiled on = "; + const char gTextMsg_CPU_Type[] PROGMEM = "CPU Type = "; + const char gTextMsg_AVR_ARCH[] PROGMEM = "__AVR_ARCH__= "; + const char gTextMsg_AVR_LIBC[] PROGMEM = "AVR LibC Ver= "; + const char gTextMsg_GCC_VERSION[] PROGMEM = "GCC Version = "; + const char gTextMsg_CPU_SIGNATURE[] PROGMEM = "CPU ID = "; + const char gTextMsg_FUSE_BYTE_LOW[] PROGMEM = "Low fuse = "; + const char gTextMsg_FUSE_BYTE_HIGH[] PROGMEM = "High fuse = "; + const char gTextMsg_FUSE_BYTE_EXT[] PROGMEM = "Ext fuse = "; + const char gTextMsg_FUSE_BYTE_LOCK[] PROGMEM = "Lock fuse = "; + const char gTextMsg_GCC_DATE_STR[] PROGMEM = __DATE__; + const char gTextMsg_AVR_LIBC_VER_STR[] PROGMEM = __AVR_LIBC_VERSION_STRING__; + const char gTextMsg_GCC_VERSION_STR[] PROGMEM = __VERSION__; + const char gTextMsg_VECTOR_HEADER[] PROGMEM = "V# ADDR op code instruction addr Interrupt"; + const char gTextMsg_noVector[] PROGMEM = "no vector"; + const char gTextMsg_rjmp[] PROGMEM = "rjmp "; + const char gTextMsg_jmp[] PROGMEM = "jmp "; + const char gTextMsg_WHAT_PORT[] PROGMEM = "What port:"; + const char gTextMsg_PortNotSupported[] PROGMEM = "Port not supported"; + const char gTextMsg_MustBeLetter[] PROGMEM = "Must be a letter"; + const char gTextMsg_SPACE[] PROGMEM = " "; + const char gTextMsg_WriteToEEprom[] PROGMEM = "Writting EE"; + const char gTextMsg_ReadingEEprom[] PROGMEM = "Reading EE"; + const char gTextMsg_EEPROMerrorCnt[] PROGMEM = "EE err cnt="; + const char gTextMsg_PORT[] PROGMEM = "PORT"; + + +//************************************************************************ +//* Help messages + const char gTextMsg_HELP_MSG_0[] PROGMEM = "0=Zero addr"; + const char gTextMsg_HELP_MSG_QM[] PROGMEM = "?=CPU stats"; + const char gTextMsg_HELP_MSG_AT[] PROGMEM = "@=EEPROM test"; + const char gTextMsg_HELP_MSG_B[] PROGMEM = "B=Blink LED"; + const char gTextMsg_HELP_MSG_E[] PROGMEM = "E=Dump EEPROM"; + const char gTextMsg_HELP_MSG_F[] PROGMEM = "F=Dump FLASH"; + const char gTextMsg_HELP_MSG_H[] PROGMEM = "H=Help"; + const char gTextMsg_HELP_MSG_L[] PROGMEM = "L=List I/O Ports"; +// const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit & jump to user pgm"; + const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit"; + const char gTextMsg_HELP_MSG_R[] PROGMEM = "R=Dump RAM"; + const char gTextMsg_HELP_MSG_V[] PROGMEM = "V=show interrupt Vectors"; + const char gTextMsg_HELP_MSG_Y[] PROGMEM = "Y=Port blink"; + + const char gTextMsg_END[] PROGMEM = "*"; + + +//************************************************************************ +void PrintFromPROGMEM(const void *dataPtr, unsigned char offset) +{ +char theChar; + + dataPtr += offset; + + do { + #if (FLASHEND > 0x10000) + theChar = pgm_read_byte_far((uint16_t)dataPtr++); + #else + theChar = pgm_read_byte_near((uint16_t)dataPtr++); + #endif + if (theChar != 0) + { + sendchar(theChar); + } + } while (theChar != 0); +} + +//************************************************************************ +void PrintNewLine(void) +{ + sendchar(0x0d); + sendchar(0x0a); +} + + +//************************************************************************ +void PrintFromPROGMEMln(const void *dataPtr, unsigned char offset) +{ + PrintFromPROGMEM(dataPtr, offset); + + PrintNewLine(); +} + + +//************************************************************************ +void PrintString(char *textString) +{ +char theChar; +int ii; + + theChar = 1; + ii = 0; + while (theChar != 0) + { + theChar = textString[ii]; + if (theChar != 0) + { + sendchar(theChar); + } + ii++; + } +} + +//************************************************************************ +void PrintHexByte(unsigned char theByte) +{ +char theChar; + + theChar = 0x30 + ((theByte >> 4) & 0x0f); + if (theChar > 0x39) + { + theChar += 7; + } + sendchar(theChar ); + + theChar = 0x30 + (theByte & 0x0f); + if (theChar > 0x39) + { + theChar += 7; + } + sendchar(theChar ); +} + +//************************************************************************ +void PrintDecInt(int theNumber, int digitCnt) +{ +int theChar; +int myNumber; + + myNumber = theNumber; + + if ((myNumber > 100) || (digitCnt >= 3)) + { + theChar = 0x30 + myNumber / 100; + sendchar(theChar ); + } + + if ((myNumber > 10) || (digitCnt >= 2)) + { + theChar = 0x30 + ((myNumber % 100) / 10 ); + sendchar(theChar ); + } + theChar = 0x30 + (myNumber % 10); + sendchar(theChar ); +} + + + + +//************************************************************************ +static void PrintCPUstats(void) +{ +unsigned char fuseByte; + + PrintFromPROGMEMln(gTextMsg_Explorer, 0); + + PrintFromPROGMEM(gTextMsg_COMPILED_ON, 0); + PrintFromPROGMEMln(gTextMsg_GCC_DATE_STR, 0); + + PrintFromPROGMEM(gTextMsg_CPU_Type, 0); + PrintFromPROGMEMln(gTextMsg_CPU_Name, 0); + + PrintFromPROGMEM(gTextMsg_AVR_ARCH, 0); + PrintDecInt(__AVR_ARCH__, 1); + PrintNewLine(); + + PrintFromPROGMEM(gTextMsg_GCC_VERSION, 0); + PrintFromPROGMEMln(gTextMsg_GCC_VERSION_STR, 0); + + //* these can be found in avr/version.h + PrintFromPROGMEM(gTextMsg_AVR_LIBC, 0); + PrintFromPROGMEMln(gTextMsg_AVR_LIBC_VER_STR, 0); + +#if defined(SIGNATURE_0) + PrintFromPROGMEM(gTextMsg_CPU_SIGNATURE, 0); + //* these can be found in avr/iomxxx.h + PrintHexByte(SIGNATURE_0); + PrintHexByte(SIGNATURE_1); + PrintHexByte(SIGNATURE_2); + PrintNewLine(); +#endif + + +#if defined(GET_LOW_FUSE_BITS) + //* fuse settings + PrintFromPROGMEM(gTextMsg_FUSE_BYTE_LOW, 0); + fuseByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); + PrintHexByte(fuseByte); + PrintNewLine(); + + PrintFromPROGMEM(gTextMsg_FUSE_BYTE_HIGH, 0); + fuseByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); + PrintHexByte(fuseByte); + PrintNewLine(); + + PrintFromPROGMEM(gTextMsg_FUSE_BYTE_EXT, 0); + fuseByte = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); + PrintHexByte(fuseByte); + PrintNewLine(); + + PrintFromPROGMEM(gTextMsg_FUSE_BYTE_LOCK, 0); + fuseByte = boot_lock_fuse_bits_get(GET_LOCK_BITS); + PrintHexByte(fuseByte); + PrintNewLine(); + +#endif + +} + + +//************************************************************************ +static void BlinkLED(void) +{ + PROGLED_DDR |= (1< 0) + { + if (myAddressPointer > 0x10000) + { + PrintHexByte((myAddressPointer >> 16) & 0x00ff); + } + PrintHexByte((myAddressPointer >> 8) & 0x00ff); + PrintHexByte(myAddressPointer & 0x00ff); + sendchar(0x20); + sendchar('-'); + sendchar(0x20); + + asciiDump[0] = 0; + for (ii=0; ii<16; ii++) + { + switch(dumpWhat) + { + case kDUMP_FLASH: + #if (FLASHEND > 0x10000) + theValue = pgm_read_byte_far(myAddressPointer); + #else + theValue = pgm_read_byte_near(myAddressPointer); + #endif + break; + + case kDUMP_EEPROM: + theValue = eeprom_read_byte((uint8_t *)(uint16_t)myAddressPointer); + break; + + case kDUMP_RAM: + theValue = ramPtr[myAddressPointer]; + break; + + } + PrintHexByte(theValue); + sendchar(0x20); + if ((theValue >= 0x20) && (theValue < 0x7f)) + { + asciiDump[ii % 16] = theValue; + } + else + { + asciiDump[ii % 16] = '.'; + } + + myAddressPointer++; + } + asciiDump[16] = 0; + PrintString(asciiDump); + PrintNewLine(); + + numRows--; + } +} + + + +//************************************************************************ +//* returns amount of extended memory +static void EEPROMtest(void) +{ +int ii; +char theChar; +char theEEPROMchar; +int errorCount; + + PrintFromPROGMEMln(gTextMsg_WriteToEEprom, 0); + PrintNewLine(); + ii = 0; +#if (FLASHEND > 0x10000) + while (((theChar = pgm_read_byte_far(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) +#else + while (((theChar = pgm_read_byte_near(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) +#endif + { + eeprom_write_byte((uint8_t *)ii, theChar); + if (theChar == 0) + { + PrintFromPROGMEM(gTextMsg_SPACE, 0); + } + else + { + sendchar(theChar); + } + ii++; + } + + //* no go back through and test + PrintNewLine(); + PrintNewLine(); + PrintFromPROGMEMln(gTextMsg_ReadingEEprom, 0); + PrintNewLine(); + errorCount = 0; + ii = 0; +#if (FLASHEND > 0x10000) + while (((theChar = pgm_read_byte_far((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#else + while (((theChar = pgm_read_byte_near((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#endif + { + theEEPROMchar = eeprom_read_byte((uint8_t *)ii); + if (theEEPROMchar == 0) + { + PrintFromPROGMEM(gTextMsg_SPACE, 0); + } + else + { + sendchar(theEEPROMchar); + } + if (theEEPROMchar != theChar) + { + errorCount++; + } + ii++; + } + PrintNewLine(); + PrintNewLine(); + PrintFromPROGMEM(gTextMsg_EEPROMerrorCnt, 0); + PrintDecInt(errorCount, 1); + PrintNewLine(); + PrintNewLine(); + + gEepromIndex = 0; //* set index back to zero for next eeprom dump + +} + + + +#if (FLASHEND > 0x08000) +//* this includes the interrupt names for the monitor portion. There is no longer enough +//* memory to include this +// #include "avrinterruptnames.h" +// #ifndef _INTERRUPT_NAMES_DEFINED_ +// #warning Interrupt vectors not defined +// #endif +#endif + +//************************************************************************ +static void VectorDisplay(void) +{ +unsigned long byte1; +unsigned long byte2; +unsigned long byte3; +unsigned long byte4; +unsigned long word1; +unsigned long word2; +int vectorIndex; +unsigned long myMemoryPtr; +unsigned long wordMemoryAddress; +unsigned long realitiveAddr; +unsigned long myFullAddress; +unsigned long absoluteAddr; +#if defined(_INTERRUPT_NAMES_DEFINED_) + long stringPointer; +#endif + + myMemoryPtr = 0; + vectorIndex = 0; + PrintFromPROGMEMln(gTextMsg_CPU_Name, 0); + PrintFromPROGMEMln(gTextMsg_VECTOR_HEADER, 0); + // V# ADDR op code + // 1 - 0000 = C3 BB 00 00 rjmp 03BB >000776 RESET + while (vectorIndex < kInterruptVectorCount) + { + wordMemoryAddress = myMemoryPtr / 2; + // 01 - 0000 = 12 34 + PrintDecInt(vectorIndex + 1, 2); + sendchar(0x20); + sendchar('-'); + sendchar(0x20); + PrintHexByte((wordMemoryAddress >> 8) & 0x00ff); + PrintHexByte((wordMemoryAddress) & 0x00ff); + sendchar(0x20); + sendchar('='); + sendchar(0x20); + + + //* the AVR is LITTLE ENDIAN, swap the byte order + #if (FLASHEND > 0x10000) + byte1 = pgm_read_byte_far(myMemoryPtr++); + byte2 = pgm_read_byte_far(myMemoryPtr++); + byte3 = pgm_read_byte_far(myMemoryPtr++); + byte4 = pgm_read_byte_far(myMemoryPtr++); + #else + byte1 = pgm_read_byte_near(myMemoryPtr++); + byte2 = pgm_read_byte_near(myMemoryPtr++); + byte3 = pgm_read_byte_near(myMemoryPtr++); + byte4 = pgm_read_byte_near(myMemoryPtr++); + #endif + word1 = (byte2 << 8) + byte1; + word2 = (byte4 << 8) + byte3; + + + PrintHexByte(byte2); + sendchar(0x20); + PrintHexByte(byte1); + sendchar(0x20); + PrintHexByte(byte4); + sendchar(0x20); + PrintHexByte(byte3); + sendchar(0x20); + + if (word1 == 0xffff) + { + PrintFromPROGMEM(gTextMsg_noVector, 0); + } + else if ((word1 & 0xc000) == 0xc000) + { + //* rjmp instruction + realitiveAddr = word1 & 0x3FFF; + absoluteAddr = wordMemoryAddress + realitiveAddr; //* add the offset to the current address + absoluteAddr = absoluteAddr << 1; //* multiply by 2 for byte address + + PrintFromPROGMEM(gTextMsg_rjmp, 0); + PrintHexByte((realitiveAddr >> 8) & 0x00ff); + PrintHexByte((realitiveAddr) & 0x00ff); + sendchar(0x20); + sendchar('>'); + PrintHexByte((absoluteAddr >> 16) & 0x00ff); + PrintHexByte((absoluteAddr >> 8) & 0x00ff); + PrintHexByte((absoluteAddr) & 0x00ff); + + } + else if ((word1 & 0xfE0E) == 0x940c) + { + //* jmp instruction, this is REALLY complicated, refer to the instruction manual (JMP) + myFullAddress = ((byte1 & 0x01) << 16) + + ((byte1 & 0xf0) << 17) + + ((byte2 & 0x01) << 21) + + word2; + + absoluteAddr = myFullAddress << 1; + + PrintFromPROGMEM(gTextMsg_jmp, 0); + PrintHexByte((myFullAddress >> 16) & 0x00ff); + PrintHexByte((myFullAddress >> 8) & 0x00ff); + PrintHexByte((myFullAddress) & 0x00ff); + sendchar(0x20); + sendchar('>'); + PrintHexByte((absoluteAddr >> 16) & 0x00ff); + PrintHexByte((absoluteAddr >> 8) & 0x00ff); + PrintHexByte((absoluteAddr) & 0x00ff); + } + + #if defined(_INTERRUPT_NAMES_DEFINED_) + sendchar(0x20); + #if (FLASHEND > 0x10000) + stringPointer = pgm_read_word_far(&(gInterruptNameTable[vectorIndex])); + #else + stringPointer = pgm_read_word_near(&(gInterruptNameTable[vectorIndex])); + #endif + PrintFromPROGMEM((char *)stringPointer, 0); + #endif + PrintNewLine(); + + vectorIndex++; + } +} + +//************************************************************************ +static void PrintAvailablePort(char thePortLetter) +{ + PrintFromPROGMEM(gTextMsg_PORT, 0); + sendchar(thePortLetter); + PrintNewLine(); +} + +//************************************************************************ +static void ListAvailablePorts(void) +{ + +#ifdef DDRA + PrintAvailablePort('A'); +#endif + +#ifdef DDRB + PrintAvailablePort('B'); +#endif + +#ifdef DDRC + PrintAvailablePort('C'); +#endif + +#ifdef DDRD + PrintAvailablePort('D'); +#endif + +#ifdef DDRE + PrintAvailablePort('E'); +#endif + +#ifdef DDRF + PrintAvailablePort('F'); +#endif + +#ifdef DDRG + PrintAvailablePort('G'); +#endif + +#ifdef DDRH + PrintAvailablePort('H'); +#endif + +#ifdef DDRI + PrintAvailablePort('I'); +#endif + +#ifdef DDRJ + PrintAvailablePort('J'); +#endif + +#ifdef DDRK + PrintAvailablePort('K'); +#endif + +#ifdef DDRL + PrintAvailablePort('L'); +#endif + +} + +//************************************************************************ +static void AVR_PortOutput(void) +{ +char portLetter; +char getCharFlag; + + PrintFromPROGMEM(gTextMsg_WHAT_PORT, 0); + + portLetter = recchar(); + portLetter = portLetter & 0x5f; + sendchar(portLetter); + PrintNewLine(); + + if ((portLetter >= 'A') && (portLetter <= 'Z')) + { + getCharFlag = true; + switch(portLetter) + { + #ifdef DDRA + case 'A': + DDRA = 0xff; + while (!Serial_Available()) + { + PORTA ^= 0xff; + delay_ms(200); + } + PORTA = 0; + break; + #endif + + #ifdef DDRB + case 'B': + DDRB = 0xff; + while (!Serial_Available()) + { + PORTB ^= 0xff; + delay_ms(200); + } + PORTB = 0; + break; + #endif + + #ifdef DDRC + case 'C': + DDRC = 0xff; + while (!Serial_Available()) + { + PORTC ^= 0xff; + delay_ms(200); + } + PORTC = 0; + break; + #endif + + #ifdef DDRD + case 'D': + DDRD = 0xff; + while (!Serial_Available()) + { + PORTD ^= 0xff; + delay_ms(200); + } + PORTD = 0; + break; + #endif + + #ifdef DDRE + case 'E': + DDRE = 0xff; + while (!Serial_Available()) + { + PORTE ^= 0xff; + delay_ms(200); + } + PORTE = 0; + break; + #endif + + #ifdef DDRF + case 'F': + DDRF = 0xff; + while (!Serial_Available()) + { + PORTF ^= 0xff; + delay_ms(200); + } + PORTF = 0; + break; + #endif + + #ifdef DDRG + case 'G': + DDRG = 0xff; + while (!Serial_Available()) + { + PORTG ^= 0xff; + delay_ms(200); + } + PORTG = 0; + break; + #endif + + #ifdef DDRH + case 'H': + DDRH = 0xff; + while (!Serial_Available()) + { + PORTH ^= 0xff; + delay_ms(200); + } + PORTH = 0; + break; + #endif + + #ifdef DDRI + case 'I': + DDRI = 0xff; + while (!Serial_Available()) + { + PORTI ^= 0xff; + delay_ms(200); + } + PORTI = 0; + break; + #endif + + #ifdef DDRJ + case 'J': + DDRJ = 0xff; + while (!Serial_Available()) + { + PORTJ ^= 0xff; + delay_ms(200); + } + PORTJ = 0; + break; + #endif + + #ifdef DDRK + case 'K': + DDRK = 0xff; + while (!Serial_Available()) + { + PORTK ^= 0xff; + delay_ms(200); + } + PORTK = 0; + break; + #endif + + #ifdef DDRL + case 'L': + DDRL = 0xff; + while (!Serial_Available()) + { + PORTL ^= 0xff; + delay_ms(200); + } + PORTL = 0; + break; + #endif + + default: + PrintFromPROGMEMln(gTextMsg_PortNotSupported, 0); + getCharFlag = false; + break; + } + if (getCharFlag) + { + recchar(); + } + } + else + { + PrintFromPROGMEMln(gTextMsg_MustBeLetter, 0); + } +} + + +//******************************************************************* +static void PrintHelp(void) +{ + PrintFromPROGMEMln(gTextMsg_HELP_MSG_0, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_QM, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_AT, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_B, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_E, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_F, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_H, 0); + + PrintFromPROGMEMln(gTextMsg_HELP_MSG_L, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_Q, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_R, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_V, 0); + PrintFromPROGMEMln(gTextMsg_HELP_MSG_Y, 0); +} + +//************************************************************************ +static void RunMonitor(void) +{ +char keepGoing; +unsigned char theChar; +int ii, jj; + + for (ii=0; ii<5; ii++) + { + for (jj=0; jj<25; jj++) + { + sendchar('!'); + } + PrintNewLine(); + } + + gRamIndex = 0; + gFlashIndex = 0; + gEepromIndex = 0; + + PrintFromPROGMEMln(gTextMsg_Explorer, 0); + + keepGoing = 1; + while (keepGoing) + { + PrintFromPROGMEM(gTextMsg_Prompt, 0); + theChar = recchar(); + if (theChar >= 0x60) + { + theChar = theChar & 0x5F; + } + + if (theChar >= 0x20) + { + sendchar(theChar); + sendchar(0x20); + } + + switch(theChar) + { + case '0': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_0, 2); + gFlashIndex = 0; + gRamIndex = 0; + gEepromIndex = 0; + break; + + case '?': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_QM, 2); + PrintCPUstats(); + break; + + case '@': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_AT, 2); + EEPROMtest(); + break; + + case 'B': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_B, 2); + BlinkLED(); + break; + + case 'E': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_E, 2); + DumpHex(kDUMP_EEPROM, gEepromIndex, 16); + gEepromIndex += 256; + if (gEepromIndex > E2END) + { + gEepromIndex = 0; + } + break; + + case 'F': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_F, 2); + DumpHex(kDUMP_FLASH, gFlashIndex, 16); + gFlashIndex += 256; + break; + + case 'H': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_H, 2); + PrintHelp(); + break; + + case 'L': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_L, 2); + ListAvailablePorts(); + break; + + case 'Q': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_Q, 2); + keepGoing = false; + break; + + case 'R': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_R, 2); + DumpHex(kDUMP_RAM, gRamIndex, 16); + gRamIndex += 256; + break; + + case 'V': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_V, 2); + VectorDisplay(); + break; + + case 'Y': + PrintFromPROGMEMln(gTextMsg_HELP_MSG_Y, 2); + AVR_PortOutput(); + break; + + default: + PrintFromPROGMEMln(gTextMsg_HUH, 0); + break; + } + } +} + +#endif + diff --git a/bootloaders/stk500v2/stk500boot.componentinfo.xml b/bootloaders/stk500v2/stk500boot.componentinfo.xml deleted file mode 100644 index a07492b..0000000 --- a/bootloaders/stk500v2/stk500boot.componentinfo.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - Device - Startup - - - Atmel - 1.7.0 - C:/Program Files (x86)\Atmel\Studio\7.0\Packs - - - - - C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\include\ - - include - C - - - include/ - - - - - C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\include\avr\iom2560.h - - header - C - MkwPezikXVtYA90mpLpFfA== - - include/avr/iom2560.h - - - - - C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\templates\main.c - template - source - C Exe - iLje1HNt5V/l3ISGz67DFw== - - templates/main.c - Main file (.c) - - - - C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\templates\main.cpp - template - source - C Exe - mkKaE95TOoATsuBGv6jmxg== - - templates/main.cpp - Main file (.cpp) - - - - C:/Program Files (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\gcc\dev\atmega2560 - - libraryPrefix - GCC - - - gcc/dev/atmega2560 - - - - - ATmega_DFP - C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/Atmel.ATmega_DFP.pdsc - 1.7.374 - true - ATmega2560 - - - - Resolved - Fixed - true - - - \ No newline at end of file diff --git a/bootloaders/stk500v2/stk500boot.cproj b/bootloaders/stk500v2/stk500boot.cproj deleted file mode 100644 index 11b1ca6..0000000 --- a/bootloaders/stk500v2/stk500boot.cproj +++ /dev/null @@ -1,174 +0,0 @@ - - - - 2.0 - 7.0 - com.Atmel.AVRGCC8.C - dce6c7e3-ee26-4d79-826b-08594b9ad897 - ATmega2560 - none - Executable - C - $(MSBuildProjectName) - .elf - $(MSBuildProjectDirectory)\$(Configuration) - STK500 - stk500boot - STK500 - Native - true - false - true - true - 0x20000000 - - true - exception_table - 2 - 0 - 0 - - com.atmel.avrdbg.tool.atmelice - J41800094359 - 0x1E9801 - - - - 200000 - 125000 - - ISP - - com.atmel.avrdbg.tool.atmelice - J41800094359 - Atmel-ICE - - ISP - 125000 - - - - - - - - com.atmel.avrdbg.tool.simulator - - - Simulator - - - - - - -mmcu=atmega2560 -B "%24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\gcc\dev\atmega2560" - True - True - True - True - True - False - True - True - - - NDEBUG - - - - - %24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\include\ - - - Optimize for size (-Os) - True - True - True - - - libm - - - - - %24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\include\ - - - - - - - - - -mmcu=atmega2560 -B "%24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\gcc\dev\atmega2560" - True - True - True - True - True - False - True - True - - - DEBUG - F_CPU=16000000UL - - - - - %24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\include\ - - - Optimize for size (-Os) - True - True - Default (-g2) - True - - - libm - - - - - .text=3e000 - - - - - %24(PackRepoDir)\Atmel\ATmega_DFP\1.7.374\include\ - - - Default (-Wa,-g) - - - False - $(MSBuildProjectDirectory)\$(Configuration) - mega2560 - clean - C:\Users\Kirill\Documents\GIT\STK500\STK500\Debug\Makefile - stk500boot_v2_mega2560 - .elf - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - - \ No newline at end of file diff --git a/bootloaders/stk500v2/stk500boot.d b/bootloaders/stk500v2/stk500boot.d deleted file mode 100644 index 74aa067..0000000 --- a/bootloaders/stk500v2/stk500boot.d +++ /dev/null @@ -1,67 +0,0 @@ -stk500boot.d stk500boot.o: .././stk500boot.c \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ - C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\include/avr/iom2560.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\boot.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include-fixed\limits.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ - .././command.h - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: - -C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\Atmel\ATmega_DFP\1.7.374\include/avr/iom2560.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\boot.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include-fixed\limits.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: - -c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: - -.././command.h: diff --git a/bootloaders/stk500v2/stk500boot.o b/bootloaders/stk500v2/stk500boot.o deleted file mode 100644 index efe848ada2c9a0298e4b83bb8f56a21e17cd3fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23616 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 diff --git a/bootloaders/stk500v2/stk500boot.ppg b/bootloaders/stk500v2/stk500boot.ppg new file mode 100644 index 0000000..a8929d7 --- /dev/null +++ b/bootloaders/stk500v2/stk500boot.ppg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.eep b/bootloaders/stk500v2/stk500boot_v2_mega2560.eep deleted file mode 100644 index 8c230f4..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.eep +++ /dev/null @@ -1,2 +0,0 @@ -:040000033000E000E9 -:00000001FF diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.elf b/bootloaders/stk500v2/stk500boot_v2_mega2560.elf deleted file mode 100644 index fd66580ba11dfa5dc2d9e16ffc48a8cb33e7bdcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22576 zcmeI4d3;nw+V88nI~xfJB&;Ej4g>;{bapmT$cm9AA&VeHn~-#phHR!gYzkyS39E!A zK~RhfGKZo~tPn~npm1^I6@8^E*``C@Snw=AD?&WyvvN|=zmW|jdsuZ*#~5N9we3t%%@6dNV--=YH0 zp|CB8i4Xu}LZI?1f=Os)+deik3z8H95h#yBG4d_Qr$7glQ}Y>X2W@9)MFcs&jOu3{ zA{ccV`Q3etJ&o`b!Y>h?L^zG`bA+EEJc{rWgdZV1g77fHg9yC{ClKyMIEHW(f$H)g zbRpc0Z~$Q+!XAX(2zMfMAhaRuMA(jSJHl3k%?K?BE`-|<8WHLdHX=9?Y7iUYheGtiGlYA9v`?eFy-=;%hz9` z^YDL<4_Gc`URrwTcOp!=Y=utLrC^+&7#JNN`+WZwZ(KNc=G8OY8+Inr`+)Ze@24MM z{oL#gJ!9$%IyCa|$&}MU?_HhhJ&7FNH~H|XlqZ7DUmg2;;BWbb@G}u#j66fNjO@$l zZ}t41wZc_*4Sw5Cacfm8oEO~P@A(hUt52PKs;~Hs#Sy>y>d3h>5znJNz4Vc%zB=;b z?lI4|cCBNb6|J6iY}Da(Y|9bPU_hU@%VN6N6=0g!P4%^}qxxFUw|ZV=oj9LmIJ~30 zXA|E@+{BN5w#Rnw`D3;R6Hh0`dz)=kV)u8``}o+=0i(a1?!Bga;3{K_zW8nQnbG-}~3DCwEWZ z^~_)TBkZw-JY{r1$i=i5UbyvK;e__rR=%eo-mjYa^%zgLtVdT z7i@PxXG;Uyxkn zElti%cyGou@8|smv)`K$@BOs@{*;i57tg*ogRGnGz0iM}H`;d=p7&n#eirdv?1hn+ zCm-r~Z$|$3RY4(F&Yhja-{?Ov`rWgpzJ!#Df6Z!ZPd?=RmZu*5XX-#e@I}|z&V-MJ zC7+)?n^@X+qU})n{4002bxuPMQ%+y${KxpdJ;|*t$1WbqjJvYO>qRR8efMPEeB}eA z_IO)8tJtotfWCw0&3$c{MXlcG_DSvcbxdwQ*b&=)HZchO%0C<3-s#=f(e~l~j=MfO z(9!r}~cvvtM7FheD+sPA#W&1i}V1)(c%xCwt zwPvoovcIh}W#W|!&4Fg5&wPswA7G`3;Wu}EdK0BV2<}>;AzX2E7QDJ_ydR6 zGAsP_Nq5k%*tg&HFZ#k0{qTqqJ+UH;jM9t)8`PvCthIAC6g> zT)3#P-TO)OK(O;_xAziXhq?|)b+uu&P|az5Z}J!TueyKKeYAUbcOCzpU)ysQbLs1j zPdfTBn`nN8kBtp@@FLMq+P-chTG1uz{E_b;d1CU{uhVMyN59pZ;$;z|W2eTZ$67{? zojham+{w}HGx>bJwr_9Sy>0g->`AyMVLu-U?dbOSRQ_e#n2VqF2443596b-dlHYfZ zkM7y{{3V{yHK!}GC(#pm^gEu>6VY~OhwFXF{Y!DJ?!YsS7-Nq&r^GP z`OJvc*ftpd!n1{TdtqbY&cd&bKk&Oz4{o>Dq0z` z&fDZQ@^iz>rc_VaJcY)S*1{(dU&oHZ_y_d)Ms(l#d)}v2*4aj@?C|?-$%o!=O+NVk zo#%$;n|Te}Z+-^(B4&+&d9-2HjPAaeJe2|DzzE^pGrBhG}L1ZTpQ zgxv_i-7}KEKK6Zo>~9V~*Y=$CIl7X6bNuV$5zq6U;O?)E4E9HuMlkQY-@dXWCuf0m zX4Xx`_IdX8PPcu@iZXj?V`E)qZH2SJo^G3COS7lWojY%qHPe=1OTk5)_6JD_90BEU zrUR5V23AVr7{wUf_DP3Txa%D?6=|7ss5I?QNcGuJttRY8&YRf;unmaANkKmjL$0Qc zihjf(HnCSDjdE+SUm<23zebH@0`f((lrlx&#DmS_DIH`PgD7AUPJAW=;+c?M)mi%fn4GIpCxmVu1hDU;lN69y zAIc;d*rSWX>#^go4aXmdOZ^c^NVZ0hvEvCO4p`3l_;_ z3COj1GRX&7xKt*2AlDVkBp2lRn`P1fvS^)5GC>ws%OnRRt4=0OAlWXN%mvBWDwD@S za$99`8YFMGOr8MAKOmD|fGqLI+U#AO-i!ge<)Aq)gUvE~ZAjNOXWD!WoUu9y&D3_j>NgPPo zCo-7|a?=-r=&i?ttol+WGeK7WTPD|l+|0!-KrfXDvL;9-GeFjc38Jq87c4A~lF0&) zTPDin0gzj*GI%VaOe z=I3RyA7smmGPw(6>q~;@HaCK7dtD}TKyH6WCM!Yi_@6Q<1KECFCZ!-dK9-3SWamF+ zvH_%(UzX8zKyCbM87%~A=ikey9;icXVHnfxt^?Y|!?3FvLK}hZ_DA7ULf7!w*c+o39=UTc`r|r5p{YWPnVG!Xg{AXqZXh8e36W*fe!L~8C3w? z&6mlj1n3Z7DWh_rE`F1Y)&d>obboCDI>zsmwYC8r=lf+u8_s*VM@HL$?&HT~v;*h_@0HOip!@kL8NCD4 z%O91|>p&0iCuH;n(1ZMG8T}dPA>JpDZv9(85A)y4T61s}J<0zhqZFV=_@8Bz3UrFU zC!;i=A91fhdi5DVY-AAa-J|I<0WY>N7WT6M#{P()ZNO z1vT;D77&Xmz}ett=5HvswUjbUK?@+5ECC6`&d{m7o-!;!nUoP6FjYiBDTo5hmM?yZ z%)q+F&CD_&YM#b|N|9x`q)9yJ44zwBE^CsBnQbIqX-BExS+IxS%hw|vax>L>ikkyq z?}$UtF`c4h=ve5Oek_uY5Pgia!}vGwhUsV2H;bhdd}Ig8;~4_aMm7(RAn9$+>0=Uo zBr+eint2Y?BPxkgN*wUR4ycae8>ql(>{i7NfvuzJ~B0e9wdShPES`cUc3Li`R+?5F93_kutq?`!jY3tgi;R$A{_cG_?FFwh{ z*hCkRFNK$)Cl-?MooFR`;sz21Mb5-1EnT2hGl|EOZ^xN5e~=5l`n#DOrAkjhGv-tH zk54f50nm0kW-b+#pSq=`tzd`$9m(NGb|TS=Z{q80EMlCfdvOz;IW3q#;{nXEJ_t z#)^@lNjlER5F_&!5HT`eAc3}N)O%3sc`Erc(~BrM&XC9d9hqh<$8o2S`x}JumqBt3 z@;``Rt+H~E@wAhoEIQ(2SJY`#E2P^Am}C0`c!&=u!gF;7AIaPstcee5OJeE zG_x59okNXn5xEnP8*>*mzE#MzLVG4OGZ0RZwrFO*Xy$g2yBIke5W;D6v#6!RqU=HB z#w|leF~a-cn%ze=yW@ziLAW}Ub4>3M(P{)u|Aa!3>?1N~B z=Ge<-nq!|riV>^mPa-!W1Tu{^e??f8PVyxTt}ZVj8B2%pSIvE>Z7t++Q_xI1f>;*+ zG#7wx1)o+6M$;f(za#`;mm@|k?g(<`p_)l(Ni*(y(frdWM#c>aps%5o|;95=JH4jnL&y;rr(IRqA>;OY8%gM`BFChCLPfd0S1Zowb5B>ujf9;q`3#JvyR`fv9jBDxCIHor0LQ!;~2`o1cP8 z0-a(w-C`zTOlOKEKFbTp_t8y6?8e&JtV&u0`^EJy0DkXa*YMc^#3D`Kkuq*NCOjoD zeF7no^B6=F0#30W)M8@yjKmFw(>T+^u1yFwTk_EVI_LVzsF_$XLuif88V(9r8~(>D8(7S0Qz(1kcw5S5Is z24+BOLFl!i1yPH_@XV0~sUTPdAu1T5f>0HNsbHiE!c`EVf>A0Mt%67uM5$nm3dX8n zoC?OPV1f!JsvueglT;9+g2^hFqJmfzSXB_Gf~hK)rh<4COjp4S6(p!&rV3`M;2IUo zRzac)l2l+*L9z-`RFJBIG!>+)AVUS2Dwv~!xhj~ag83>~pn_{vuuuipso;7QEK+Tc3f8KiTm`qN;8qpbRj^J46)IS-f=U%sslcIvY8BL|pjHJ=6>Lz! zMitblpk4(HDri(elL~HAL9+^6DsZcyMFpEwuvrCLRIpVA+f;D73hq$Bb`|VU!A=#l za+S3Ck#;}Q;YW7)kvsj!U4CS@AL;ZXd;G{=KeEq{?Dr!F{K!E+a)UrNAC3__xX_%e&l{X((6Ya@FNfUk%#=q!+zwXA9=)& zobn?-@*_;_jH5!$;giD40!Q;=uJ4j*k8H*_+vagYTVZVL2D;wqKq{yJd*__L;R3@PKowQqIdDU*#Y3iB!BA(Ks0 z4M+$ph_Ye}AFfvhFq%j5#UqYphmk#a{3Pr_izaOPM-5dZD>63P#`OkdP8CGzMo|Um z0d1M7e|mjmCiB!NYH)QZJvJK~z*0p!<3i!hNPOzU_E;kmdIW$j4d(57}yd!87=!vv&xoI>v5Wil$;vM%K|AeZBILg z;i*W*?`_8i#1UQD==5|0lgh*L zVY?THYlBLkIY+Zmn01ld96Tv_dT5;NofQjA}HTN-YHicMl=Kufv|HcET1%m(wiwCo>a~^^RXaXeCliH6s`Pw8r zPUjFQZ4zmVk07NLt)`++oAjbu6Q9usbao4kzu(BS$_3?3&5bq974_C?XPv`kow;S+ zoLS}ck-x6o8{(Gwa z@2QpggExNN8#7Z<);Bh~ZFrQ+Se2u$Vymr|o^ZO{RrpE)X*{~AZgDw~!tgm9@Lj!@ zrlms9<;`!K$@>@&JjC}cmte+2uzJP#($jeJX{cF9O+Ra6t&OaIT9BbpriE#K0Tl#@ z3QR_8fo4WYiz(1NuwA6M`EHS`H3FnrAig~4fq7#?#)%n5cF40$O9zP=CfhVz2UijO zdZ6iOSBPsuh?~TjhXjf=ou|M7+-w%-*LH|SbV^)J$WdfEE-z&IFYlm2Fzz*T2;7De zRG&Fyf;dOwY!Tcds#p~g50W9;StibR?bNfwg(@u`t$=1;h{%0dyN+qKh6FtoNU+*eUtK;8e9gHw!B?Pifr@6_)alG0-)nTuExnOEw?s=IvXr>CW>=_uy^=)`K~4!-zGFiO7{NWUENzmTUsvzMK8xm zt!sU`LlAAuH2($ac2Zvqk5XE*LGzrZZ}?BMpL(jesv{&pK`BwOOZmMyr3j z(BCO+um}%W#4HHV=K{5&jiiZut1o7)ZA?!ghtTQ~DN_jMrLKcf(No&oht;|~R2mCc zTO(6MUnm_EvJhv@S3x28xrROyw4R#DPEku3`B$Vw&-9v6gPt;MS+hR#$sgKCXtS1!ei|#$=bhK? z2#JQOSM$F%vZ6mIO>_S7J4B=nUXmEX5E??HaD6+DtDK2t(%J8RXFM_=dR|T!ao+=T zeak~n*v+%J`70*6rFBue-D;Oa!z6V86Rdfp9IF8K^(^W zuZC>A2W!Z>8nfyNtnh#nmh6!++2P_P8QjvuvwS?PPr=K&Ex3Qpv%5u{ zItK~6UAuj;tlXTE;%t_MGs`W=Ely=+xy320401}A7G-Nu4lBzpMpo&ntmVZxXVWQ% zPAFQsDwj@K#jKnS=v7&+%I6=-PIh$mhAm@;rLo!Z~b4ku6 z87IhjBV6<&M=@PCnswe%UQOx2+BaH z7n89#YkAQcwxp<_usBVNQnd)R7sEcBQm~?ym#wCCrL8Rtxwgb;b)|_lmV&02>qDO= zh8`1xW&mc1h_s|*VeTPv}w7#VVQZshWTM*Y*wp<4r=2(+z z(yU2^E^87t(%0d018PaCZfS5iYZ@F?N%&yVEX(-uLABFSR|WlQXjQtMjSWdIhlq() zRk$l;nZCb7&CM;9ZsfXZ8=Kupj)sBJL?^dEpArptf^(XM^U@oUe{Q;5z&U0`ljXN%b}v8sS-!C zv!c$PwW-2cSFyg%!73VDn;p$!kYGkpMYGFM;;z7u(Wmg_VV^(fdYztzLCINAUgmN% zyULe3o1Jxa<++WOE%lBDx2t?fL1}qO=~8@VF``@t{O`NOH#;iHjv@2ycFdEOI=BA8 z#lE@O>2`=Oi_r)AScB#q%@r<3mOi6~I^WF5=d7x+g}MRTvsDmS`X>M~`-{F^+LTiA%ju|u^|+eZ*!h1E=n9$m0d;MjX8W}lUa5s21GeLp8?u<`_Z`JABXG8!qQ8mc ztrrkoLNKwkUW&ibFhvaS8JSpmuZWT6>{b(^V1YAwDGt{#MH2+h?4>wY!xWLlCN{U1 z?EDu3Dxrv+Vq$ZKCX4C{vM!Jndw7Y5lZm5Hl_67FYb`~zHbu&#^a3Gk!$N5?!6-{+ zT#{r;lRbe<(>H80^bJS;kbRupLZ)e*z2!#Kaub4yE$yY4Ud0Jw^jgl+gkBOF5Jm{l z#uC6tb|Z{57=AtjOo%K-?PTnyTJm#5_3Gxz41n4Oz|foeQoczh=awV)(4 zqQHhtgpC^BK@Ie}Br$qLawY<6zHx9Y#e) zS+Jp9kHic$MwWM?><{0+jeZ0(H%pz4-&GFvWQ0Mc@uAN6w2bQMHB!1f8S~-!z!Zfpkrd|sYBQ(L> zO9`8iGY1K}tU`?stuAWj9Z~b}eInUHe7JXrP}{h>?HHZAdNTpX_P1sqf77q<}kGi1)7-R@M$XVLaq096Y zqVFK*$_GtZ`M~8?7EwEW_24^b10Ww}hOeEagIp;ev^kKE;lBa-73lV>NymV{!b83!GlTdFtMkJOY)!e z9EwQ)O~hNI{0k)O^;==@=ZgG|A_ts(3E#S`GWDz1JY`7;0}| z@SK!S{`rR@(=Seq@{~`%E|u+%f-L99D)KdoJO{F`zXO9eK$hz(g&e4_&rz5~w<_f~ zKsJ^s`L|8UKcL9RAk%|w`a21cu>Vmd|0&2u`_w=Bg{0h{mmwR^qpAGcO8$98re8G5 z<>|MJvK)Y+mgP~390U0#%ny2APUAaU$)5|^_<<4mCs)ZYqI|DV67y?~l3xwkxc<@C zBI5Ubx<2*4UC}?F>!TZNG}=3=>o3{&Po@0VkbVB*tPcK_ z*B4wc%wM63JYL)awZCgN8XcRWv5e*C$N&1w3 z6J&Y3)+=&@B5zaVyA=5_WZ!slM!$WN>!%+SY1Wci1A{M+zCK_izo+Pbq{zcxm$2JQ zitIPo?RcVx#4;^`N9-aY9-503o<8FlWQ|B~b2K;V!qCH6J3Xz%Bh{ReRi!yM*wW@Q zJDywP5$1ZA%ht$jRgFGbf3Q28)ipLYF*{yc*;L$g8&)WNzEsMW zOiM@F*A9jn59UGOW0&44#(8-A=_$}yR+zKYaFXOZ-L4F&YiXIohlG9!(izmg_O;_sN>F zlDy*oWgiVkN;5ZAnl0(l2&Rc)8`g2n4a0n&f$8WF--QfyN?P;yRh;%k3L>M+l^_Vn>-OXBDYovrnY~rG1!#rR%@!gC~47IJYv7WxLVz!1x{45dQ z{@L)IpiTSnp|hcyF6;EYmA#_5qM-&~QtINcto7@g9h;0Cx)d7eYFr$L1ejxRG;JjH zYU%d&e|SuS9_@?7{SkX2`n#yuJ`5d{M@Jk2r2|R8-tjF&^mkQ_gZ7GaBp}cyVych! zAoO=sjXWSx2gQkcTDvc|3q9i=P5DN<7!03%*u&A^RW# zD0;ui8}1iFZ#4Ae@od4bp!>j#!_cExo*!fK@zZ%YHxhg*0`-HolH>xpzFjNuWJ2uY Kkb%Rf?>_;OJcm61 diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex index cc5cd63..c52e690 100644 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex +++ b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex @@ -1,124 +1,469 @@ :020000023000CC -:10E0000095C00000B9C00000B7C00000B5C0000056 -:10E01000B3C00000B1C00000AFC00000ADC0000040 -:10E02000ABC00000A9C00000A7C00000A5C0000050 -:10E03000A3C00000A1C000009FC000009DC0000060 -:10E040009BC0000099C0000097C0000095C0000070 -:10E0500093C0000091C000008FC000008DC0000080 -:10E060008BC0000089C0000087C0000085C0000090 -:10E0700083C0000081C000007FC000007DC00000A0 -:10E080007BC0000079C0000077C0000075C00000B0 -:10E0900073C0000071C000006FC000006DC00000C0 -:10E0A0006BC0000069C0000067C0000065C00000D0 -:10E0B00063C0000061C000005FC000005DC00000E0 -:10E0C0005BC0000059C0000057C0000055C00000F0 -:10E0D00053C0000051C000004FC000004DC0000000 -:10E0E0004BC000006BF171F179F180F184F18CF19A -:10E0F0009DF1DDF1B0F1F4F11EF31EF33EF21EF3DB -:10E100001EF31EF31EF31EF31EF31EF31EF31EF387 -:10E11000B0F104F235F24BF2C5F24BF2C5F21EF348 -:10E1200020F21EF313F208F21EF3B2F111241FBE07 -:10E13000CFEFD1E2DEBFCDBF01E00CBF12E0A0E027 -:10E14000B2E0EAE7F7EE03E00BBF02C007900D92E2 -:10E15000A430B107D9F722E0A4E0B2E001C01D92DB -:10E16000A630B207E1F715D006C301E20EBF0FEFEC -:10E170000DBF11241FBE0DC043CF8093C6008091F8 -:10E18000C00086FFFCCF8091C00080648093C000F7 -:10E190000895CF93DF93CDB7DEB7C052D1400FB60D -:10E1A000F894DEBF0FBECDBF01E20EBF0FEF0DBF73 -:10E1B00094B7F894A89514BE80916000886180930C -:10E1C000600010926000789493FF05C0E091040213 -:10E1D000F091050219958091C00082608093C00083 -:10E1E00080E18093C40088E18093C100000000E0DA -:10E1F00010E0C12CD12C760197EC892E9BE1992E51 -:10E20000A12CB12C24E0722E8091C00087FD25C086 -:10E210000115110511F525E02A95F1F700003FEFF2 -:10E22000C31AD30AE30AF30A91E080E041E2C4167C -:10E230004EE4D406E104F10408F490E0092F182F0D -:10E24000C701B601A501940157D2672B682B692B32 -:10E25000D9F684B3872584BBD7CF0F5F1F4F01301A -:10E26000110509F032C2C25EDE4F1882CE51D14094 -:10E27000D12C212C312C812C912C5401412C512C4E -:10E28000320140E050E020E001301105B1F081E0C2 -:10E2900092E1AAE7B0E03091C00037FD0EC00197CF -:10E2A000A109B109C1F7ABBFFC0187919691019615 -:10E2B00071F3EE27FF270994EACF9091C600E22E72 -:10E2C000F12CF7E0EF16F104D8F5F7018827EE58A6 -:10E2D000FF408E4F33C29B3109F405C200E010E0CD -:10E2E000D3CFD926C25EDE4F9883CE51D14022E0F3 -:10E2F000F5CF492F50E0542F4427D92623E0EECF05 -:10E30000492BD92624E0EACF9E3009F0F0C1D92666 -:10E31000212C312C25E0E2CFB1016F5F7F4FE1E08E -:10E32000F0E0EC0FFD1FE20DF31D9083D926461798 -:10E33000570709F4DEC11B01D1CF9D11D8C102C01E -:10E34000273061F62981822F90E0FC013197ED3171 -:10E35000F10508F073C18827E758FF408E4FEEC1E2 -:10E36000C12C54C09D81903339F48F818823B1F042 -:10E370008130B1F488E917C0892F807599F0903504 -:10E3800021F489E0E0E0F0E005C0983559F4E3E0DD -:10E39000F0E089E080935700849105C08EE103C0CE -:10E3A00081E001C080E01A821B829C831D828E83E3 -:10E3B0001F82C12C07E010E046C11A8288E08B83DF -:10E3C00081E48C8386E58D8382E58E8389E48F8367 -:10E3D00083E5888780E589878FE58A8782E38B8755 -:10E3E000C12C0BE010E02FC1EA81E059E33028F4A2 -:10E3F000F0E0E050FE4F808101C080E01A828B8304 -:10E40000C12C03E010E01FC1CC24C3941A8219C1AF -:10E410008D81882321F0813021F488E924C08EE1A8 -:10E4200022C081E020C01A82E1E0F0E089E0809320 -:10E43000570084918B831C82C12C04E010E003C13F -:10E440008B81803551F48C81883019F4E2E0F0E062 -:10E4500006C089E0E0E0F0E003C0E3E0F0E089E03E -:10E460008093570084911A82E5CF80EC8A83C12C77 -:10E4700002E010E0812C912C5401E5C06A817B817F -:10E480008C819D8163D12B013C01440C551C661C81 -:10E49000771C1A82D5C0EA80FB80FE24EF24FE247C -:10E4A000233109F03CC0811440EC940643E0A406FB -:10E4B000B10478F423E0F401A0925B0020935700AC -:10E4C000E89507B600FCFDCF3FEF931AA30AB30A05 -:10E4D000EACF93018201DE011B968D919D9141E06F -:10E4E0000C01F80120935B0040935700E89511243C -:10E4F0000E5F1F4F2F4F3F4F82E0E81AF10869F778 -:10E5000095E0F20160925B0090935700E89507B6A2 -:10E5100000FCFDCF81E180935700E89532C0D30124 -:10E52000C201B695A795979587956C01FE013B961C -:10E53000C15EDE4FF983E883CF51D14000E010E0A7 -:10E540000E151F05A1F0C15EDE4FE881F981CF51A4 -:10E55000D1406191C15EDE4FF983E883CF51D14054 -:10E56000C8018C0D9D1DF9D00F5F1F4FE9CF20E032 -:10E5700030E0000F111F221F331F040D151D261D33 -:10E58000371D1A82280139015BC08A819B81982737 -:10E59000892798278C010D5F1F4F1A82243101F5BE -:10E5A0008114F0EC9F06F3E0AF06B10408F446C016 -:10E5B000DE0111966BBEF2012791369112962C93D3 -:10E5C0001297FD01349613963C93139722E0420E66 -:10E5D000511C611C711C02971296009759F72BC0B1 -:10E5E000FE0131969F01280F391FB301A20141BDE1 -:10E5F000C52ED62EE72EFF24C2BC4F5F5F4F6F4F54 -:10E600007F4FF89AA0B5A28331962E173F0779F76E -:10E61000AC014150510960E070E04F5F5F4F6F4FB8 -:10E620007F4F440E551E661E771EE3E0F0E0EC0FB0 -:10E63000FD1FE80FF91F1082C12C05C080EC8A83F2 -:10E64000C12C02E010E08BE198DDC25EDE4F8881D4 -:10E65000CE51D14092DD812F90DD802F8EDD85E17E -:10E66000C25EDE4FD880CE51D140D826D0268EE073 -:10E6700084DDD126CE0101967C01080F191F0E15ED -:10E680001F0589F0F70121917F01C15EDE4F2883CC -:10E69000CF51D140822F71DDC15EDE4F3881CF5125 -:10E6A000D140D326ECCF8D2D68DDC25EDE4F488190 -:10E6B000CE51D1404F5FC25EDE4F4883CE51D14034 -:10E6C00000E010E0CC2009F4DCCD00008091C00017 -:10E6D0008D7F8093C00081E180935700E895EE27FD -:10E6E000FF270994FFCF8BE1D82E21E0F7CD20E062 -:10E6F000F5CD1A0126E0F2CDA1E21A2EAA1BBB1B12 -:10E70000FD010DC0AA1FBB1FEE1FFF1FA217B307FD -:10E71000E407F50720F0A21BB30BE40BF50B661F13 -:10E72000771F881F991F1A9469F7609570958095D7 -:10E7300090959B01AC01BD01CF010895EE0FFF1F25 -:10E74000881F8BBF0790F691E02D199469279627B3 -:10E7500069277827872778270895262FF999FECFEC -:10E760001FBA92BD81BD20BD0FB6F894FA9AF99AEE -:0AE770000FBE01960895F894FFCF44 -:04E77A000F020A0080 +:10E000000D9489F10D94B2F10D94B2F10D94B2F129 +:10E010000D94B2F10D94B2F10D94B2F10D94B2F1F0 +:10E020000D94B2F10D94B2F10D94B2F10D94B2F1E0 +:10E030000D94B2F10D94B2F10D94B2F10D94B2F1D0 +:10E040000D94B2F10D94B2F10D94B2F10D94B2F1C0 +:10E050000D94B2F10D94B2F10D94B2F10D94B2F1B0 +:10E060000D94B2F10D94B2F10D94B2F10D94B2F1A0 +:10E070000D94B2F10D94B2F10D94B2F10D94B2F190 +:10E080000D94B2F10D94B2F10D94B2F10D94B2F180 +:10E090000D94B2F10D94B2F10D94B2F10D94B2F170 +:10E0A0000D94B2F10D94B2F10D94B2F10D94B2F160 +:10E0B0000D94B2F10D94B2F10D94B2F10D94B2F150 +:10E0C0000D94B2F10D94B2F10D94B2F10D94B2F140 +:10E0D0000D94B2F10D94B2F10D94B2F10D94B2F130 +:10E0E0000D94B2F141546D656761323536300041AF +:10E0F000726475696E6F206578706C6F72657220DE +:10E1000073746B3530305632206279204D4C530099 +:10E11000426F6F746C6F616465723E004875683F52 +:10E1200000436F6D70696C6564206F6E203D200048 +:10E130004350552054797065202020203D20005FF9 +:10E140005F4156525F415243485F5F3D2000415658 +:10E1500052204C696243205665723D20004743437C +:10E160002056657273696F6E203D20004350552024 +:10E1700049442020202020203D20004C6F7720663D +:10E18000757365202020203D20004869676820665F +:10E190007573652020203D200045787420667573D6 +:10E1A00065202020203D20004C6F636B2066757336 +:10E1B000652020203D20004D617220203720323024 +:10E1C000313300312E362E3800342E332E350056A2 +:10E1D00023202020414444522020206F7020636F70 +:10E1E00064652020202020696E73747275637469E1 +:10E1F0006F6E2061646472202020496E74657272B3 +:10E20000757074006E6F20766563746F7200726A49 +:10E210006D702020006A6D70200057686174207056 +:10E220006F72743A00506F7274206E6F7420737541 +:10E2300070706F72746564004D7573742062652030 +:10E2400061206C6574746572002000577269747483 +:10E25000696E672045450052656164696E672045B7 +:10E26000450045452065727220636E743D00504F35 +:10E27000525400303D5A65726F2061646472003FF1 +:10E280003D43505520737461747300403D454550C3 +:10E29000524F4D207465737400423D426C696E6B41 +:10E2A000204C454400453D44756D70204545505215 +:10E2B0004F4D00463D44756D7020464C415348001B +:10E2C000483D48656C70004C3D4C69737420492F83 +:10E2D0004F20506F72747300513D51756974005234 +:10E2E0003D44756D702052414D00563D73686F7707 +:10E2F00020696E7465727275707420566563746FF0 +:10E30000727300593D506F727420626C696E6B00BD +:10E310002A0011241FBECFEFD1E2DEBFCDBF01E046 +:10E320000CBF12E0A0E0B2E0EEE1FDEF03E00BBFB6 +:10E3300002C007900D92A030B107D9F712E0A0E01B +:10E34000B2E001C01D92AE30B107E1F70F9460F367 +:10E350000D948DFE01E20EBF0FEF0DBF11241FBE05 +:10E360000D9460F30D9400F020E030E040ED57E0B4 +:10E3700005C0FA013197F1F72F5F3F4F2817390792 +:10E38000C0F308959C01260F311DC901A0E0B0E043 +:10E390002F5F3F4FABBFFC018791882361F08093D3 +:10E3A000C6008091C00086FFFCCF8091C0008064D1 +:10E3B0008093C000EACF08958DE08093C6008091DD +:10E3C000C00086FFFCCF8091C00080648093C000B5 +:10E3D0008AE08093C6008091C00086FFFCCF8091C8 +:10E3E000C00080648093C00008950F94C2F10F9420 +:10E3F000DCF10895FC019081992359F09093C600B7 +:10E400008091C00086FFFCCF8091C0008064809323 +:10E41000C0003196992379F70895282F982F929567 +:10E420009F70892F805D8A3308F0895F8093C600D2 +:10E430008091C00086FFFCCF8091C00080648093F3 +:10E44000C000822F8F70982F905D9A3308F0995FEB +:10E450009093C6008091C00086FFFCCF8091C000E1 +:10E4600080648093C00008959C01FB01853691056E +:10E470001CF46330710594F0C90164E670E00F94F8 +:10E480002EFE605D7F4F6093C6008091C00086FFC6 +:10E49000FCCF8091C00080648093C0002B30310598 +:10E4A00014F43297B4F0C90164E670E00F942EFEC4 +:10E4B0006AE070E00F942EFE605D7F4F6093C600AF +:10E4C0008091C00086FFFCCF8091C0008064809363 +:10E4D000C000C9016AE070E00F942EFEC0968093E0 +:10E4E000C6008091C00086FFFCCF8091C000806490 +:10E4F0008093C00008951F93182F8EE692EE60E07F +:10E500000F94C2F11093C6008091C00086FFFCCF2B +:10E510008091C00080648093C0000F94DCF11F9153 +:10E5200008952F923F924F925F926F927F928F92B7 +:10E530009F92AF92BF92CF92DF92EF92FF920F9392 +:10E540001F93DF93CF93CDB7DEB762970FB6F894E2 +:10E55000DEBF0FBECDBF382E622ECA01DB015C01CB +:10E560006D01772420E2222E2E010894411C511CBB +:10E570008BC081E0A81680E0B80681E0C80680E084 +:10E58000D80628F0C601AA27BB270F940DF2BB2797 +:10E59000AD2D9C2D8B2D0F940DF28A2D0F940DF225 +:10E5A0002092C6008091C00086FFFCCF8091C00001 +:10E5B00080648093C0009DE29093C6008091C0006B +:10E5C00086FFFCCF8091C00080648093C0002092C1 +:10E5D000C6008091C00086FFFCCF8091C00080649F +:10E5E0008093C00019828601750188249924A1E0D6 +:10E5F0003A1651F03A1620F0B2E03B1661F409C029 +:10E600000BBFF701779007C0C7010F9477FE782EF4 +:10E6100002C0F7017080872D0F940DF22092C60082 +:10E620008091C00086FFFCCF8091C0008064809301 +:10E63000C000872D8052F401EF70F0708F3520F408 +:10E64000E40DF51D708204C0E40DF51D8EE280839B +:10E650000894E11CF11C011D111D0894811C911CE2 +:10E6600090E18916910409F0C2CF80E190E0A0E02A +:10E67000B0E0A80EB91ECA1EDB1E198AC2010F9493 +:10E68000FAF10F94DCF16A94662009F072CF629679 +:10E690000FB6F894DEBF0FBECDBFCF91DF911F91B3 +:10E6A0000F91FF90EF90DF90CF90BF90AF909F9031 +:10E6B0008F907F906F905F904F903F902F90089534 +:10E6C0002F923F924F925F926F927F928F929F9282 +:10E6D000AF92BF92CF92DF92EF92FF920F931F9370 +:10E6E000DF93CF93CDB7DEB7CD53D1400FB6F894BB +:10E6F000DEBF0FBECDBF01E20EBF0FEF0DBF94B75F +:10E70000F894A89514BE80916000886180936000A1 +:10E7100010926000789493FF05C0E0910002F091A0 +:10E7200001021995279A2F9A8091C00082608093E8 +:10E73000C00080E18093C40088E18093C1000000A4 +:10E74000EE24FF24870144E0A42EB12CCC24DD2448 +:10E7500024C0C5010197F1F70894E11CF11C011DCB +:10E76000111D21E2E2162EE4F20620E0020720E06D +:10E77000120718F031E0C32ED12CC801B70127ECE5 +:10E780003BE140E050E00F9441FE611571058105C9 +:10E79000910519F485B1805885B98091C00087FD35 +:10E7A00003C0C114D104A9F2A6014F5F5F4FC25E3E +:10E7B000DE4F59834883CE51D140C25EDE4F8881FF +:10E7C0009981CE51D140019711F00D9410FEC05D9A +:10E7D000DE4F19821882C053D14060E0C15DDE4F28 +:10E7E0001882CF52D14088249924C35DDE4F19820C +:10E7F0001882CD52D140C05EDE4F188219821A8233 +:10E800001B82C052D140CE5CDE4F188219821A8220 +:10E810001B82C253D140EE24FF2487010BBFF701B6 +:10E8200007911691C45CDE4F19830883CC53D14005 +:10E830000D940BFEC25EDE4F28813981CE51D1404E +:10E840002130310509F52091C600C25EDE4F1982E4 +:10E850001882CE51D14022C02F5F3F4F4F4F5F4FA4 +:10E86000213082E138078AE7480780E0580780F0C6 +:10E87000C45CDE4FE881F981CC53D140EF5FFF4F9C +:10E8800019F0EE27FF27099420E030E040E050E047 +:10E890008091C00087FFE0CF2091C600C35DDE4FAE +:10E8A00048815981CD52D1404F5F5F4FC35DDE4FEC +:10E8B00059834883CD52D140213209F063C64A3092 +:10E8C000510508F05FC60894811C911C53E0851621 +:10E8D000910409F059C600E010E018C081E280936D +:10E8E000C6008091C00086FFFCCF8091C00080648C +:10E8F0008093C0002F5F3F4F2931310579F70F9486 +:10E90000DCF10F5F1F4F0530110519F020E030E0FA +:10E91000E5CF10920A0210920B0210920C02109294 +:10E920000D02109206021092070210920802109235 +:10E930000902109202021092030210920402109235 +:10E9400005028FEE90EE60E00F94F5F180E191EE1C +:10E9500060E00F94C2F18091C00087FFFCCF9091DE +:10E96000C600903608F09F759032B8F09093C600BC +:10E970008091C00086FFFCCF8091C00080648093AE +:10E98000C000A0E2A093C6008091C00086FFFCCF2B +:10E990008091C00080648093C000983409F4D7C18E +:10E9A0009934B8F4923409F459C1933458F490333B +:10E9B00019F1903308F4E3C59F33A1F1903409F0C5 +:10E9C000DEC5BDC0953409F470C1963409F0D7C5D1 +:10E9D00098C1923509F42BC2933538F49C3409F46C +:10E9E000F5C1913509F0CBC518C2963509F445C279 +:10E9F000993509F0C4C567C483E792EE62E00F94CD +:10EA0000F5F110920602109207021092080210927D +:10EA1000090210920A0210920B0210920C0210923C +:10EA20000D0213C18FE792EE62E00F94F5F18FEEC5 +:10EA300090EE60E00F94F5F181E291EE60E00F94CA +:10EA4000C2F187EB91EE60E00F94F5F180E391EE77 +:10EA500060E00F94C2F184EE90EE60E00F94F5F167 +:10EA60008FE391EE60E00F94C2F186E090E061E008 +:10EA700070E00F9434F20F94DCF18DE591EE60E0DC +:10EA80000F94C2F189EC91EE60E00F94F5F18EE401 +:10EA900091EE60E00F94C2F183EC91EE60E00F9490 +:10EAA000F5F18CE691EE60E00F94C2F18EE10F94E7 +:10EAB0000DF288E90F940DF281E00F940DF20F949E +:10EAC000DCF18BE791EE60E00F94C2F119E0E0E039 +:10EAD000F0E010935700E4918E2F0F940DF20F94F5 +:10EAE000DCF18AE891EE60E00F94C2F1E3E0F0E03F +:10EAF00010935700E4918E2F0F940DF20F94DCF1D8 +:10EB000089E991EE60E00F94C2F1E2E0F0E0109349 +:10EB10005700E4918E2F0F940DF20F94DCF188EAE8 +:10EB200091EE60E00F94C2F1E1E0F0E01093570045 +:10EB30001491812F0F940DF20F94DCF107CF8BE825 +:10EB400092EE62E00F94F5F18BE492EE60E00F94A8 +:10EB5000F5F10F94DCF100E010E019C0C8016F2D51 +:10EB60000F947FFEFF2031F489E492EE60E00F9471 +:10EB7000C2F10BC0F092C6008091C00086FFFCCFAE +:10EB80008091C00080648093C0000F5F1F4FC80158 +:10EB900081519F41A0E0B0E0ABBFFC01F790BAE229 +:10EBA000FB1621F0E2E000301E07C1F60F94DCF105 +:10EBB0000F94DCF187E592EE60E00F94F5F10F948D +:10EBC000DCF1CC24DD2400E010E01EC0C8010F946D +:10EBD00077FEF82E882331F489E492EE60E00F94FA +:10EBE000C2F10BC08093C6008091C00086FFFCCFAD +:10EBF0008091C00080648093C000FE1419F00894D6 +:10EC0000C11CD11C0F5F1F4FC80181519F41A0E063 +:10EC1000B0E0ABBFFC01E790FAE2EF1621F022E092 +:10EC20000030120799F60F94DCF10F94DCF182E6C4 +:10EC300092EE60E00F94C2F1C60161E070E00F94C3 +:10EC400034F20F94DCF10F94DCF110920202109276 +:10EC50000302109204021092050278CE89E992EE26 +:10EC600062E00F94F5F1279A2F9A16C02F9880E052 +:10EC700090E0E0EDF7E03197F1F7019684369105E9 +:10EC8000C1F72F9A80E090E0E0EDF7E03197F1F7DF +:10EC9000019684369105C1F78091C00087FFE6CFC9 +:10ECA0008091C00087FFFCCF64C485EA92EE62E0E9 +:10ECB0000F94F5F140910202509103026091040219 +:10ECC0007091050281E020E10F9491F2809102029F +:10ECD00090910302A0910402B091050280509F4FD1 +:10ECE000AF4FBF4F8093020290930302A0930402A0 +:10ECF000B093050280509041A040B04008F426CE69 +:10ED0000A4CF83EB92EE62E00F94F5F140910602FE +:10ED100050910702609108027091090280E020E1A1 +:10ED20000F9491F28091060290910702A09108023F +:10ED3000B091090280509F4FAF4FBF4F80930602A2 +:10ED400090930702A0930802B0930902FFCD80ECD4 +:10ED500092EE62E00F94F5F183E792EE60E00F949B +:10ED6000F5F18FE792EE60E00F94F5F18BE892EE0B +:10ED700060E00F94F5F189E992EE60E00F94F5F10F +:10ED800085EA92EE60E00F94F5F183EB92EE60E09D +:10ED90000F94F5F180EC92EE60E00F94F5F187ECC2 +:10EDA00092EE60E00F94F5F188ED92EE60E00F9442 +:10EDB000F5F18FED92EE60E00F94F5F18AEE92EEB0 +:10EDC00060E00F94F5F183E093EEBDCD87EC92EE19 +:10EDD00062E00F94F5F181E40F947BF282E40F94EA +:10EDE0007BF283E40F947BF284E40F947BF285E45E +:10EDF0000F947BF286E40F947BF287E40F947BF20E +:10EE000088E40F947BF28AE40F947BF28BE40F94F6 +:10EE10007BF28CE40F947BF299CD88ED92EE62E068 +:10EE20000F94F5F1772473948824992409C48FED05 +:10EE300092EE62E00F94F5F140910A0250910B02BC +:10EE400060910C0270910D0282E020E10F9491F22A +:10EE500080910A0290910B02A0910C02B0910D02D8 +:10EE600080509F4FAF4FBF4F80930A0290930B0289 +:10EE7000A0930C02B0930D0269CD8AEE92EE62E08F +:10EE80000F94F5F184EE90EE60E00F94F5F18FECC5 +:10EE900091EE60E00F94F5F1662477244301CC5D98 +:10EEA000DE4F19821882C452D140D401C301B695F5 +:10EEB000A79597958795CA5DDE4F88839983AA8326 +:10EEC000BB83C652D140CC5DDE4FA881B981C4520C +:10EED000D1401196CC5DDE4FB983A883C452D14096 +:10EEE000CD0162E070E00F9434F2B0E2B093C6005E +:10EEF0008091C00086FFFCCF8091C0008064809329 +:10EF0000C000EDE2E093C6008091C00086FFFCCF18 +:10EF10008091C00080648093C000F0E2F093C6004E +:10EF20008091C00086FFFCCF8091C00080648093F8 +:10EF3000C000CA5DDE4FE880F9800A811B81C6529D +:10EF4000D140BB27A12F902F8F2D0F940DF2CA5DBA +:10EF5000DE4F8881C652D1400F940DF2B0E2FB2EF5 +:10EF6000F092C6008091C00086FFFCCF8091C00067 +:10EF700080648093C0000DE30093C6008091C000C0 +:10EF800086FFFCCF8091C00080648093C00010E2B7 +:10EF90001093C6008091C00086FFFCCF8091C00016 +:10EFA00080648093C0008BBEF3012791C65DDE4F65 +:10EFB0002883CA52D140A22EBB24CC24DD2408943D +:10EFC000611C711C811C911C8BBEF3018791282E42 +:10EFD0003324442455240894611C711C811C911C09 +:10EFE0008BBEF3013791C55DDE4F3883CB52D140E4 +:10EFF0000894611C711C811C911C8BBEF30147910C +:10F00000C45DDE4F4883CC52D140ADEFEA2EAFEF66 +:10F01000FA2EAFEF0A2FAFEF1A2F6E0C7F1C801E57 +:10F02000911E142D032DF22CEE24EA0CFB1C0C1D5A +:10F030001D1D0F940DF220E22093C6008091C000A8 +:10F0400086FFFCCF8091C00080648093C000C65DC5 +:10F05000DE4F8881CA52D1400F940DF230E23093D6 +:10F06000C6008091C00086FFFCCF8091C000806404 +:10F070008093C000C45DDE4F8881CC52D1400F9494 +:10F080000DF240E24093C6008091C00086FFFCCFA5 +:10F090008091C00080648093C000C55DDE4F888190 +:10F0A000CB52D1400F940DF250E25093C6008091A4 +:10F0B000C00086FFFCCF8091C00080648093C000B8 +:10F0C0008FEFE8168FEFF80680E0080780E018075A +:10F0D00031F484E092EE60E00F94C2F1DFC0D80119 +:10F0E000C7018070907CA070B0708050904CA040A0 +:10F0F000B040D1F52FEF3FE340E050E0E222F322B1 +:10F1000004231523CA5DDE4FA880B980CA80DB8046 +:10F11000C652D140AE0CBF1CC01ED11EAA0CBB1CD7 +:10F12000CC1CDD1C8EE092EE60E00F94C2F1BB2798 +:10F13000A12F902F8F2D0F940DF28E2D0F940DF285 +:10F1400030E23093C6008091C00086FFFCCF8091F2 +:10F15000C00080648093C0004EE34093C60080915D +:10F16000C00086FFFCCF87C08EE09EEFA0E0B0E03D +:10F17000E822F9220A231B239CE0E91694E9F90608 +:10F1800090E0090790E0190709F088C0C45DDE4FE0 +:10F19000A881CC52D140EA2EFF2400E010E0102FCD +:10F1A0000F2DFE2CEE24C55DDE4FB881CB52D14031 +:10F1B000EB0EF11C011D111DD601C501817090706F +:10F1C000A070B070DC0199278827E80EF91E0A1F8D +:10F1D0001B1F20EF30E040E050E0A222B322C42207 +:10F1E000D52241E1AA0CBB1CCC1CDD1C4A95D1F7F1 +:10F1F000EA0CFB1C0C1D1D1D81E090E0A0E0B0E0BE +:10F20000282239224A225B2235E1220C331C441C7D +:10F21000551C3A95D1F7E20CF31C041D151D57013E +:10F220006801AA0CBB1CCC1CDD1C85E192EE60E0E1 +:10F230000F94C2F1C801AA27BB270F940DF2BB2778 +:10F24000A12F902F8F2D0F940DF28E2D0F940DF274 +:10F2500090E29093C6008091C00086FFFCCF809121 +:10F26000C00080648093C000AEE3A093C60080918C +:10F27000C00086FFFCCF8091C00080648093C000F6 +:10F28000C601AA27BB270F940DF2BB27AD2D9C2DDD +:10F290008B2D0F940DF28A2D0F940DF20F94DCF14B +:10F2A000CC5DDE4FE881F981C452D140F99709F471 +:10F2B0004DCBF4E0EF2EF12C012D112D6E0C7F1CA7 +:10F2C000801E911EF2CD83E093EE62E00F94F5F183 +:10F2D0008AE192EE60E00F94C2F18091C00087FF56 +:10F2E000FCCF1091C6001F751093C6008091C0001E +:10F2F00086FFFCCF8091C00080648093C0000F9493 +:10F30000DCF1812F81548A3108F036C1163409F4BA +:10F3100095C0173490F4133409F44EC0143430F40B +:10F320001134F1F0123409F01DC130C0143409F465 +:10F3300059C0153409F016C16BC01A3409F4C4C0A1 +:10F340001B3438F4173409F48FC0183409F00AC19B +:10F35000A1C01B3409F4D2C01C3409F003C1E8C0B9 +:10F360008FEF81B90DC082B1809582B980E090E0C5 +:10F37000E0EDF7E03197F1F70196883C9105C1F790 +:10F380008091C00087FFEFCF12B8EFC08FEF84B934 +:10F390000DC085B1809585B980E090E0E0EDF7E0A3 +:10F3A0003197F1F70196883C9105C1F78091C00033 +:10F3B00087FFEFCF15B8D9C08FEF87B90DC088B1DF +:10F3C000809588B980E090E0E0EDF7E03197F1F7C3 +:10F3D0000196883C9105C1F78091C00087FFEFCF6F +:10F3E00018B8C3C08FEF8AB90DC08BB180958BB9A7 +:10F3F00080E090E0E0EDF7E03197F1F70196883C8E +:10F400009105C1F78091C00087FFEFCF1BB8ADC059 +:10F410008FEF8DB90DC08EB180958EB980E090E0F0 +:10F42000E0EDF7E03197F1F70196883C9105C1F7DF +:10F430008091C00087FFEFCF1EB897C08FEF80BBD1 +:10F440000DC081B3809581BB80E090E0E0EDF7E0F6 +:10F450003197F1F70196883C9105C1F78091C00082 +:10F4600087FFEFCF11BA81C08FEF83BB0DC084B38C +:10F47000809584BB80E090E0E0EDF7E03197F1F714 +:10F480000196883C9105C1F78091C00087FFEFCFBE +:10F4900014BA6BC08FEF809301010FC080910201FD +:10F4A00080958093020180E090E0E0EDF7E03197F5 +:10F4B000F1F70196883C9105C1F78091C00087FF64 +:10F4C000EDCF1092020151C08FEF809304010FC065 +:10F4D0008091050180958093050180E090E0E0ED4A +:10F4E000F7E03197F1F70196883C9105C1F78091DB +:10F4F000C00087FFEDCF1092050137C08FEF8093DA +:10F5000007010FC08091080180958093080180E079 +:10F5100090E0E0EDF7E03197F1F70196883C910536 +:10F52000C1F78091C00087FFEDCF109208011DC088 +:10F530008FEF80930A010FC080910B01809580931B +:10F540000B0180E090E0E0EDF7E03197F1F70196F4 +:10F55000883C9105C1F78091C00087FFEDCF1092E4 +:10F560000B0103C085E292EEEEC98091C00087FFD7 +:10F57000FCCF8091C600EAC988E392EEE4C98CE131 +:10F5800091EEE1C988249924933011F1943028F444 +:10F59000913089F09230B8F408C0953061F195301F +:10F5A000F0F0963009F048C043C02B3109F042C951 +:10F5B00091E06BE13FC96227C15DDE4F2883CF52E6 +:10F5C000D14092E037C9B22FA0E0622793E032C960 +:10F5D000822F90E0A82BB92B622794E02BC92E3004 +:10F5E00009F039C3622795E0C05DDE4F19821882A9 +:10F5F000C053D1401FC9E1E0F0E0EC0FFD1FC05D3A +:10F60000DE4F08811981C053D140E00FF11F2083E4 +:10F610000F5F1F4FC05DDE4F19830883C053D14079 +:10F6200062270A171B0709F005C9D80196E002C92D +:10F63000261709F010C303C0973009F0FBC87724E0 +:10F640009981933109F412C19431C8F4963009F4C8 +:10F65000D8C0973050F4923009F406C1933009F4C1 +:10F660006DC0913009F059C253C0913109F477C08F +:10F67000923108F0BBC0903109F04FC2F5C098310B +:10F6800009F487C0993150F4953109F4EFC09531F0 +:10F6900008F4C6C1963109F040C2C2C19A3109F4DA +:10F6A0006CC09A3108F491C09B3109F45BC09D3164 +:10F6B00009F033C29D81903359F48F81882311F46E +:10F6C0009EE11CC0813011F091E018C098E916C08D +:10F6D000892F807591F0903539F4E0E0F0E089E011 +:10F6E0008093570094910AC0983539F4E3E0F0E034 +:10F6F00089E080935700949101C090E01A821B82A8 +:10F700008D818C831D829E831F8227E030E009C299 +:10F710001A8288E08B8381E48C8386E58D8382E581 +:10F720008E8389E48F8383E5888780E589878FE5E9 +:10F730008A8782E38B872BE030E0F3C18A818139AD +:10F7400041F0823941F0803911F48FE005C080E04A +:10F7500003C082E001C08AE01A828B8344C0772410 +:10F76000739482C08D81882311F48EE12CC0813086 +:10F7700011F081E028C088E926C01A82E1E0F0E0BB +:10F7800089E08093570084918B831C8224E030E0D1 +:10F79000C8C18B81803589F48C81883039F4E2E0EE +:10F7A000F0E089E08093570084910DC0E0E0F0E044 +:10F7B00089E080935700849106C0E3E0F0E089E09F +:10F7C0008093570084911A82DFCF8D81836C99E0FA +:10F7D000E1E0F0E0082E90935700E89507B600FCB2 +:10F7E000FDCF1A821B8223E030E09BC180EC8A832C +:10F7F000CE5CDE4F188219821A821B82C253D1401E +:10F800008EC18A8190E0A0E0B0E0582F44273327D2 +:10F8100022278B8190E0A0E0B0E0DC0199278827C7 +:10F82000282B392B4A2B5B2B8D8190E0A0E0B0E098 +:10F83000282B392B4A2B5B2B8C8190E0A0E0B0E089 +:10F84000BA2FA92F982F8827282B392B4A2B5B2BCF +:10F85000220F331F441F551FC05EDE4F288339839C +:10F860004A835B83C052D1401A8259C13A81C95C34 +:10F87000DE4F3883C753D140CA5CDE4F1882C6536F +:10F88000D1408B81C82EDD24CA5CDE4F488159816E +:10F89000C653D140C42AD52A933109F082C0CE5C28 +:10F8A000DE4F88819981AA81BB81C253D1408050AB +:10F8B000904CA340B04030F583E0CE5CDE4FE88052 +:10F8C000F9800A811B81C253D140F70100935B008C +:10F8D00080935700E89507B600FCFDCFCE5CDE4F65 +:10F8E000088119812A813B81C253D14000501F4FAA +:10F8F0002F4F3F4FCE5CDE4F088319832A833B8313 +:10F90000C253D140C05EDE4F488159816A817B81FC +:10F91000C052D140DE011B9631E08C9111962C91A2 +:10F9200011971296C75CDE4F2883C953D140C85C3B +:10F93000DE4F1882C853D14090E0C85CDE4FE881AA +:10F94000F981C853D1408E2B9F2B0C01FA01609393 +:10F950005B0030935700E89511244E5F5F4F6F4F67 +:10F960007F4F0EEFE02E0FEFF02ECE0CDF1CC114F8 +:10F97000D10499F685E0C05EDE4F088119812A81A5 +:10F980003B81C052D140F80120935B008093570027 +:10F99000E89507B600FCFDCF81E180935700E8951C +:10F9A00035C0C05EDE4F88819981AA81BB81C0527B +:10F9B000D140B695A795979587957C018601ABE0D8 +:10F9C000AA2EB12CAC0EBD1E0BC0D5016D915D01F0 +:10F9D000C7010F947FFE0894E11CF11C01501040F8 +:10F9E0000115110591F7A60160E070E0440F551F65 +:10F9F000661F771FC05EDE4FE880F9800A811B8199 +:10FA0000C052D1404E0D5F1D601F711F1A82C05E33 +:10FA1000DE4F488359836A837B83C052D1407FC0C5 +:10FA2000FA80C55CDE4FF882CB53D140C65CDE4F16 +:10FA30001882CA53D1408B81C82EDD24C65CDE4FAC +:10FA400008811981CA53D140C02AD12A1A828981DA +:10FA5000BE016D5F7F4F843121F59601C05EDE4FA0 +:10FA6000E880F9800A811B81C052D1400BBFF701A9 +:10FA700087919691DB018C9311969C936E5F7F4FDB +:10FA8000D801C7010296A11DB11DC05EDE4F88835B +:10FA90009983AA83BB83C052D14022503040F1F6F3 +:10FAA00036C0C05EDE4F288139814A815B81C052F9 +:10FAB000D1400894C108D108760100E010E0089414 +:10FAC000C11CD11C0894E11CF11C011D111DE20E8A +:10FAD000F31E041F151F21BDBB27A52F942F832FB5 +:10FAE00082BD2F5F3F4F4F4F5F4FF89A80B5DB01CC +:10FAF0008D93BD012E153F054007510761F7C05E8C +:10FB0000DE4F288339834A835B83C052D1409601FC +:10FB10002D5F3F4FFB01108204C080EC8A8322E0FE +:10FB200030E08BE18093C6008091C00086FFFCCF5F +:10FB30008091C00080648093C000C15DDE4FF88179 +:10FB4000CF52D140F093C6008091C00086FFFCCF19 +:10FB50008091C00080648093C000432F3093C60022 +:10FB60008091C00086FFFCCF8091C00080648093AC +:10FB7000C000922F2093C6008091C00086FFFCCF6A +:10FB80008091C00080648093C0008EE08093C600A6 +:10FB90008091C00086FFFCCF8091C000806480937C +:10FBA000C00065E1C15DDE4FE880CF52D1406E25D7 +:10FBB00069276427FE01319610C090819093C6009A +:10FBC0008091C00086FFFCCF31968091C000806498 +:10FBD0008093C0006927215030402115310569F715 +:10FBE0006093C6008091C00086FFFCCF8091C0006A +:10FBF00080648093C00085B1805885B9772081F4F6 +:10FC0000C15DDE4F0881CF52D1400F5FC15DDE4F35 +:10FC10000883CF52D14090E0A0E0B0E00D941AF4F8 +:10FC200027982F9880E090E020ED37E0F901319798 +:10FC3000F1F7019684369105C9F700008091C00064 +:10FC40008D7F8093C00081E180935700E895EE2777 +:10FC5000FF270994FFCF90E00D941AF497FB092E2B +:10FC600007260AD077FD04D02ED006D000201AF443 +:10FC7000709561957F4F0895F6F7909581959F4F08 +:10FC80000895A1E21A2EAA1BBB1BFD010DC0AA1FDD +:10FC9000BB1FEE1FFF1FA217B307E407F50720F0F5 +:10FCA000A21BB30BE40BF50B661F771F881F991F70 +:10FCB0001A9469F760957095809590959B01AC01B9 +:10FCC000BD01CF010895AA1BBB1B51E107C0AA1FAC +:10FCD000BB1FA617B70710F0A61BB70B881F991FED +:10FCE0005A95A9F780959095BC01CD010895F99991 +:10FCF000FECF92BD81BDF89A992780B50895262F31 +:10FD0000F999FECF1FBA92BD81BD20BD0FB6F89400 +:0EFD1000FA9AF99A0FBE01960895F894FFCF63 :040000033000E000E9 :00000001FF diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.lss b/bootloaders/stk500v2/stk500boot_v2_mega2560.lss deleted file mode 100644 index 1a72fb3..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.lss +++ /dev/null @@ -1,1641 +0,0 @@ - -stk500boot_v2_mega2560.elf: file format elf32-avr - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .data 00000004 00800200 0003e77a 0000084e 2**0 - CONTENTS, ALLOC, LOAD, DATA - 1 .text 0000077a 0003e000 0003e000 000000d4 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000002 00800204 00800204 00000852 2**0 - ALLOC - 3 .fuse 00000003 00820000 00820000 00000852 2**0 - CONTENTS, ALLOC, LOAD, DATA - 4 .lock 00000001 00830000 00830000 00000855 2**0 - CONTENTS, ALLOC, LOAD, DATA - 5 .comment 00000030 00000000 00000000 00000856 2**0 - CONTENTS, READONLY - 6 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00000888 2**2 - CONTENTS, READONLY - 7 .debug_aranges 00000058 00000000 00000000 000008c8 2**3 - CONTENTS, READONLY, DEBUGGING - 8 .debug_info 00001367 00000000 00000000 00000920 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_abbrev 00000dac 00000000 00000000 00001c87 2**0 - CONTENTS, READONLY, DEBUGGING - 10 .debug_line 00000988 00000000 00000000 00002a33 2**0 - CONTENTS, READONLY, DEBUGGING - 11 .debug_frame 00000068 00000000 00000000 000033bc 2**2 - CONTENTS, READONLY, DEBUGGING - 12 .debug_str 000006f2 00000000 00000000 00003424 2**0 - CONTENTS, READONLY, DEBUGGING - 13 .debug_loc 00000aa4 00000000 00000000 00003b16 2**0 - CONTENTS, READONLY, DEBUGGING - 14 .debug_ranges 00000058 00000000 00000000 000045ba 2**0 - CONTENTS, READONLY, DEBUGGING - -Disassembly of section .text: - -0003e000 <__vectors>: - 3e000: 95 c0 rjmp .+298 ; 0x3e12c <__ctors_end> - 3e002: 00 00 nop - 3e004: b9 c0 rjmp .+370 ; 0x3e178 <__bad_interrupt> - 3e006: 00 00 nop - 3e008: b7 c0 rjmp .+366 ; 0x3e178 <__bad_interrupt> - 3e00a: 00 00 nop - 3e00c: b5 c0 rjmp .+362 ; 0x3e178 <__bad_interrupt> - 3e00e: 00 00 nop - 3e010: b3 c0 rjmp .+358 ; 0x3e178 <__bad_interrupt> - 3e012: 00 00 nop - 3e014: b1 c0 rjmp .+354 ; 0x3e178 <__bad_interrupt> - 3e016: 00 00 nop - 3e018: af c0 rjmp .+350 ; 0x3e178 <__bad_interrupt> - 3e01a: 00 00 nop - 3e01c: ad c0 rjmp .+346 ; 0x3e178 <__bad_interrupt> - 3e01e: 00 00 nop - 3e020: ab c0 rjmp .+342 ; 0x3e178 <__bad_interrupt> - 3e022: 00 00 nop - 3e024: a9 c0 rjmp .+338 ; 0x3e178 <__bad_interrupt> - 3e026: 00 00 nop - 3e028: a7 c0 rjmp .+334 ; 0x3e178 <__bad_interrupt> - 3e02a: 00 00 nop - 3e02c: a5 c0 rjmp .+330 ; 0x3e178 <__bad_interrupt> - 3e02e: 00 00 nop - 3e030: a3 c0 rjmp .+326 ; 0x3e178 <__bad_interrupt> - 3e032: 00 00 nop - 3e034: a1 c0 rjmp .+322 ; 0x3e178 <__bad_interrupt> - 3e036: 00 00 nop - 3e038: 9f c0 rjmp .+318 ; 0x3e178 <__bad_interrupt> - 3e03a: 00 00 nop - 3e03c: 9d c0 rjmp .+314 ; 0x3e178 <__bad_interrupt> - 3e03e: 00 00 nop - 3e040: 9b c0 rjmp .+310 ; 0x3e178 <__bad_interrupt> - 3e042: 00 00 nop - 3e044: 99 c0 rjmp .+306 ; 0x3e178 <__bad_interrupt> - 3e046: 00 00 nop - 3e048: 97 c0 rjmp .+302 ; 0x3e178 <__bad_interrupt> - 3e04a: 00 00 nop - 3e04c: 95 c0 rjmp .+298 ; 0x3e178 <__bad_interrupt> - 3e04e: 00 00 nop - 3e050: 93 c0 rjmp .+294 ; 0x3e178 <__bad_interrupt> - 3e052: 00 00 nop - 3e054: 91 c0 rjmp .+290 ; 0x3e178 <__bad_interrupt> - 3e056: 00 00 nop - 3e058: 8f c0 rjmp .+286 ; 0x3e178 <__bad_interrupt> - 3e05a: 00 00 nop - 3e05c: 8d c0 rjmp .+282 ; 0x3e178 <__bad_interrupt> - 3e05e: 00 00 nop - 3e060: 8b c0 rjmp .+278 ; 0x3e178 <__bad_interrupt> - 3e062: 00 00 nop - 3e064: 89 c0 rjmp .+274 ; 0x3e178 <__bad_interrupt> - 3e066: 00 00 nop - 3e068: 87 c0 rjmp .+270 ; 0x3e178 <__bad_interrupt> - 3e06a: 00 00 nop - 3e06c: 85 c0 rjmp .+266 ; 0x3e178 <__bad_interrupt> - 3e06e: 00 00 nop - 3e070: 83 c0 rjmp .+262 ; 0x3e178 <__bad_interrupt> - 3e072: 00 00 nop - 3e074: 81 c0 rjmp .+258 ; 0x3e178 <__bad_interrupt> - 3e076: 00 00 nop - 3e078: 7f c0 rjmp .+254 ; 0x3e178 <__bad_interrupt> - 3e07a: 00 00 nop - 3e07c: 7d c0 rjmp .+250 ; 0x3e178 <__bad_interrupt> - 3e07e: 00 00 nop - 3e080: 7b c0 rjmp .+246 ; 0x3e178 <__bad_interrupt> - 3e082: 00 00 nop - 3e084: 79 c0 rjmp .+242 ; 0x3e178 <__bad_interrupt> - 3e086: 00 00 nop - 3e088: 77 c0 rjmp .+238 ; 0x3e178 <__bad_interrupt> - 3e08a: 00 00 nop - 3e08c: 75 c0 rjmp .+234 ; 0x3e178 <__bad_interrupt> - 3e08e: 00 00 nop - 3e090: 73 c0 rjmp .+230 ; 0x3e178 <__bad_interrupt> - 3e092: 00 00 nop - 3e094: 71 c0 rjmp .+226 ; 0x3e178 <__bad_interrupt> - 3e096: 00 00 nop - 3e098: 6f c0 rjmp .+222 ; 0x3e178 <__bad_interrupt> - 3e09a: 00 00 nop - 3e09c: 6d c0 rjmp .+218 ; 0x3e178 <__bad_interrupt> - 3e09e: 00 00 nop - 3e0a0: 6b c0 rjmp .+214 ; 0x3e178 <__bad_interrupt> - 3e0a2: 00 00 nop - 3e0a4: 69 c0 rjmp .+210 ; 0x3e178 <__bad_interrupt> - 3e0a6: 00 00 nop - 3e0a8: 67 c0 rjmp .+206 ; 0x3e178 <__bad_interrupt> - 3e0aa: 00 00 nop - 3e0ac: 65 c0 rjmp .+202 ; 0x3e178 <__bad_interrupt> - 3e0ae: 00 00 nop - 3e0b0: 63 c0 rjmp .+198 ; 0x3e178 <__bad_interrupt> - 3e0b2: 00 00 nop - 3e0b4: 61 c0 rjmp .+194 ; 0x3e178 <__bad_interrupt> - 3e0b6: 00 00 nop - 3e0b8: 5f c0 rjmp .+190 ; 0x3e178 <__bad_interrupt> - 3e0ba: 00 00 nop - 3e0bc: 5d c0 rjmp .+186 ; 0x3e178 <__bad_interrupt> - 3e0be: 00 00 nop - 3e0c0: 5b c0 rjmp .+182 ; 0x3e178 <__bad_interrupt> - 3e0c2: 00 00 nop - 3e0c4: 59 c0 rjmp .+178 ; 0x3e178 <__bad_interrupt> - 3e0c6: 00 00 nop - 3e0c8: 57 c0 rjmp .+174 ; 0x3e178 <__bad_interrupt> - 3e0ca: 00 00 nop - 3e0cc: 55 c0 rjmp .+170 ; 0x3e178 <__bad_interrupt> - 3e0ce: 00 00 nop - 3e0d0: 53 c0 rjmp .+166 ; 0x3e178 <__bad_interrupt> - 3e0d2: 00 00 nop - 3e0d4: 51 c0 rjmp .+162 ; 0x3e178 <__bad_interrupt> - 3e0d6: 00 00 nop - 3e0d8: 4f c0 rjmp .+158 ; 0x3e178 <__bad_interrupt> - 3e0da: 00 00 nop - 3e0dc: 4d c0 rjmp .+154 ; 0x3e178 <__bad_interrupt> - 3e0de: 00 00 nop - 3e0e0: 4b c0 rjmp .+150 ; 0x3e178 <__bad_interrupt> - 3e0e2: 00 00 nop - 3e0e4: 6b f1 brvs .+90 ; 0x3e140 <__do_copy_data+0x4> - 3e0e6: 71 f1 breq .+92 ; 0x3e144 <__do_copy_data+0x8> - 3e0e8: 79 f1 breq .+94 ; 0x3e148 <__do_copy_data+0xc> - 3e0ea: 80 f1 brcs .+96 ; 0x3e14c <__do_copy_data+0x10> - 3e0ec: 84 f1 brlt .+96 ; 0x3e14e <__do_copy_data+0x12> - 3e0ee: 8c f1 brlt .+98 ; 0x3e152 <__do_copy_data+0x16> - 3e0f0: 9d f1 brhs .+102 ; 0x3e158 <__do_clear_bss+0x2> - 3e0f2: dd f1 brhs .+118 ; 0x3e16a <__jumpMain> - 3e0f4: b0 f1 brcs .+108 ; 0x3e162 <.do_clear_bss_start+0x2> - 3e0f6: f4 f1 brlt .+124 ; 0x3e174 <__jumpMain+0xa> - 3e0f8: 1e f3 brts .-58 ; 0x3e0c0 <__vectors+0xc0> - 3e0fa: 1e f3 brts .-58 ; 0x3e0c2 <__vectors+0xc2> - 3e0fc: 3e f2 brts .-114 ; 0x3e08c <__vectors+0x8c> - 3e0fe: 1e f3 brts .-58 ; 0x3e0c6 <__vectors+0xc6> - 3e100: 1e f3 brts .-58 ; 0x3e0c8 <__vectors+0xc8> - 3e102: 1e f3 brts .-58 ; 0x3e0ca <__vectors+0xca> - 3e104: 1e f3 brts .-58 ; 0x3e0cc <__vectors+0xcc> - 3e106: 1e f3 brts .-58 ; 0x3e0ce <__vectors+0xce> - 3e108: 1e f3 brts .-58 ; 0x3e0d0 <__vectors+0xd0> - 3e10a: 1e f3 brts .-58 ; 0x3e0d2 <__vectors+0xd2> - 3e10c: 1e f3 brts .-58 ; 0x3e0d4 <__vectors+0xd4> - 3e10e: 1e f3 brts .-58 ; 0x3e0d6 <__vectors+0xd6> - 3e110: b0 f1 brcs .+108 ; 0x3e17e - 3e112: 04 f2 brlt .-128 ; 0x3e094 <__vectors+0x94> - 3e114: 35 f2 brhs .-116 ; 0x3e0a2 <__vectors+0xa2> - 3e116: 4b f2 brvs .-110 ; 0x3e0aa <__vectors+0xaa> - 3e118: c5 f2 brhs .-80 ; 0x3e0ca <__vectors+0xca> - 3e11a: 4b f2 brvs .-110 ; 0x3e0ae <__vectors+0xae> - 3e11c: c5 f2 brhs .-80 ; 0x3e0ce <__vectors+0xce> - 3e11e: 1e f3 brts .-58 ; 0x3e0e6 <__vectors+0xe6> - 3e120: 20 f2 brcs .-120 ; 0x3e0aa <__vectors+0xaa> - 3e122: 1e f3 brts .-58 ; 0x3e0ea <__vectors+0xea> - 3e124: 13 f2 brvs .-124 ; 0x3e0aa <__vectors+0xaa> - 3e126: 08 f2 brcs .-126 ; 0x3e0aa <__vectors+0xaa> - 3e128: 1e f3 brts .-58 ; 0x3e0f0 <__vectors+0xf0> - 3e12a: b2 f1 brmi .+108 ; 0x3e198 - -0003e12c <__ctors_end>: - 3e12c: 11 24 eor r1, r1 - 3e12e: 1f be out 0x3f, r1 ; 63 - 3e130: cf ef ldi r28, 0xFF ; 255 - 3e132: d1 e2 ldi r29, 0x21 ; 33 - 3e134: de bf out 0x3e, r29 ; 62 - 3e136: cd bf out 0x3d, r28 ; 61 - 3e138: 01 e0 ldi r16, 0x01 ; 1 - 3e13a: 0c bf out 0x3c, r16 ; 60 - -0003e13c <__do_copy_data>: - 3e13c: 12 e0 ldi r17, 0x02 ; 2 - 3e13e: a0 e0 ldi r26, 0x00 ; 0 - 3e140: b2 e0 ldi r27, 0x02 ; 2 - 3e142: ea e7 ldi r30, 0x7A ; 122 - 3e144: f7 ee ldi r31, 0xE7 ; 231 - 3e146: 03 e0 ldi r16, 0x03 ; 3 - 3e148: 0b bf out 0x3b, r16 ; 59 - 3e14a: 02 c0 rjmp .+4 ; 0x3e150 <__do_copy_data+0x14> - 3e14c: 07 90 elpm r0, Z+ - 3e14e: 0d 92 st X+, r0 - 3e150: a4 30 cpi r26, 0x04 ; 4 - 3e152: b1 07 cpc r27, r17 - 3e154: d9 f7 brne .-10 ; 0x3e14c <__do_copy_data+0x10> - -0003e156 <__do_clear_bss>: - 3e156: 22 e0 ldi r18, 0x02 ; 2 - 3e158: a4 e0 ldi r26, 0x04 ; 4 - 3e15a: b2 e0 ldi r27, 0x02 ; 2 - 3e15c: 01 c0 rjmp .+2 ; 0x3e160 <.do_clear_bss_start> - -0003e15e <.do_clear_bss_loop>: - 3e15e: 1d 92 st X+, r1 - -0003e160 <.do_clear_bss_start>: - 3e160: a6 30 cpi r26, 0x06 ; 6 - 3e162: b2 07 cpc r27, r18 - 3e164: e1 f7 brne .-8 ; 0x3e15e <.do_clear_bss_loop> - 3e166: 15 d0 rcall .+42 ; 0x3e192
- 3e168: 06 c3 rjmp .+1548 ; 0x3e776 <_exit> - -0003e16a <__jumpMain>: - 3e16a: 01 e2 ldi r16, 0x21 ; 33 - unsigned int i; - for (i=0;i - -0003e178 <__bad_interrupt>: - 3e178: 43 cf rjmp .-378 ; 0x3e000 <__vectors> - -0003e17a : - 3e17a: 80 93 c6 00 sts 0x00C6, r24 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7c00c6> - 3e17e: 80 91 c0 00 lds r24, 0x00C0 ; 0x8000c0 <__TEXT_REGION_LENGTH__+0x7c00c0> - 3e182: 86 ff sbrs r24, 6 - 3e184: fc cf rjmp .-8 ; 0x3e17e - 3e186: 80 91 c0 00 lds r24, 0x00C0 ; 0x8000c0 <__TEXT_REGION_LENGTH__+0x7c00c0> - 3e18a: 80 64 ori r24, 0x40 ; 64 - 3e18c: 80 93 c0 00 sts 0x00C0, r24 ; 0x8000c0 <__TEXT_REGION_LENGTH__+0x7c00c0> - 3e190: 08 95 ret - -0003e192
: -void (*app_start)(void) = 0x0000; - - -//***************************************************************************** -int main(void) -{ - 3e192: cf 93 push r28 - 3e194: df 93 push r29 - 3e196: cd b7 in r28, 0x3d ; 61 - 3e198: de b7 in r29, 0x3e ; 62 - 3e19a: c0 52 subi r28, 0x20 ; 32 - 3e19c: d1 40 sbci r29, 0x01 ; 1 - 3e19e: 0f b6 in r0, 0x3f ; 63 - 3e1a0: f8 94 cli - 3e1a2: de bf out 0x3e, r29 ; 62 - 3e1a4: 0f be out 0x3f, r0 ; 63 - 3e1a6: cd bf out 0x3d, r28 ; 61 - unsigned int rcvdCharCntr = 0; -#endif - - //* some chips dont set the stack properly - asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); - asm volatile ( "ldi 16, %0" :: "i" (RAMEND >> 8) ); - 3e1a8: 01 e2 ldi r16, 0x21 ; 33 - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); - 3e1aa: 0e bf out 0x3e, r16 ; 62 - asm volatile ( "ldi 16, %0" :: "i" (RAMEND & 0x0ff) ); - 3e1ac: 0f ef ldi r16, 0xFF ; 255 - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - 3e1ae: 0d bf out 0x3d, r16 ; 61 -#ifdef _FIX_ISSUE_181_ - //************************************************************************ - //* Dec 29, 2011 Issue #181, added watch dog timmer support - //* handle the watch dog timer - uint8_t mcuStatusReg; - mcuStatusReg = MCUSR; - 3e1b0: 94 b7 in r25, 0x34 ; 52 - - __asm__ __volatile__ ("cli"); - 3e1b2: f8 94 cli - __asm__ __volatile__ ("wdr"); - 3e1b4: a8 95 wdr - MCUSR = 0; - 3e1b6: 14 be out 0x34, r1 ; 52 - WDTCSR |= _BV(WDCE) | _BV(WDE); - 3e1b8: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <__TEXT_REGION_LENGTH__+0x7c0060> - 3e1bc: 88 61 ori r24, 0x18 ; 24 - 3e1be: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <__TEXT_REGION_LENGTH__+0x7c0060> - WDTCSR = 0; - 3e1c2: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <__TEXT_REGION_LENGTH__+0x7c0060> - __asm__ __volatile__ ("sei"); - 3e1c6: 78 94 sei - // check if WDT generated the reset, if so, go straight to app - if (mcuStatusReg & _BV(WDRF)) - 3e1c8: 93 ff sbrs r25, 3 - 3e1ca: 05 c0 rjmp .+10 ; 0x3e1d6 - { - app_start(); - 3e1cc: e0 91 04 02 lds r30, 0x0204 ; 0x800204 <__data_end> - 3e1d0: f0 91 05 02 lds r31, 0x0205 ; 0x800205 <__data_end+0x1> - 3e1d4: 19 95 eicall - /* - * Init UART - * set baudrate and enable USART receiver and transmiter without interrupts - */ -#if UART_BAUDRATE_DOUBLE_SPEED - UART_STATUS_REG |= (1 < - 3e1da: 82 60 ori r24, 0x02 ; 2 - 3e1dc: 80 93 c0 00 sts 0x00C0, r24 ; 0x8000c0 <__TEXT_REGION_LENGTH__+0x7c00c0> -#endif - UART_BAUD_RATE_LOW = UART_BAUD_SELECT(BAUDRATE,F_CPU); - 3e1e0: 80 e1 ldi r24, 0x10 ; 16 - 3e1e2: 80 93 c4 00 sts 0x00C4, r24 ; 0x8000c4 <__TEXT_REGION_LENGTH__+0x7c00c4> - UART_CONTROL_REG = (1 << UART_ENABLE_RECEIVER) | (1 << UART_ENABLE_TRANSMITTER); - 3e1e6: 88 e1 ldi r24, 0x18 ; 24 - 3e1e8: 80 93 c1 00 sts 0x00C1, r24 ; 0x8000c1 <__TEXT_REGION_LENGTH__+0x7c00c1> - - asm volatile ("nop"); // wait until port has changed - 3e1ec: 00 00 nop - 3e1ee: 00 e0 ldi r16, 0x00 ; 0 - 3e1f0: 10 e0 ldi r17, 0x00 ; 0 - 3e1f2: c1 2c mov r12, r1 - 3e1f4: d1 2c mov r13, r1 - 3e1f6: 76 01 movw r14, r12 - if (boot_timer > boot_timeout) - { - boot_state = 1; // (after ++ -> boot_state=2 bootloader timeout, jump to main 0x00000 ) - } - #ifdef BLINK_LED_WHILE_WAITING - if ((boot_timer % _BLINK_LOOP_COUNT_) == 0) - 3e1f8: 97 ec ldi r25, 0xC7 ; 199 - 3e1fa: 89 2e mov r8, r25 - 3e1fc: 9b e1 ldi r25, 0x1B ; 27 - 3e1fe: 99 2e mov r9, r25 - 3e200: a1 2c mov r10, r1 - 3e202: b1 2c mov r11, r1 - { - //* toggle the LED - PROGLED_PORT ^= (1< - delay_ms(100); -#endif - - while (boot_state==0) - { - while ((!(Serial_Available())) && (boot_state == 0)) // wait for data - 3e20c: 87 fd sbrc r24, 7 - 3e20e: 25 c0 rjmp .+74 ; 0x3e25a - 3e210: 01 15 cp r16, r1 - 3e212: 11 05 cpc r17, r1 - 3e214: 11 f5 brne .+68 ; 0x3e25a - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); - 3e216: 25 e0 ldi r18, 0x05 ; 5 - 3e218: 2a 95 dec r18 - 3e21a: f1 f7 brne .-4 ; 0x3e218 - 3e21c: 00 00 nop - { - _delay_ms(0.001); - boot_timer++; - 3e21e: 3f ef ldi r19, 0xFF ; 255 - 3e220: c3 1a sub r12, r19 - 3e222: d3 0a sbc r13, r19 - 3e224: e3 0a sbc r14, r19 - 3e226: f3 0a sbc r15, r19 - if (boot_timer > boot_timeout) - { - boot_state = 1; // (after ++ -> boot_state=2 bootloader timeout, jump to main 0x00000 ) - 3e228: 91 e0 ldi r25, 0x01 ; 1 - 3e22a: 80 e0 ldi r24, 0x00 ; 0 - 3e22c: 41 e2 ldi r20, 0x21 ; 33 - 3e22e: c4 16 cp r12, r20 - 3e230: 4e e4 ldi r20, 0x4E ; 78 - 3e232: d4 06 cpc r13, r20 - 3e234: e1 04 cpc r14, r1 - 3e236: f1 04 cpc r15, r1 - 3e238: 08 f4 brcc .+2 ; 0x3e23c - 3e23a: 90 e0 ldi r25, 0x00 ; 0 - 3e23c: 09 2f mov r16, r25 - 3e23e: 18 2f mov r17, r24 - } - #ifdef BLINK_LED_WHILE_WAITING - if ((boot_timer % _BLINK_LOOP_COUNT_) == 0) - 3e240: c7 01 movw r24, r14 - 3e242: b6 01 movw r22, r12 - 3e244: a5 01 movw r20, r10 - 3e246: 94 01 movw r18, r8 - 3e248: 57 d2 rcall .+1198 ; 0x3e6f8 <__udivmodsi4> - 3e24a: 67 2b or r22, r23 - 3e24c: 68 2b or r22, r24 - 3e24e: 69 2b or r22, r25 - 3e250: d9 f6 brne .-74 ; 0x3e208 - { - //* toggle the LED - PROGLED_PORT ^= (1< - } - #endif - } - boot_state++; // ( if boot_state=1 bootloader received byte from UART, enter bootloader mode) - 3e25a: 0f 5f subi r16, 0xFF ; 255 - 3e25c: 1f 4f sbci r17, 0xFF ; 255 - } - - - if (boot_state==1) - 3e25e: 01 30 cpi r16, 0x01 ; 1 - 3e260: 11 05 cpc r17, r1 - 3e262: 09 f0 breq .+2 ; 0x3e266 - 3e264: 32 c2 rjmp .+1124 ; 0x3e6ca - 3e266: c2 5e subi r28, 0xE2 ; 226 - 3e268: de 4f sbci r29, 0xFE ; 254 - 3e26a: 18 82 st Y, r1 - 3e26c: ce 51 subi r28, 0x1E ; 30 - 3e26e: d1 40 sbci r29, 0x01 ; 1 - 3e270: d1 2c mov r13, r1 - 3e272: 21 2c mov r2, r1 - 3e274: 31 2c mov r3, r1 - 3e276: 81 2c mov r8, r1 - 3e278: 91 2c mov r9, r1 - 3e27a: 54 01 movw r10, r8 - 3e27c: 41 2c mov r4, r1 - 3e27e: 51 2c mov r5, r1 - 3e280: 32 01 movw r6, r4 - UART_STATUS_REG |= (1 < - UART_STATUS_REG |= (1 < - 3e29a: 37 fd sbrc r19, 7 - 3e29c: 0e c0 rjmp .+28 ; 0x3e2ba - 3e29e: 01 97 sbiw r24, 0x01 ; 1 - 3e2a0: a1 09 sbc r26, r1 - 3e2a2: b1 09 sbc r27, r1 - { - // wait for data - count++; - if (count > MAX_TIME_COUNT) - 3e2a4: c1 f7 brne .-16 ; 0x3e296 - { - unsigned int data; - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(0); //* get the first word of the user program - 3e2a6: ab bf out 0x3b, r26 ; 59 - 3e2a8: fc 01 movw r30, r24 - 3e2aa: 87 91 elpm r24, Z+ - 3e2ac: 96 91 elpm r25, Z - #else - data = pgm_read_word_near(0); //* get the first word of the user program - #endif - if (data != 0xffff) //* make sure its valid before jumping to it. - 3e2ae: 01 96 adiw r24, 0x01 ; 1 - 3e2b0: 71 f3 breq .-36 ; 0x3e28e - { - asm volatile( - 3e2b2: ee 27 eor r30, r30 - 3e2b4: ff 27 eor r31, r31 - 3e2b6: 09 94 ijmp - 3e2b8: ea cf rjmp .-44 ; 0x3e28e - ); - } - count = 0; - } - } - return UART_DATA_REG; - 3e2ba: 90 91 c6 00 lds r25, 0x00C6 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7c00c6> - // c = recchar(); - c = recchar_timeout(); - - } - - switch (msgParseState) - 3e2be: e2 2e mov r14, r18 - 3e2c0: f1 2c mov r15, r1 - 3e2c2: f7 e0 ldi r31, 0x07 ; 7 - 3e2c4: ef 16 cp r14, r31 - 3e2c6: f1 04 cpc r15, r1 - 3e2c8: d8 f5 brcc .+118 ; 0x3e340 - 3e2ca: f7 01 movw r30, r14 - 3e2cc: 88 27 eor r24, r24 - 3e2ce: ee 58 subi r30, 0x8E ; 142 - 3e2d0: ff 40 sbci r31, 0x0F ; 15 - 3e2d2: 8e 4f sbci r24, 0xFE ; 254 - 3e2d4: 33 c2 rjmp .+1126 ; 0x3e73c <__tablejump2__> - { - case ST_START: - if ( c == MESSAGE_START ) - 3e2d6: 9b 31 cpi r25, 0x1B ; 27 - 3e2d8: 09 f4 brne .+2 ; 0x3e2dc - 3e2da: 05 c2 rjmp .+1034 ; 0x3e6e6 - 3e2dc: 00 e0 ldi r16, 0x00 ; 0 - 3e2de: 10 e0 ldi r17, 0x00 ; 0 - 3e2e0: d3 cf rjmp .-90 ; 0x3e288 - - case ST_GET_SEQ_NUM: - #ifdef _FIX_ISSUE_505_ - seqNum = c; - msgParseState = ST_MSG_SIZE_1; - checksum ^= c; - 3e2e2: d9 26 eor r13, r25 - else - { - msgParseState = ST_START; - } - #endif - break; - 3e2e4: c2 5e subi r28, 0xE2 ; 226 - 3e2e6: de 4f sbci r29, 0xFE ; 254 - 3e2e8: 98 83 st Y, r25 - 3e2ea: ce 51 subi r28, 0x1E ; 30 - 3e2ec: d1 40 sbci r29, 0x01 ; 1 - break; - - case ST_GET_SEQ_NUM: - #ifdef _FIX_ISSUE_505_ - seqNum = c; - msgParseState = ST_MSG_SIZE_1; - 3e2ee: 22 e0 ldi r18, 0x02 ; 2 - else - { - msgParseState = ST_START; - } - #endif - break; - 3e2f0: f5 cf rjmp .-22 ; 0x3e2dc - - case ST_MSG_SIZE_1: - msgLength = c<<8; - 3e2f2: 49 2f mov r20, r25 - 3e2f4: 50 e0 ldi r21, 0x00 ; 0 - 3e2f6: 54 2f mov r21, r20 - 3e2f8: 44 27 eor r20, r20 - msgParseState = ST_MSG_SIZE_2; - checksum ^= c; - 3e2fa: d9 26 eor r13, r25 - #endif - break; - - case ST_MSG_SIZE_1: - msgLength = c<<8; - msgParseState = ST_MSG_SIZE_2; - 3e2fc: 23 e0 ldi r18, 0x03 ; 3 - checksum ^= c; - break; - 3e2fe: ee cf rjmp .-36 ; 0x3e2dc - - case ST_MSG_SIZE_2: - msgLength |= c; - 3e300: 49 2b or r20, r25 - msgParseState = ST_GET_TOKEN; - checksum ^= c; - 3e302: d9 26 eor r13, r25 - checksum ^= c; - break; - - case ST_MSG_SIZE_2: - msgLength |= c; - msgParseState = ST_GET_TOKEN; - 3e304: 24 e0 ldi r18, 0x04 ; 4 - checksum ^= c; - break; - 3e306: ea cf rjmp .-44 ; 0x3e2dc - - case ST_GET_TOKEN: - if ( c == TOKEN ) - 3e308: 9e 30 cpi r25, 0x0E ; 14 - 3e30a: 09 f0 breq .+2 ; 0x3e30e - 3e30c: f0 c1 rjmp .+992 ; 0x3e6ee - { - msgParseState = ST_GET_DATA; - checksum ^= c; - 3e30e: d9 26 eor r13, r25 - ii = 0; - 3e310: 21 2c mov r2, r1 - 3e312: 31 2c mov r3, r1 - break; - - case ST_GET_TOKEN: - if ( c == TOKEN ) - { - msgParseState = ST_GET_DATA; - 3e314: 25 e0 ldi r18, 0x05 ; 5 - 3e316: e2 cf rjmp .-60 ; 0x3e2dc - msgParseState = ST_START; - } - break; - - case ST_GET_DATA: - msgBuffer[ii++] = c; - 3e318: b1 01 movw r22, r2 - 3e31a: 6f 5f subi r22, 0xFF ; 255 - 3e31c: 7f 4f sbci r23, 0xFF ; 255 - 3e31e: e1 e0 ldi r30, 0x01 ; 1 - 3e320: f0 e0 ldi r31, 0x00 ; 0 - 3e322: ec 0f add r30, r28 - 3e324: fd 1f adc r31, r29 - 3e326: e2 0d add r30, r2 - 3e328: f3 1d adc r31, r3 - 3e32a: 90 83 st Z, r25 - checksum ^= c; - 3e32c: d9 26 eor r13, r25 - if (ii == msgLength ) - 3e32e: 46 17 cp r20, r22 - 3e330: 57 07 cpc r21, r23 - 3e332: 09 f4 brne .+2 ; 0x3e336 - 3e334: de c1 rjmp .+956 ; 0x3e6f2 - 3e336: 1b 01 movw r2, r22 - 3e338: d1 cf rjmp .-94 ; 0x3e2dc - msgParseState = ST_GET_CHECK; - } - break; - - case ST_GET_CHECK: - if ( c == checksum ) - 3e33a: 9d 11 cpse r25, r13 - 3e33c: d8 c1 rjmp .+944 ; 0x3e6ee - 3e33e: 02 c0 rjmp .+4 ; 0x3e344 - { - /* - * Collect received bytes to a complete message - */ - msgParseState = ST_START; - while ( msgParseState != ST_PROCESS ) - 3e340: 27 30 cpi r18, 0x07 ; 7 - 3e342: 61 f6 brne .-104 ; 0x3e2dc - - /* - * Now process the STK500 commands, see Atmel Appnote AVR068 - */ - - switch (msgBuffer[0]) - 3e344: 29 81 ldd r18, Y+1 ; 0x01 - 3e346: 82 2f mov r24, r18 - 3e348: 90 e0 ldi r25, 0x00 ; 0 - 3e34a: fc 01 movw r30, r24 - 3e34c: 31 97 sbiw r30, 0x01 ; 1 - 3e34e: ed 31 cpi r30, 0x1D ; 29 - 3e350: f1 05 cpc r31, r1 - 3e352: 08 f0 brcs .+2 ; 0x3e356 - 3e354: 73 c1 rjmp .+742 ; 0x3e63c - 3e356: 88 27 eor r24, r24 - 3e358: e7 58 subi r30, 0x87 ; 135 - 3e35a: ff 40 sbci r31, 0x0F ; 15 - 3e35c: 8e 4f sbci r24, 0xFE ; 254 - 3e35e: ee c1 rjmp .+988 ; 0x3e73c <__tablejump2__> - 3e360: c1 2c mov r12, r1 - 3e362: 54 c0 rjmp .+168 ; 0x3e40c - case CMD_SPI_MULTI: - { - unsigned char answerByte; - unsigned char flag=0; - - if ( msgBuffer[4]== 0x30 ) - 3e364: 9d 81 ldd r25, Y+5 ; 0x05 - 3e366: 90 33 cpi r25, 0x30 ; 48 - 3e368: 39 f4 brne .+14 ; 0x3e378 - { - unsigned char signatureIndex = msgBuffer[6]; - 3e36a: 8f 81 ldd r24, Y+7 ; 0x07 - - if ( signatureIndex == 0 ) - 3e36c: 88 23 and r24, r24 - 3e36e: b1 f0 breq .+44 ; 0x3e39c - { - answerByte = (SIGNATURE_BYTES >> 16) & 0x000000FF; - } - else if ( signatureIndex == 1 ) - 3e370: 81 30 cpi r24, 0x01 ; 1 - 3e372: b1 f4 brne .+44 ; 0x3e3a0 - { - answerByte = (SIGNATURE_BYTES >> 8) & 0x000000FF; - 3e374: 88 e9 ldi r24, 0x98 ; 152 - 3e376: 17 c0 rjmp .+46 ; 0x3e3a6 - else - { - answerByte = SIGNATURE_BYTES & 0x000000FF; - } - } - else if ( msgBuffer[4] & 0x50 ) - 3e378: 89 2f mov r24, r25 - 3e37a: 80 75 andi r24, 0x50 ; 80 - 3e37c: 99 f0 breq .+38 ; 0x3e3a4 - //* Issue 544: stk500v2 bootloader doesn't support reading fuses - //* I cant find the docs that say what these are supposed to be but this was figured out by trial and error - // answerByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - // answerByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - // answerByte = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); - if (msgBuffer[4] == 0x50) - 3e37e: 90 35 cpi r25, 0x50 ; 80 - 3e380: 21 f4 brne .+8 ; 0x3e38a - { - answerByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - 3e382: 89 e0 ldi r24, 0x09 ; 9 - 3e384: e0 e0 ldi r30, 0x00 ; 0 - 3e386: f0 e0 ldi r31, 0x00 ; 0 - 3e388: 05 c0 rjmp .+10 ; 0x3e394 - } - else if (msgBuffer[4] == 0x58) - 3e38a: 98 35 cpi r25, 0x58 ; 88 - 3e38c: 59 f4 brne .+22 ; 0x3e3a4 - { - answerByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - 3e38e: e3 e0 ldi r30, 0x03 ; 3 - 3e390: f0 e0 ldi r31, 0x00 ; 0 - 3e392: 89 e0 ldi r24, 0x09 ; 9 - 3e394: 80 93 57 00 sts 0x0057, r24 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e398: 84 91 lpm r24, Z - 3e39a: 05 c0 rjmp .+10 ; 0x3e3a6 - { - unsigned char signatureIndex = msgBuffer[6]; - - if ( signatureIndex == 0 ) - { - answerByte = (SIGNATURE_BYTES >> 16) & 0x000000FF; - 3e39c: 8e e1 ldi r24, 0x1E ; 30 - 3e39e: 03 c0 rjmp .+6 ; 0x3e3a6 - { - answerByte = (SIGNATURE_BYTES >> 8) & 0x000000FF; - } - else - { - answerByte = SIGNATURE_BYTES & 0x000000FF; - 3e3a0: 81 e0 ldi r24, 0x01 ; 1 - 3e3a2: 01 c0 rjmp .+2 ; 0x3e3a6 - answerByte = 0; - } - } - else - { - answerByte = 0; // for all others command are not implemented, return dummy value for AVRDUDE happy - 3e3a4: 80 e0 ldi r24, 0x00 ; 0 - } - if ( !flag ) - { - msgLength = 7; - msgBuffer[1] = STATUS_CMD_OK; - 3e3a6: 1a 82 std Y+2, r1 ; 0x02 - msgBuffer[2] = 0; - 3e3a8: 1b 82 std Y+3, r1 ; 0x03 - msgBuffer[3] = msgBuffer[4]; - 3e3aa: 9c 83 std Y+4, r25 ; 0x04 - msgBuffer[4] = 0; - 3e3ac: 1d 82 std Y+5, r1 ; 0x05 - msgBuffer[5] = answerByte; - 3e3ae: 8e 83 std Y+6, r24 ; 0x06 - msgBuffer[6] = STATUS_CMD_OK; - 3e3b0: 1f 82 std Y+7, r1 ; 0x07 - 3e3b2: c1 2c mov r12, r1 - { - answerByte = 0; // for all others command are not implemented, return dummy value for AVRDUDE happy - } - if ( !flag ) - { - msgLength = 7; - 3e3b4: 07 e0 ldi r16, 0x07 ; 7 - 3e3b6: 10 e0 ldi r17, 0x00 ; 0 - 3e3b8: 46 c1 rjmp .+652 ; 0x3e646 - } - break; - #endif - case CMD_SIGN_ON: - msgLength = 11; - msgBuffer[1] = STATUS_CMD_OK; - 3e3ba: 1a 82 std Y+2, r1 ; 0x02 - msgBuffer[2] = 8; - 3e3bc: 88 e0 ldi r24, 0x08 ; 8 - 3e3be: 8b 83 std Y+3, r24 ; 0x03 - msgBuffer[3] = 'A'; - 3e3c0: 81 e4 ldi r24, 0x41 ; 65 - 3e3c2: 8c 83 std Y+4, r24 ; 0x04 - msgBuffer[4] = 'V'; - 3e3c4: 86 e5 ldi r24, 0x56 ; 86 - 3e3c6: 8d 83 std Y+5, r24 ; 0x05 - msgBuffer[5] = 'R'; - 3e3c8: 82 e5 ldi r24, 0x52 ; 82 - 3e3ca: 8e 83 std Y+6, r24 ; 0x06 - msgBuffer[6] = 'I'; - 3e3cc: 89 e4 ldi r24, 0x49 ; 73 - 3e3ce: 8f 83 std Y+7, r24 ; 0x07 - msgBuffer[7] = 'S'; - 3e3d0: 83 e5 ldi r24, 0x53 ; 83 - 3e3d2: 88 87 std Y+8, r24 ; 0x08 - msgBuffer[8] = 'P'; - 3e3d4: 80 e5 ldi r24, 0x50 ; 80 - 3e3d6: 89 87 std Y+9, r24 ; 0x09 - msgBuffer[9] = '_'; - 3e3d8: 8f e5 ldi r24, 0x5F ; 95 - 3e3da: 8a 87 std Y+10, r24 ; 0x0a - msgBuffer[10] = '2'; - 3e3dc: 82 e3 ldi r24, 0x32 ; 50 - 3e3de: 8b 87 std Y+11, r24 ; 0x0b - break; - 3e3e0: c1 2c mov r12, r1 - } - } - break; - #endif - case CMD_SIGN_ON: - msgLength = 11; - 3e3e2: 0b e0 ldi r16, 0x0B ; 11 - 3e3e4: 10 e0 ldi r17, 0x00 ; 0 - msgBuffer[6] = 'I'; - msgBuffer[7] = 'S'; - msgBuffer[8] = 'P'; - msgBuffer[9] = '_'; - msgBuffer[10] = '2'; - break; - 3e3e6: 2f c1 rjmp .+606 ; 0x3e646 - 3e3e8: ea 81 ldd r30, Y+2 ; 0x02 - 3e3ea: e0 59 subi r30, 0x90 ; 144 - 3e3ec: e3 30 cpi r30, 0x03 ; 3 - 3e3ee: 28 f4 brcc .+10 ; 0x3e3fa - 3e3f0: f0 e0 ldi r31, 0x00 ; 0 - 3e3f2: e0 50 subi r30, 0x00 ; 0 - 3e3f4: fe 4f sbci r31, 0xFE ; 254 - 3e3f6: 80 81 ld r24, Z - 3e3f8: 01 c0 rjmp .+2 ; 0x3e3fc - - case CMD_GET_PARAMETER: - { - unsigned char value; - - switch(msgBuffer[1]) - 3e3fa: 80 e0 ldi r24, 0x00 ; 0 - default: - value = 0; - break; - } - msgLength = 3; - msgBuffer[1] = STATUS_CMD_OK; - 3e3fc: 1a 82 std Y+2, r1 ; 0x02 - msgBuffer[2] = value; - 3e3fe: 8b 83 std Y+3, r24 ; 0x03 - } - break; - 3e400: c1 2c mov r12, r1 - break; - default: - value = 0; - break; - } - msgLength = 3; - 3e402: 03 e0 ldi r16, 0x03 ; 3 - 3e404: 10 e0 ldi r17, 0x00 ; 0 - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = value; - } - break; - 3e406: 1f c1 rjmp .+574 ; 0x3e646 - - case CMD_LEAVE_PROGMODE_ISP: - isLeave = 1; - 3e408: cc 24 eor r12, r12 - 3e40a: c3 94 inc r12 - //* fall thru - - case CMD_SET_PARAMETER: - case CMD_ENTER_PROGMODE_ISP: - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - 3e40c: 1a 82 std Y+2, r1 ; 0x02 - 3e40e: 19 c1 rjmp .+562 ; 0x3e642 - break; - - case CMD_READ_SIGNATURE_ISP: - { - unsigned char signatureIndex = msgBuffer[4]; - 3e410: 8d 81 ldd r24, Y+5 ; 0x05 - unsigned char signature; - - if ( signatureIndex == 0 ) - 3e412: 88 23 and r24, r24 - 3e414: 21 f0 breq .+8 ; 0x3e41e - signature = (SIGNATURE_BYTES >>16) & 0x000000FF; - else if ( signatureIndex == 1 ) - 3e416: 81 30 cpi r24, 0x01 ; 1 - 3e418: 21 f4 brne .+8 ; 0x3e422 - signature = (SIGNATURE_BYTES >> 8) & 0x000000FF; - 3e41a: 88 e9 ldi r24, 0x98 ; 152 - 3e41c: 24 c0 rjmp .+72 ; 0x3e466 - { - unsigned char signatureIndex = msgBuffer[4]; - unsigned char signature; - - if ( signatureIndex == 0 ) - signature = (SIGNATURE_BYTES >>16) & 0x000000FF; - 3e41e: 8e e1 ldi r24, 0x1E ; 30 - 3e420: 22 c0 rjmp .+68 ; 0x3e466 - else if ( signatureIndex == 1 ) - signature = (SIGNATURE_BYTES >> 8) & 0x000000FF; - else - signature = SIGNATURE_BYTES & 0x000000FF; - 3e422: 81 e0 ldi r24, 0x01 ; 1 - 3e424: 20 c0 rjmp .+64 ; 0x3e466 - } - break; - - case CMD_READ_LOCK_ISP: - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - 3e426: 1a 82 std Y+2, r1 ; 0x02 - msgBuffer[2] = boot_lock_fuse_bits_get( GET_LOCK_BITS ); - 3e428: e1 e0 ldi r30, 0x01 ; 1 - 3e42a: f0 e0 ldi r31, 0x00 ; 0 - 3e42c: 89 e0 ldi r24, 0x09 ; 9 - 3e42e: 80 93 57 00 sts 0x0057, r24 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e432: 84 91 lpm r24, Z - 3e434: 8b 83 std Y+3, r24 ; 0x03 - msgBuffer[3] = STATUS_CMD_OK; - 3e436: 1c 82 std Y+4, r1 ; 0x04 - break; - 3e438: c1 2c mov r12, r1 - msgBuffer[3] = STATUS_CMD_OK; - } - break; - - case CMD_READ_LOCK_ISP: - msgLength = 4; - 3e43a: 04 e0 ldi r16, 0x04 ; 4 - 3e43c: 10 e0 ldi r17, 0x00 ; 0 - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = boot_lock_fuse_bits_get( GET_LOCK_BITS ); - msgBuffer[3] = STATUS_CMD_OK; - break; - 3e43e: 03 c1 rjmp .+518 ; 0x3e646 - - case CMD_READ_FUSE_ISP: - { - unsigned char fuseBits; - - if ( msgBuffer[2] == 0x50 ) - 3e440: 8b 81 ldd r24, Y+3 ; 0x03 - 3e442: 80 35 cpi r24, 0x50 ; 80 - 3e444: 51 f4 brne .+20 ; 0x3e45a - { - if ( msgBuffer[3] == 0x08 ) - 3e446: 8c 81 ldd r24, Y+4 ; 0x04 - 3e448: 88 30 cpi r24, 0x08 ; 8 - 3e44a: 19 f4 brne .+6 ; 0x3e452 - fuseBits = boot_lock_fuse_bits_get( GET_EXTENDED_FUSE_BITS ); - 3e44c: e2 e0 ldi r30, 0x02 ; 2 - 3e44e: f0 e0 ldi r31, 0x00 ; 0 - 3e450: 06 c0 rjmp .+12 ; 0x3e45e - else - fuseBits = boot_lock_fuse_bits_get( GET_LOW_FUSE_BITS ); - 3e452: 89 e0 ldi r24, 0x09 ; 9 - 3e454: e0 e0 ldi r30, 0x00 ; 0 - 3e456: f0 e0 ldi r31, 0x00 ; 0 - 3e458: 03 c0 rjmp .+6 ; 0x3e460 - } - else - { - fuseBits = boot_lock_fuse_bits_get( GET_HIGH_FUSE_BITS ); - 3e45a: e3 e0 ldi r30, 0x03 ; 3 - 3e45c: f0 e0 ldi r31, 0x00 ; 0 - 3e45e: 89 e0 ldi r24, 0x09 ; 9 - 3e460: 80 93 57 00 sts 0x0057, r24 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e464: 84 91 lpm r24, Z - } - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - 3e466: 1a 82 std Y+2, r1 ; 0x02 - 3e468: e5 cf rjmp .-54 ; 0x3e434 - #endif - case CMD_CHIP_ERASE_ISP: - eraseAddress = 0; - msgLength = 2; - // msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[1] = STATUS_CMD_FAILED; //* isue 543, return FAILED instead of OK - 3e46a: 80 ec ldi r24, 0xC0 ; 192 - 3e46c: 8a 83 std Y+2, r24 ; 0x02 - break; - 3e46e: c1 2c mov r12, r1 - } - break; - #endif - case CMD_CHIP_ERASE_ISP: - eraseAddress = 0; - msgLength = 2; - 3e470: 02 e0 ldi r16, 0x02 ; 2 - 3e472: 10 e0 ldi r17, 0x00 ; 0 - msgBuffer[2] = STATUS_CMD_OK; - } - break; - #endif - case CMD_CHIP_ERASE_ISP: - eraseAddress = 0; - 3e474: 81 2c mov r8, r1 - 3e476: 91 2c mov r9, r1 - 3e478: 54 01 movw r10, r8 - msgLength = 2; - // msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[1] = STATUS_CMD_FAILED; //* isue 543, return FAILED instead of OK - break; - 3e47a: e5 c0 rjmp .+458 ; 0x3e646 - 3e47c: 6a 81 ldd r22, Y+2 ; 0x02 - 3e47e: 7b 81 ldd r23, Y+3 ; 0x03 - 3e480: 8c 81 ldd r24, Y+4 ; 0x04 - 3e482: 9d 81 ldd r25, Y+5 ; 0x05 - 3e484: 63 d1 rcall .+710 ; 0x3e74c <__bswapsi2> - - case CMD_LOAD_ADDRESS: - #if defined(RAMPZ) - address = ( ((address_t)(msgBuffer[1])<<24)|((address_t)(msgBuffer[2])<<16)|((address_t)(msgBuffer[3])<<8)|(msgBuffer[4]) )<<1; - 3e486: 2b 01 movw r4, r22 - 3e488: 3c 01 movw r6, r24 - 3e48a: 44 0c add r4, r4 - 3e48c: 55 1c adc r5, r5 - 3e48e: 66 1c adc r6, r6 - 3e490: 77 1c adc r7, r7 - #else - address = ( ((msgBuffer[3])<<8)|(msgBuffer[4]) )<<1; //convert word to byte address - #endif - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - 3e492: 1a 82 std Y+2, r1 ; 0x02 - 3e494: d5 c0 rjmp .+426 ; 0x3e640 - 3e496: ea 80 ldd r14, Y+2 ; 0x02 - 3e498: fb 80 ldd r15, Y+3 ; 0x03 - 3e49a: fe 24 eor r15, r14 - 3e49c: ef 24 eor r14, r15 - 3e49e: fe 24 eor r15, r14 - unsigned int data; - unsigned char highByte, lowByte; - address_t tempaddress = address; - - - if ( msgBuffer[0] == CMD_PROGRAM_FLASH_ISP ) - 3e4a0: 23 31 cpi r18, 0x13 ; 19 - 3e4a2: 09 f0 breq .+2 ; 0x3e4a6 - 3e4a4: 3c c0 rjmp .+120 ; 0x3e51e - { - // erase only main section (bootloader protection) - while (eraseAddress < APP_END ) - 3e4a6: 81 14 cp r8, r1 - 3e4a8: 40 ec ldi r20, 0xC0 ; 192 - 3e4aa: 94 06 cpc r9, r20 - 3e4ac: 43 e0 ldi r20, 0x03 ; 3 - 3e4ae: a4 06 cpc r10, r20 - 3e4b0: b1 04 cpc r11, r1 - 3e4b2: 78 f4 brcc .+30 ; 0x3e4d2 - { - boot_page_erase(eraseAddress); // Perform page erase - 3e4b4: 23 e0 ldi r18, 0x03 ; 3 - 3e4b6: f4 01 movw r30, r8 - 3e4b8: a0 92 5b 00 sts 0x005B, r10 ; 0x80005b <__TEXT_REGION_LENGTH__+0x7c005b> - 3e4bc: 20 93 57 00 sts 0x0057, r18 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e4c0: e8 95 spm - boot_spm_busy_wait(); // Wait until the memory is erased. - 3e4c2: 07 b6 in r0, 0x37 ; 55 - 3e4c4: 00 fc sbrc r0, 0 - 3e4c6: fd cf rjmp .-6 ; 0x3e4c2 - eraseAddress += SPM_PAGESIZE; // point to next page to be erase - 3e4c8: 3f ef ldi r19, 0xFF ; 255 - 3e4ca: 93 1a sub r9, r19 - 3e4cc: a3 0a sbc r10, r19 - 3e4ce: b3 0a sbc r11, r19 - 3e4d0: ea cf rjmp .-44 ; 0x3e4a6 - 3e4d2: 93 01 movw r18, r6 - 3e4d4: 82 01 movw r16, r4 - 3e4d6: de 01 movw r26, r28 - 3e4d8: 1b 96 adiw r26, 0x0b ; 11 - 3e4da: 8d 91 ld r24, X+ - 3e4dc: 9d 91 ld r25, X+ - do { - lowByte = *p++; - highByte = *p++; - - data = (highByte << 8) | lowByte; - boot_page_fill(address,data); - 3e4de: 41 e0 ldi r20, 0x01 ; 1 - 3e4e0: 0c 01 movw r0, r24 - 3e4e2: f8 01 movw r30, r16 - 3e4e4: 20 93 5b 00 sts 0x005B, r18 ; 0x80005b <__TEXT_REGION_LENGTH__+0x7c005b> - 3e4e8: 40 93 57 00 sts 0x0057, r20 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e4ec: e8 95 spm - 3e4ee: 11 24 eor r1, r1 - - address = address + 2; // Select next word in memory - 3e4f0: 0e 5f subi r16, 0xFE ; 254 - 3e4f2: 1f 4f sbci r17, 0xFF ; 255 - 3e4f4: 2f 4f sbci r18, 0xFF ; 255 - 3e4f6: 3f 4f sbci r19, 0xFF ; 255 - size -= 2; // Reduce number of bytes to write by two - 3e4f8: 82 e0 ldi r24, 0x02 ; 2 - 3e4fa: e8 1a sub r14, r24 - 3e4fc: f1 08 sbc r15, r1 - } while (size); // Loop until all bytes written - 3e4fe: 69 f7 brne .-38 ; 0x3e4da - - boot_page_write(tempaddress); - 3e500: 95 e0 ldi r25, 0x05 ; 5 - 3e502: f2 01 movw r30, r4 - 3e504: 60 92 5b 00 sts 0x005B, r6 ; 0x80005b <__TEXT_REGION_LENGTH__+0x7c005b> - 3e508: 90 93 57 00 sts 0x0057, r25 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e50c: e8 95 spm - boot_spm_busy_wait(); - 3e50e: 07 b6 in r0, 0x37 ; 55 - 3e510: 00 fc sbrc r0, 0 - 3e512: fd cf rjmp .-6 ; 0x3e50e - boot_rww_enable(); // Re-enable the RWW section - 3e514: 81 e1 ldi r24, 0x11 ; 17 - 3e516: 80 93 57 00 sts 0x0057, r24 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e51a: e8 95 spm - 3e51c: 32 c0 rjmp .+100 ; 0x3e582 - } - else - { - //* issue 543, this should work, It has not been tested. - uint16_t ii = address >> 1; - 3e51e: d3 01 movw r26, r6 - 3e520: c2 01 movw r24, r4 - 3e522: b6 95 lsr r27 - 3e524: a7 95 ror r26 - 3e526: 97 95 ror r25 - 3e528: 87 95 ror r24 - 3e52a: 6c 01 movw r12, r24 - 3e52c: fe 01 movw r30, r28 - 3e52e: 3b 96 adiw r30, 0x0b ; 11 - 3e530: c1 5e subi r28, 0xE1 ; 225 - 3e532: de 4f sbci r29, 0xFE ; 254 - 3e534: f9 83 std Y+1, r31 ; 0x01 - 3e536: e8 83 st Y, r30 - 3e538: cf 51 subi r28, 0x1F ; 31 - 3e53a: d1 40 sbci r29, 0x01 ; 1 - /* write EEPROM */ - while (size) { - 3e53c: 00 e0 ldi r16, 0x00 ; 0 - 3e53e: 10 e0 ldi r17, 0x00 ; 0 - 3e540: 0e 15 cp r16, r14 - 3e542: 1f 05 cpc r17, r15 - 3e544: a1 f0 breq .+40 ; 0x3e56e - eeprom_write_byte((uint8_t*)ii, *p++); - 3e546: c1 5e subi r28, 0xE1 ; 225 - 3e548: de 4f sbci r29, 0xFE ; 254 - 3e54a: e8 81 ld r30, Y - 3e54c: f9 81 ldd r31, Y+1 ; 0x01 - 3e54e: cf 51 subi r28, 0x1F ; 31 - 3e550: d1 40 sbci r29, 0x01 ; 1 - 3e552: 61 91 ld r22, Z+ - 3e554: c1 5e subi r28, 0xE1 ; 225 - 3e556: de 4f sbci r29, 0xFE ; 254 - 3e558: f9 83 std Y+1, r31 ; 0x01 - 3e55a: e8 83 st Y, r30 - 3e55c: cf 51 subi r28, 0x1F ; 31 - 3e55e: d1 40 sbci r29, 0x01 ; 1 - 3e560: c8 01 movw r24, r16 - 3e562: 8c 0d add r24, r12 - 3e564: 9d 1d adc r25, r13 - 3e566: f9 d0 rcall .+498 ; 0x3e75a - 3e568: 0f 5f subi r16, 0xFF ; 255 - 3e56a: 1f 4f sbci r17, 0xFF ; 255 - 3e56c: e9 cf rjmp .-46 ; 0x3e540 - 3e56e: 20 e0 ldi r18, 0x00 ; 0 - 3e570: 30 e0 ldi r19, 0x00 ; 0 - 3e572: 00 0f add r16, r16 - 3e574: 11 1f adc r17, r17 - 3e576: 22 1f adc r18, r18 - 3e578: 33 1f adc r19, r19 - 3e57a: 04 0d add r16, r4 - 3e57c: 15 1d adc r17, r5 - 3e57e: 26 1d adc r18, r6 - 3e580: 37 1d adc r19, r7 - ii++; - size--; - } - } - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - 3e582: 1a 82 std Y+2, r1 ; 0x02 - } - break; - 3e584: 28 01 movw r4, r16 - 3e586: 39 01 movw r6, r18 - 3e588: 5b c0 rjmp .+182 ; 0x3e640 - 3e58a: 8a 81 ldd r24, Y+2 ; 0x02 - 3e58c: 9b 81 ldd r25, Y+3 ; 0x03 - 3e58e: 98 27 eor r25, r24 - 3e590: 89 27 eor r24, r25 - 3e592: 98 27 eor r25, r24 - case CMD_READ_FLASH_ISP: - case CMD_READ_EEPROM_ISP: - { - unsigned int size = ((msgBuffer[1])<<8) | msgBuffer[2]; - unsigned char *p = msgBuffer+1; - msgLength = size+3; - 3e594: 8c 01 movw r16, r24 - 3e596: 0d 5f subi r16, 0xFD ; 253 - 3e598: 1f 4f sbci r17, 0xFF ; 255 - - *p++ = STATUS_CMD_OK; - 3e59a: 1a 82 std Y+2, r1 ; 0x02 - if (msgBuffer[0] == CMD_READ_FLASH_ISP ) - 3e59c: 24 31 cpi r18, 0x14 ; 20 - 3e59e: 01 f5 brne .+64 ; 0x3e5e0 - { - //Read protection - if (eraseAddress < APP_END) { - 3e5a0: 81 14 cp r8, r1 - 3e5a2: f0 ec ldi r31, 0xC0 ; 192 - 3e5a4: 9f 06 cpc r9, r31 - 3e5a6: f3 e0 ldi r31, 0x03 ; 3 - 3e5a8: af 06 cpc r10, r31 - 3e5aa: b1 04 cpc r11, r1 - 3e5ac: 08 f4 brcc .+2 ; 0x3e5b0 - 3e5ae: 46 c0 rjmp .+140 ; 0x3e63c - 3e5b0: de 01 movw r26, r28 - 3e5b2: 11 96 adiw r26, 0x01 ; 1 - - // Read FLASH - do { - //#if defined(RAMPZ) - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(address); - 3e5b4: 6b be out 0x3b, r6 ; 59 - 3e5b6: f2 01 movw r30, r4 - 3e5b8: 27 91 elpm r18, Z+ - 3e5ba: 36 91 elpm r19, Z - #else - data = pgm_read_word_near(address); - #endif - *p++ = (unsigned char)data; //LSB - 3e5bc: 12 96 adiw r26, 0x02 ; 2 - 3e5be: 2c 93 st X, r18 - 3e5c0: 12 97 sbiw r26, 0x02 ; 2 - 3e5c2: fd 01 movw r30, r26 - 3e5c4: 34 96 adiw r30, 0x04 ; 4 - *p++ = (unsigned char)(data >> 8); //MSB - 3e5c6: 13 96 adiw r26, 0x03 ; 3 - 3e5c8: 3c 93 st X, r19 - 3e5ca: 13 97 sbiw r26, 0x03 ; 3 - address += 2; // Select next word in memory - 3e5cc: 22 e0 ldi r18, 0x02 ; 2 - 3e5ce: 42 0e add r4, r18 - 3e5d0: 51 1c adc r5, r1 - 3e5d2: 61 1c adc r6, r1 - 3e5d4: 71 1c adc r7, r1 - size -= 2; - 3e5d6: 02 97 sbiw r24, 0x02 ; 2 - 3e5d8: 12 96 adiw r26, 0x02 ; 2 - }while (size); - 3e5da: 00 97 sbiw r24, 0x00 ; 0 - 3e5dc: 59 f7 brne .-42 ; 0x3e5b4 - 3e5de: 2b c0 rjmp .+86 ; 0x3e636 - 3e5e0: fe 01 movw r30, r28 - 3e5e2: 31 96 adiw r30, 0x01 ; 1 - 3e5e4: 9f 01 movw r18, r30 - 3e5e6: 28 0f add r18, r24 - 3e5e8: 39 1f adc r19, r25 - unsigned int size = ((msgBuffer[1])<<8) | msgBuffer[2]; - unsigned char *p = msgBuffer+1; - msgLength = size+3; - - *p++ = STATUS_CMD_OK; - if (msgBuffer[0] == CMD_READ_FLASH_ISP ) - 3e5ea: b3 01 movw r22, r6 - 3e5ec: a2 01 movw r20, r4 - } - else - { - /* Read EEPROM */ - do { - EEARL = address; // Setup EEPROM address - 3e5ee: 41 bd out 0x21, r20 ; 33 - EEARH = ((address >> 8)); - 3e5f0: c5 2e mov r12, r21 - 3e5f2: d6 2e mov r13, r22 - 3e5f4: e7 2e mov r14, r23 - 3e5f6: ff 24 eor r15, r15 - 3e5f8: c2 bc out 0x22, r12 ; 34 - address++; // Select next EEPROM byte - 3e5fa: 4f 5f subi r20, 0xFF ; 255 - 3e5fc: 5f 4f sbci r21, 0xFF ; 255 - 3e5fe: 6f 4f sbci r22, 0xFF ; 255 - 3e600: 7f 4f sbci r23, 0xFF ; 255 - EECR |= (1< - 3e610: ac 01 movw r20, r24 - 3e612: 41 50 subi r20, 0x01 ; 1 - 3e614: 51 09 sbc r21, r1 - 3e616: 60 e0 ldi r22, 0x00 ; 0 - 3e618: 70 e0 ldi r23, 0x00 ; 0 - 3e61a: 4f 5f subi r20, 0xFF ; 255 - 3e61c: 5f 4f sbci r21, 0xFF ; 255 - 3e61e: 6f 4f sbci r22, 0xFF ; 255 - 3e620: 7f 4f sbci r23, 0xFF ; 255 - 3e622: 44 0e add r4, r20 - 3e624: 55 1e adc r5, r21 - 3e626: 66 1e adc r6, r22 - 3e628: 77 1e adc r7, r23 - 3e62a: e3 e0 ldi r30, 0x03 ; 3 - 3e62c: f0 e0 ldi r31, 0x00 ; 0 - 3e62e: ec 0f add r30, r28 - 3e630: fd 1f adc r31, r29 - 3e632: e8 0f add r30, r24 - 3e634: f9 1f adc r31, r25 - } - *p++ = STATUS_CMD_OK; - 3e636: 10 82 st Z, r1 - } - break; - 3e638: c1 2c mov r12, r1 - 3e63a: 05 c0 rjmp .+10 ; 0x3e646 - - default: - msgLength = 2; - msgBuffer[1] = STATUS_CMD_FAILED; - 3e63c: 80 ec ldi r24, 0xC0 ; 192 - break; - 3e63e: 8a 83 std Y+2, r24 ; 0x02 - *p++ = STATUS_CMD_OK; - } - break; - - default: - msgLength = 2; - 3e640: c1 2c mov r12, r1 - 3e642: 02 e0 ldi r16, 0x02 ; 2 - } - - /* - * Now send answer message back - */ - sendchar(MESSAGE_START); - 3e644: 10 e0 ldi r17, 0x00 ; 0 - 3e646: 8b e1 ldi r24, 0x1B ; 27 - checksum = MESSAGE_START^0; - - sendchar(seqNum); - 3e648: 98 dd rcall .-1232 ; 0x3e17a - 3e64a: c2 5e subi r28, 0xE2 ; 226 - 3e64c: de 4f sbci r29, 0xFE ; 254 - 3e64e: 88 81 ld r24, Y - 3e650: ce 51 subi r28, 0x1E ; 30 - checksum ^= seqNum; - - c = ((msgLength>>8)&0xFF); - sendchar(c); - 3e652: d1 40 sbci r29, 0x01 ; 1 - 3e654: 92 dd rcall .-1244 ; 0x3e17a - 3e656: 81 2f mov r24, r17 - checksum ^= c; - - c = msgLength&0x00FF; - sendchar(c); - 3e658: 90 dd rcall .-1248 ; 0x3e17a - 3e65a: 80 2f mov r24, r16 - 3e65c: 8e dd rcall .-1252 ; 0x3e17a - 3e65e: 85 e1 ldi r24, 0x15 ; 21 - 3e660: c2 5e subi r28, 0xE2 ; 226 - 3e662: de 4f sbci r29, 0xFE ; 254 - 3e664: d8 80 ld r13, Y - 3e666: ce 51 subi r28, 0x1E ; 30 - 3e668: d1 40 sbci r29, 0x01 ; 1 - 3e66a: d8 26 eor r13, r24 - checksum ^= c; - - sendchar(TOKEN); - 3e66c: d0 26 eor r13, r16 - 3e66e: 8e e0 ldi r24, 0x0E ; 14 - 3e670: 84 dd rcall .-1272 ; 0x3e17a - checksum ^= TOKEN; - 3e672: d1 26 eor r13, r17 - 3e674: ce 01 movw r24, r28 - 3e676: 01 96 adiw r24, 0x01 ; 1 - 3e678: 7c 01 movw r14, r24 - 3e67a: 08 0f add r16, r24 - 3e67c: 19 1f adc r17, r25 - - p = msgBuffer; - while ( msgLength ) - 3e67e: 0e 15 cp r16, r14 - 3e680: 1f 05 cpc r17, r15 - { - c = *p++; - 3e682: 89 f0 breq .+34 ; 0x3e6a6 - 3e684: f7 01 movw r30, r14 - 3e686: 21 91 ld r18, Z+ - 3e688: 7f 01 movw r14, r30 - 3e68a: c1 5e subi r28, 0xE1 ; 225 - 3e68c: de 4f sbci r29, 0xFE ; 254 - 3e68e: 28 83 st Y, r18 - 3e690: cf 51 subi r28, 0x1F ; 31 - sendchar(c); - 3e692: d1 40 sbci r29, 0x01 ; 1 - 3e694: 82 2f mov r24, r18 - checksum ^=c; - 3e696: 71 dd rcall .-1310 ; 0x3e17a - 3e698: c1 5e subi r28, 0xE1 ; 225 - 3e69a: de 4f sbci r29, 0xFE ; 254 - 3e69c: 38 81 ld r19, Y - 3e69e: cf 51 subi r28, 0x1F ; 31 - 3e6a0: d1 40 sbci r29, 0x01 ; 1 - 3e6a2: d3 26 eor r13, r19 - msgLength--; - } - sendchar(checksum); - 3e6a4: ec cf rjmp .-40 ; 0x3e67e - 3e6a6: 8d 2d mov r24, r13 - 3e6a8: 68 dd rcall .-1328 ; 0x3e17a - seqNum++; - 3e6aa: c2 5e subi r28, 0xE2 ; 226 - 3e6ac: de 4f sbci r29, 0xFE ; 254 - 3e6ae: 48 81 ld r20, Y - 3e6b0: ce 51 subi r28, 0x1E ; 30 - 3e6b2: d1 40 sbci r29, 0x01 ; 1 - 3e6b4: 4f 5f subi r20, 0xFF ; 255 - 3e6b6: c2 5e subi r28, 0xE2 ; 226 - 3e6b8: de 4f sbci r29, 0xFE ; 254 - 3e6ba: 48 83 st Y, r20 - 3e6bc: ce 51 subi r28, 0x1E ; 30 - 3e6be: d1 40 sbci r29, 0x01 ; 1 - 3e6c0: 00 e0 ldi r16, 0x00 ; 0 - 3e6c2: 10 e0 ldi r17, 0x00 ; 0 - - - if (boot_state==1) - { - //* main loop - while (!isLeave) - 3e6c4: cc 20 and r12, r12 - 3e6c6: 09 f4 brne .+2 ; 0x3e6ca - 3e6c8: dc cd rjmp .-1096 ; 0x3e282 -// PROGLED_PORT |= (1< - 3e6d0: 8d 7f andi r24, 0xFD ; 253 - 3e6d2: 80 93 c0 00 sts 0x00C0, r24 ; 0x8000c0 <__TEXT_REGION_LENGTH__+0x7c00c0> - boot_rww_enable(); // enable application section - 3e6d6: 81 e1 ldi r24, 0x11 ; 17 - 3e6d8: 80 93 57 00 sts 0x0057, r24 ; 0x800057 <__TEXT_REGION_LENGTH__+0x7c0057> - 3e6dc: e8 95 spm - - - asm volatile( - 3e6de: ee 27 eor r30, r30 - 3e6e0: ff 27 eor r31, r31 - 3e6e2: 09 94 ijmp - 3e6e4: ff cf rjmp .-2 ; 0x3e6e4 - { - case ST_START: - if ( c == MESSAGE_START ) - { - msgParseState = ST_GET_SEQ_NUM; - checksum = MESSAGE_START^0; - 3e6e6: 8b e1 ldi r24, 0x1B ; 27 - 3e6e8: d8 2e mov r13, r24 - switch (msgParseState) - { - case ST_START: - if ( c == MESSAGE_START ) - { - msgParseState = ST_GET_SEQ_NUM; - 3e6ea: 21 e0 ldi r18, 0x01 ; 1 - 3e6ec: f7 cd rjmp .-1042 ; 0x3e2dc - checksum ^= c; - ii = 0; - } - else - { - msgParseState = ST_START; - 3e6ee: 20 e0 ldi r18, 0x00 ; 0 - 3e6f0: f5 cd rjmp .-1046 ; 0x3e2dc - 3e6f2: 1a 01 movw r2, r20 - case ST_GET_DATA: - msgBuffer[ii++] = c; - checksum ^= c; - if (ii == msgLength ) - { - msgParseState = ST_GET_CHECK; - 3e6f4: 26 e0 ldi r18, 0x06 ; 6 - 3e6f6: f2 cd rjmp .-1052 ; 0x3e2dc - -0003e6f8 <__udivmodsi4>: - 3e6f8: a1 e2 ldi r26, 0x21 ; 33 - 3e6fa: 1a 2e mov r1, r26 - 3e6fc: aa 1b sub r26, r26 - 3e6fe: bb 1b sub r27, r27 - 3e700: fd 01 movw r30, r26 - 3e702: 0d c0 rjmp .+26 ; 0x3e71e <__udivmodsi4_ep> - -0003e704 <__udivmodsi4_loop>: - 3e704: aa 1f adc r26, r26 - 3e706: bb 1f adc r27, r27 - 3e708: ee 1f adc r30, r30 - 3e70a: ff 1f adc r31, r31 - 3e70c: a2 17 cp r26, r18 - 3e70e: b3 07 cpc r27, r19 - 3e710: e4 07 cpc r30, r20 - 3e712: f5 07 cpc r31, r21 - 3e714: 20 f0 brcs .+8 ; 0x3e71e <__udivmodsi4_ep> - 3e716: a2 1b sub r26, r18 - 3e718: b3 0b sbc r27, r19 - 3e71a: e4 0b sbc r30, r20 - 3e71c: f5 0b sbc r31, r21 - -0003e71e <__udivmodsi4_ep>: - 3e71e: 66 1f adc r22, r22 - 3e720: 77 1f adc r23, r23 - 3e722: 88 1f adc r24, r24 - 3e724: 99 1f adc r25, r25 - 3e726: 1a 94 dec r1 - 3e728: 69 f7 brne .-38 ; 0x3e704 <__udivmodsi4_loop> - 3e72a: 60 95 com r22 - 3e72c: 70 95 com r23 - 3e72e: 80 95 com r24 - 3e730: 90 95 com r25 - 3e732: 9b 01 movw r18, r22 - 3e734: ac 01 movw r20, r24 - 3e736: bd 01 movw r22, r26 - 3e738: cf 01 movw r24, r30 - 3e73a: 08 95 ret - -0003e73c <__tablejump2__>: - 3e73c: ee 0f add r30, r30 - 3e73e: ff 1f adc r31, r31 - 3e740: 88 1f adc r24, r24 - 3e742: 8b bf out 0x3b, r24 ; 59 - 3e744: 07 90 elpm r0, Z+ - 3e746: f6 91 elpm r31, Z - 3e748: e0 2d mov r30, r0 - 3e74a: 19 94 eijmp - -0003e74c <__bswapsi2>: - 3e74c: 69 27 eor r22, r25 - 3e74e: 96 27 eor r25, r22 - 3e750: 69 27 eor r22, r25 - 3e752: 78 27 eor r23, r24 - 3e754: 87 27 eor r24, r23 - 3e756: 78 27 eor r23, r24 - 3e758: 08 95 ret - -0003e75a : - 3e75a: 26 2f mov r18, r22 - -0003e75c : - 3e75c: f9 99 sbic 0x1f, 1 ; 31 - 3e75e: fe cf rjmp .-4 ; 0x3e75c - 3e760: 1f ba out 0x1f, r1 ; 31 - 3e762: 92 bd out 0x22, r25 ; 34 - 3e764: 81 bd out 0x21, r24 ; 33 - 3e766: 20 bd out 0x20, r18 ; 32 - 3e768: 0f b6 in r0, 0x3f ; 63 - 3e76a: f8 94 cli - 3e76c: fa 9a sbi 0x1f, 2 ; 31 - 3e76e: f9 9a sbi 0x1f, 1 ; 31 - 3e770: 0f be out 0x3f, r0 ; 63 - 3e772: 01 96 adiw r24, 0x01 ; 1 - 3e774: 08 95 ret - -0003e776 <_exit>: - 3e776: f8 94 cli - -0003e778 <__stop_program>: - 3e778: ff cf rjmp .-2 ; 0x3e778 <__stop_program> diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.map b/bootloaders/stk500v2/stk500boot_v2_mega2560.map deleted file mode 100644 index da0265a..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.map +++ /dev/null @@ -1,582 +0,0 @@ -Archive member included to satisfy reference by file (symbol) - -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - stk500boot.o (__udivmodsi4) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o (exit) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - stk500boot.o (__tablejump2__) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - stk500boot.o (__do_copy_data) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - stk500boot.o (__do_clear_bss) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - stk500boot.o (__bswapsi2) -C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - stk500boot.o (eeprom_write_byte) - -Discarded input sections - - .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .text 0x00000000 0x0 stk500boot.o - .data 0x00000000 0x0 stk500boot.o - .bss 0x00000000 0x0 stk500boot.o - .text.delay_ms - 0x00000000 0x1e stk500boot.o - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - -Memory Configuration - -Name Origin Length Attributes -text 0x00000000 0x00040000 xr -data 0x00800200 0x00002000 rw !x -eeprom 0x00810000 0x00001000 rw !x -fuse 0x00820000 0x00000003 rw !x -lock 0x00830000 0x00000400 rw !x -signature 0x00840000 0x00000400 rw !x -user_signatures 0x00850000 0x00000400 rw !x -*default* 0x00000000 0xffffffff - -Linker script and memory map - -Address of section .data set to 0x800200 -LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o -LOAD stk500boot.o -START GROUP -LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr6\libm.a -END GROUP -Address of section .text set to 0x3e000 -START GROUP -LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a -LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr6\libm.a -LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr6\libc.a -LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a -END GROUP - 0x00000000 __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0 - [0x00800200] __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x800200 - [0x00040000] __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x100000 - [0x00002000] __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xfe00 - [0x00001000] __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 - [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 - 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 - 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 - 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 - -.hash - *(.hash) - -.dynsym - *(.dynsym) - -.dynstr - *(.dynstr) - -.gnu.version - *(.gnu.version) - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r - *(.gnu.version_r) - -.rel.init - *(.rel.init) - -.rela.init - *(.rela.init) - -.rel.text - *(.rel.text) - *(.rel.text.*) - *(.rel.gnu.linkonce.t*) - -.rela.text - *(.rela.text) - *(.rela.text.*) - *(.rela.gnu.linkonce.t*) - -.rel.fini - *(.rel.fini) - -.rela.fini - *(.rela.fini) - -.rel.rodata - *(.rel.rodata) - *(.rel.rodata.*) - *(.rel.gnu.linkonce.r*) - -.rela.rodata - *(.rela.rodata) - *(.rela.rodata.*) - *(.rela.gnu.linkonce.r*) - -.rel.data - *(.rel.data) - *(.rel.data.*) - *(.rel.gnu.linkonce.d*) - -.rela.data - *(.rela.data) - *(.rela.data.*) - *(.rela.gnu.linkonce.d*) - -.rel.ctors - *(.rel.ctors) - -.rela.ctors - *(.rela.ctors) - -.rel.dtors - *(.rel.dtors) - -.rela.dtors - *(.rela.dtors) - -.rel.got - *(.rel.got) - -.rela.got - *(.rela.got) - -.rel.bss - *(.rel.bss) - -.rela.bss - *(.rela.bss) - -.rel.plt - *(.rel.plt) - -.rela.plt - *(.rela.plt) - -.text 0x0003e000 0x77a - *(.vectors) - .vectors 0x0003e000 0xe4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - 0x0003e000 __vector_default - 0x0003e000 __vectors - *(.vectors) - *(.progmem.gcc*) - .progmem.gcc_sw_table.main - 0x0003e0e4 0x48 stk500boot.o - 0x0003e12c . = ALIGN (0x2) - 0x0003e12c __trampolines_start = . - *(.trampolines) - .trampolines 0x0003e12c 0x0 linker stubs - *(.trampolines*) - 0x0003e12c __trampolines_end = . - *libprintf_flt.a:*(.progmem.data) - *libc.a:*(.progmem.data) - *(.progmem*) - 0x0003e12c . = ALIGN (0x2) - *(.jumptables) - *(.jumptables*) - *(.lowtext) - *(.lowtext*) - 0x0003e12c __ctors_start = . - *(.ctors) - 0x0003e12c __ctors_end = . - 0x0003e12c __dtors_start = . - *(.dtors) - 0x0003e12c __dtors_end = . - SORT(*)(.ctors) - SORT(*)(.dtors) - *(.init0) - .init0 0x0003e12c 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - 0x0003e12c __init - *(.init0) - *(.init1) - *(.init1) - *(.init2) - .init2 0x0003e12c 0x10 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - *(.init2) - *(.init3) - *(.init3) - *(.init4) - .init4 0x0003e13c 0x1a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_copy_data.o) - 0x0003e13c __do_copy_data - .init4 0x0003e156 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_clear_bss.o) - 0x0003e156 __do_clear_bss - *(.init4) - *(.init5) - *(.init5) - *(.init6) - *(.init6) - *(.init7) - *(.init7) - *(.init8) - *(.init8) - *(.init9) - .init9 0x0003e166 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .init9 0x0003e16a 0xe stk500boot.o - 0x0003e16a __jumpMain - *(.init9) - *(.text) - .text 0x0003e178 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - 0x0003e178 __vector_38 - 0x0003e178 __vector_22 - 0x0003e178 __vector_28 - 0x0003e178 __vector_1 - 0x0003e178 __vector_32 - 0x0003e178 __vector_34 - 0x0003e178 __vector_24 - 0x0003e178 __vector_12 - 0x0003e178 __vector_55 - 0x0003e178 __vector_46 - 0x0003e178 __bad_interrupt - 0x0003e178 __vector_6 - 0x0003e178 __vector_31 - 0x0003e178 __vector_35 - 0x0003e178 __vector_39 - 0x0003e178 __vector_3 - 0x0003e178 __vector_23 - 0x0003e178 __vector_30 - 0x0003e178 __vector_45 - 0x0003e178 __vector_25 - 0x0003e178 __vector_11 - 0x0003e178 __vector_54 - 0x0003e178 __vector_13 - 0x0003e178 __vector_17 - 0x0003e178 __vector_19 - 0x0003e178 __vector_56 - 0x0003e178 __vector_7 - 0x0003e178 __vector_49 - 0x0003e178 __vector_41 - 0x0003e178 __vector_43 - 0x0003e178 __vector_27 - 0x0003e178 __vector_5 - 0x0003e178 __vector_33 - 0x0003e178 __vector_47 - 0x0003e178 __vector_52 - 0x0003e178 __vector_37 - 0x0003e178 __vector_4 - 0x0003e178 __vector_44 - 0x0003e178 __vector_51 - 0x0003e178 __vector_9 - 0x0003e178 __vector_2 - 0x0003e178 __vector_21 - 0x0003e178 __vector_15 - 0x0003e178 __vector_36 - 0x0003e178 __vector_29 - 0x0003e178 __vector_40 - 0x0003e178 __vector_8 - 0x0003e178 __vector_26 - 0x0003e178 __vector_48 - 0x0003e178 __vector_14 - 0x0003e178 __vector_53 - 0x0003e178 __vector_10 - 0x0003e178 __vector_50 - 0x0003e178 __vector_16 - 0x0003e178 __vector_18 - 0x0003e178 __vector_20 - 0x0003e178 __vector_42 - 0x0003e17a . = ALIGN (0x2) - *(.text.*) - .text.sendchar - 0x0003e17a 0x18 stk500boot.o - .text.startup.main - 0x0003e192 0x566 stk500boot.o - 0x0003e192 main - .text.libgcc.div - 0x0003e6f8 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_udivmodsi4.o) - 0x0003e6f8 __udivmodsi4 - .text.libgcc 0x0003e73c 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_tablejump2.o) - 0x0003e73c __tablejump2__ - .text.libgcc.builtins - 0x0003e74c 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_bswapsi2.o) - 0x0003e74c __bswapsi2 - .text.avr-libc - 0x0003e75a 0x1c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - 0x0003e75a eeprom_write_byte - 0x0003e75c eeprom_write_r18 - 0x0003e776 . = ALIGN (0x2) - *(.fini9) - .fini9 0x0003e776 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - 0x0003e776 _exit - 0x0003e776 exit - *(.fini9) - *(.fini8) - *(.fini8) - *(.fini7) - *(.fini7) - *(.fini6) - *(.fini6) - *(.fini5) - *(.fini5) - *(.fini4) - *(.fini4) - *(.fini3) - *(.fini3) - *(.fini2) - *(.fini2) - *(.fini1) - *(.fini1) - *(.fini0) - .fini0 0x0003e776 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr6\libgcc.a(_exit.o) - *(.fini0) - 0x0003e77a _etext = . - -.data 0x00800200 0x4 load address 0x0003e77a - 0x00800200 PROVIDE (__data_start, .) - *(.data) - *(.data*) - *(.gnu.linkonce.d*) - *(.rodata) - *(.rodata*) - .rodata.CSWTCH.27 - 0x00800200 0x3 stk500boot.o - *(.gnu.linkonce.r*) - 0x00800204 . = ALIGN (0x2) - *fill* 0x00800203 0x1 - 0x00800204 _edata = . - 0x00800204 PROVIDE (__data_end, .) - -.bss 0x00800204 0x2 - 0x00800204 PROVIDE (__bss_start, .) - *(.bss) - *(.bss*) - .bss.app_start - 0x00800204 0x2 stk500boot.o - 0x00800204 app_start - *(COMMON) - 0x00800206 PROVIDE (__bss_end, .) - 0x0003e77a __data_load_start = LOADADDR (.data) - 0x0003e77e __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x00800206 0x0 - [!provide] PROVIDE (__noinit_start, .) - *(.noinit*) - [!provide] PROVIDE (__noinit_end, .) - 0x00800206 _end = . - [!provide] PROVIDE (__heap_start, .) - -.eeprom 0x00810000 0x0 - *(.eeprom*) - 0x00810000 __eeprom_end = . - -.fuse 0x00820000 0x3 - *(.fuse) - .fuse 0x00820000 0x3 stk500boot.o - 0x00820000 __fuse - *(.lfuse) - *(.hfuse) - *(.efuse) - -.lock 0x00830000 0x1 - *(.lock*) - .lock 0x00830000 0x1 stk500boot.o - 0x00830000 __lock - -.signature - *(.signature*) - -.user_signatures - *(.user_signatures*) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x00000000 0x30 - *(.comment) - .comment 0x00000000 0x30 stk500boot.o - 0x31 (size before relaxing) - -.note.gnu.avr.deviceinfo - 0x00000000 0x40 - .note.gnu.avr.deviceinfo - 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - -.note.gnu.build-id - *(.note.gnu.build-id) - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x00000000 0x58 - *(.debug_aranges) - .debug_aranges - 0x00000000 0x38 stk500boot.o - .debug_aranges - 0x00000038 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - -.debug_pubnames - *(.debug_pubnames) - -.debug_info 0x00000000 0x1367 - *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0xbbc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .debug_info 0x00000bbc 0x711 stk500boot.o - .debug_info 0x000012cd 0x9a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - -.debug_abbrev 0x00000000 0xdac - *(.debug_abbrev) - .debug_abbrev 0x00000000 0xb1a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .debug_abbrev 0x00000b1a 0x27e stk500boot.o - .debug_abbrev 0x00000d98 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - -.debug_line 0x00000000 0x988 - *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x00000000 0x1fa C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .debug_line 0x000001fa 0x6f0 stk500boot.o - .debug_line 0x000008ea 0x9e C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6\libatmega2560.a(eewr_byte.o) - -.debug_frame 0x00000000 0x68 - *(.debug_frame) - .debug_frame 0x00000000 0x68 stk500boot.o - -.debug_str 0x00000000 0x6f2 - *(.debug_str) - .debug_str 0x00000000 0x3e6 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.7.374/gcc/dev/atmega2560/avr6/crtatmega2560.o - .debug_str 0x000003e6 0x30c stk500boot.o - 0x356 (size before relaxing) - -.debug_loc 0x00000000 0xaa4 - *(.debug_loc) - .debug_loc 0x00000000 0xaa4 stk500boot.o - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -.debug_pubtypes - *(.debug_pubtypes) - -.debug_ranges 0x00000000 0x58 - *(.debug_ranges) - .debug_ranges 0x00000000 0x58 stk500boot.o - -.debug_macro - *(.debug_macro) -OUTPUT(stk500boot_v2_mega2560.elf elf32-avr) -LOAD linker stubs diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.srec b/bootloaders/stk500v2/stk500boot_v2_mega2560.srec deleted file mode 100644 index 043d371..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.srec +++ /dev/null @@ -1,123 +0,0 @@ -S01E000073746B353030626F6F745F76325F6D656761323536302E737265639E -S21403E00095C00000B9C00000B7C00000B5C000004E -S21403E010B3C00000B1C00000AFC00000ADC0000038 -S21403E020ABC00000A9C00000A7C00000A5C0000048 -S21403E030A3C00000A1C000009FC000009DC0000058 -S21403E0409BC0000099C0000097C0000095C0000068 -S21403E05093C0000091C000008FC000008DC0000078 -S21403E0608BC0000089C0000087C0000085C0000088 -S21403E07083C0000081C000007FC000007DC0000098 -S21403E0807BC0000079C0000077C0000075C00000A8 -S21403E09073C0000071C000006FC000006DC00000B8 -S21403E0A06BC0000069C0000067C0000065C00000C8 -S21403E0B063C0000061C000005FC000005DC00000D8 -S21403E0C05BC0000059C0000057C0000055C00000E8 -S21403E0D053C0000051C000004FC000004DC00000F8 -S21403E0E04BC000006BF171F179F180F184F18CF192 -S21403E0F09DF1DDF1B0F1F4F11EF31EF33EF21EF3D3 -S21403E1001EF31EF31EF31EF31EF31EF31EF31EF37F -S21403E110B0F104F235F24BF2C5F24BF2C5F21EF340 -S21403E12020F21EF313F208F21EF3B2F111241FBEFF -S21403E130CFEFD1E2DEBFCDBF01E00CBF12E0A0E01F -S21403E140B2E0EAE7F7EE03E00BBF02C007900D92DA -S21403E150A430B107D9F722E0A4E0B2E001C01D92D3 -S21403E160A630B207E1F715D006C301E20EBF0FEFE4 -S21403E1700DBF11241FBE0DC043CF8093C6008091F0 -S21403E180C00086FFFCCF8091C00080648093C000EF -S21403E1900895CF93DF93CDB7DEB7C052D1400FB605 -S21403E1A0F894DEBF0FBECDBF01E20EBF0FEF0DBF6B -S21403E1B094B7F894A89514BE809160008861809304 -S21403E1C0600010926000789493FF05C0E09104020B -S21403E1D0F091050219958091C00082608093C0007B -S21403E1E080E18093C40088E18093C100000000E0D2 -S21403E1F010E0C12CD12C760197EC892E9BE1992E49 -S21403E200A12CB12C24E0722E8091C00087FD25C07E -S21403E2100115110511F525E02A95F1F700003FEFEA -S21403E220C31AD30AE30AF30A91E080E041E2C41674 -S21403E2304EE4D406E104F10408F490E0092F182F05 -S21403E240C701B601A501940157D2672B682B692B2A -S21403E250D9F684B3872584BBD7CF0F5F1F4F013012 -S21403E260110509F032C2C25EDE4F1882CE51D1408C -S21403E270D12C212C312C812C912C5401412C512C46 -S21403E280320140E050E020E001301105B1F081E0BA -S21403E29092E1AAE7B0E03091C00037FD0EC00197C7 -S21403E2A0A109B109C1F7ABBFFC018791969101960D -S21403E2B071F3EE27FF270994EACF9091C600E22E6A -S21403E2C0F12CF7E0EF16F104D8F5F7018827EE589E -S21403E2D0FF408E4F33C29B3109F405C200E010E0C5 -S21403E2E0D3CFD926C25EDE4F9883CE51D14022E0EB -S21403E2F0F5CF492F50E0542F4427D92623E0EECFFD -S21403E300492BD92624E0EACF9E3009F0F0C1D9265E -S21403E310212C312C25E0E2CFB1016F5F7F4FE1E086 -S21403E320F0E0EC0FFD1FE20DF31D9083D926461790 -S21403E330570709F4DEC11B01D1CF9D11D8C102C016 -S21403E340273061F62981822F90E0FC013197ED3169 -S21403E350F10508F073C18827E758FF408E4FEEC1DA -S21403E360C12C54C09D81903339F48F818823B1F03A -S21403E3708130B1F488E917C0892F807599F09035FC -S21403E38021F489E0E0E0F0E005C0983559F4E3E0D5 -S21403E390F0E089E080935700849105C08EE103C0C6 -S21403E3A081E001C080E01A821B829C831D828E83DB -S21403E3B01F82C12C07E010E046C11A8288E08B83D7 -S21403E3C081E48C8386E58D8382E58E8389E48F835F -S21403E3D083E5888780E589878FE58A8782E38B874D -S21403E3E0C12C0BE010E02FC1EA81E059E33028F49A -S21403E3F0F0E0E050FE4F808101C080E01A828B83FC -S21403E400C12C03E010E01FC1CC24C3941A8219C1A7 -S21403E4108D81882321F0813021F488E924C08EE1A0 -S21403E42022C081E020C01A82E1E0F0E089E0809318 -S21403E430570084918B831C82C12C04E010E003C137 -S21403E4408B81803551F48C81883019F4E2E0F0E05A -S21403E45006C089E0E0E0F0E003C0E3E0F0E089E036 -S21403E4608093570084911A82E5CF80EC8A83C12C6F -S21403E47002E010E0812C912C5401E5C06A817B8177 -S21403E4808C819D8163D12B013C01440C551C661C79 -S21403E490771C1A82D5C0EA80FB80FE24EF24FE2474 -S21403E4A0233109F03CC0811440EC940643E0A406F3 -S21403E4B0B10478F423E0F401A0925B0020935700A4 -S21403E4C0E89507B600FCFDCF3FEF931AA30AB30AFD -S21403E4D0EACF93018201DE011B968D919D9141E067 -S21403E4E00C01F80120935B0040935700E895112434 -S21403E4F00E5F1F4F2F4F3F4F82E0E81AF10869F770 -S21403E50095E0F20160925B0090935700E89507B69A -S21403E51000FCFDCF81E180935700E89532C0D3011C -S21403E520C201B695A795979587956C01FE013B9614 -S21403E530C15EDE4FF983E883CF51D14000E010E09F -S21403E5400E151F05A1F0C15EDE4FE881F981CF519C -S21403E550D1406191C15EDE4FF983E883CF51D1404C -S21403E560C8018C0D9D1DF9D00F5F1F4FE9CF20E02A -S21403E57030E0000F111F221F331F040D151D261D2B -S21403E580371D1A82280139015BC08A819B8198272F -S21403E590892798278C010D5F1F4F1A82243101F5B6 -S21403E5A08114F0EC9F06F3E0AF06B10408F446C00E -S21403E5B0DE0111966BBEF2012791369112962C93CB -S21403E5C01297FD01349613963C93139722E0420E5E -S21403E5D0511C611C711C02971296009759F72BC0A9 -S21403E5E0FE0131969F01280F391FB301A20141BDD9 -S21403E5F0C52ED62EE72EFF24C2BC4F5F5F4F6F4F4C -S21403E6007F4FF89AA0B5A28331962E173F0779F766 -S21403E610AC014150510960E070E04F5F5F4F6F4FB0 -S21403E6207F4F440E551E661E771EE3E0F0E0EC0FA8 -S21403E630FD1FE80FF91F1082C12C05C080EC8A83EA -S21403E640C12C02E010E08BE198DDC25EDE4F8881CC -S21403E650CE51D14092DD812F90DD802F8EDD85E176 -S21403E660C25EDE4FD880CE51D140D826D0268EE06B -S21403E67084DDD126CE0101967C01080F191F0E15E5 -S21403E6801F0589F0F70121917F01C15EDE4F2883C4 -S21403E690CF51D140822F71DDC15EDE4F3881CF511D -S21403E6A0D140D326ECCF8D2D68DDC25EDE4F488188 -S21403E6B0CE51D1404F5FC25EDE4F4883CE51D1402C -S21403E6C000E010E0CC2009F4DCCD00008091C0000F -S21403E6D08D7F8093C00081E180935700E895EE27F5 -S21403E6E0FF270994FFCF8BE1D82E21E0F7CD20E05A -S21403E6F0F5CD1A0126E0F2CDA1E21A2EAA1BBB1B0A -S21403E700FD010DC0AA1FBB1FEE1FFF1FA217B307F5 -S21403E710E407F50720F0A21BB30BE40BF50B661F0B -S21403E720771F881F991F1A9469F7609570958095CF -S21403E73090959B01AC01BD01CF010895EE0FFF1F1D -S21403E740881F8BBF0790F691E02D199469279627AB -S21403E75069277827872778270895262FF999FECFE4 -S21403E7601FBA92BD81BD20BD0FB6F894FA9AF99AE6 -S20E03E7700FBE01960895F894FFCF3C -S20803E77A0F020A0078 -S80403E00018