From 91e267bcc42442d4e9da09aab30065ad5d44025a Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 12:37:45 -0500 Subject: Remove non-USB boards Removes boards from boards.txt, bootloaders for those boards, and variants for those boards. As none of these boards support USB there's no reason to keep them around. --- bootloaders/stk500v2/License.txt | 280 --- bootloaders/stk500v2/Makefile | 587 ------ .../stk500v2/Mega2560-prod-firmware-2011-06-29.hex | 513 ----- bootloaders/stk500v2/STK500V2.pnproj | 1 - bootloaders/stk500v2/STK500V2.pnps | 1 - bootloaders/stk500v2/avr_cpunames.h | 189 -- bootloaders/stk500v2/avrinterruptnames.h | 1040 ---------- bootloaders/stk500v2/command.h | 114 -- bootloaders/stk500v2/stk500boot.c | 2122 -------------------- bootloaders/stk500v2/stk500boot.ppg | 1 - bootloaders/stk500v2/stk500boot_v2_mega2560.hex | 469 ----- 11 files changed, 5317 deletions(-) delete mode 100644 bootloaders/stk500v2/License.txt delete mode 100644 bootloaders/stk500v2/Makefile delete mode 100644 bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex delete mode 100644 bootloaders/stk500v2/STK500V2.pnproj delete mode 100644 bootloaders/stk500v2/STK500V2.pnps delete mode 100644 bootloaders/stk500v2/avr_cpunames.h delete mode 100644 bootloaders/stk500v2/avrinterruptnames.h delete mode 100644 bootloaders/stk500v2/command.h delete mode 100644 bootloaders/stk500v2/stk500boot.c delete mode 100644 bootloaders/stk500v2/stk500boot.ppg delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.hex (limited to 'bootloaders/stk500v2') diff --git a/bootloaders/stk500v2/License.txt b/bootloaders/stk500v2/License.txt deleted file mode 100644 index e7dcdd8..0000000 --- a/bootloaders/stk500v2/License.txt +++ /dev/null @@ -1,280 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/bootloaders/stk500v2/Makefile b/bootloaders/stk500v2/Makefile deleted file mode 100644 index eeb9add..0000000 --- a/bootloaders/stk500v2/Makefile +++ /dev/null @@ -1,587 +0,0 @@ -# ---------------------------------------------------------------------------- -# 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 - - -# 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 = - - -# 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 - - -# 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 - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS = - - -# 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 - - -# Place -D or -U options here -CDEFS = -DF_CPU=$(F_CPU)UL - - -# Place -I options here -CINCS = - - - -#---------------- 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) - - -#---------------- 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 - - -#---------------- Library Options ---------------- -# Minimalistic printf version -PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min - -# Floating point printf version (requires MATH_LIB = -lm below) -PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt - -# 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) - - -# 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) - - -MATH_LIB = -lm - - - -#---------------- 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 - - -# 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 - diff --git a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex deleted file mode 100644 index 4f36699..0000000 --- a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex +++ /dev/null @@ -1,513 +0,0 @@ -: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 deleted file mode 100644 index d935019..0000000 --- a/bootloaders/stk500v2/STK500V2.pnproj +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/STK500V2.pnps b/bootloaders/stk500v2/STK500V2.pnps deleted file mode 100644 index f85cde5..0000000 --- a/bootloaders/stk500v2/STK500V2.pnps +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/avr_cpunames.h b/bootloaders/stk500v2/avr_cpunames.h deleted file mode 100644 index ad0ed9c..0000000 --- a/bootloaders/stk500v2/avr_cpunames.h +++ /dev/null @@ -1,189 +0,0 @@ -//************************************************************************************************** -//* -//* Atmel AVR CPU name strings -//* -//************************************************************************************************** -//* Sep 19, 2010 Started on avr_cpunames.h -//************************************************************************************************** - -//#include "avr_cpunames.h" - -//************************************************************************************************** - - -#if defined (__AVR_AT94K__) - #define _AVR_CPU_NAME_ "AT94k" -#elif defined (__AVR_AT43USB320__) -#elif defined (__AVR_AT43USB355__) -#elif defined (__AVR_AT76C711__) -#elif defined (__AVR_AT86RF401__) -#elif defined (__AVR_AT90PWM1__) -#elif defined (__AVR_AT90PWM2__) -#elif defined (__AVR_AT90PWM2B__) -#elif defined (__AVR_AT90PWM3__) -#elif defined (__AVR_AT90PWM3B__) -#elif defined (__AVR_AT90PWM216__) -#elif defined (__AVR_AT90PWM316__) -#elif defined (__AVR_ATmega32C1__) -#elif defined (__AVR_ATmega32M1__) -#elif defined (__AVR_ATmega32U4__) - #define _AVR_CPU_NAME_ "ATmega32U4" -#elif defined (__AVR_ATmega32U6__) - #define _AVR_CPU_NAME_ "ATmega32U6" -#elif defined (__AVR_ATmega128__) - #define _AVR_CPU_NAME_ "Atmega128" -#elif defined (__AVR_ATmega1280__) - #define _AVR_CPU_NAME_ "ATmega1280" -#elif defined (__AVR_ATmega1281__) - #define _AVR_CPU_NAME_ "ATmega1281" -#elif defined (__AVR_ATmega1284P__) - #define _AVR_CPU_NAME_ "ATmega1284" -#elif defined (__AVR_ATmega128RFA1__) - #define _AVR_CPU_NAME_ "ATmega128RFA1" -#elif defined (__AVR_ATmega2560__) - #define _AVR_CPU_NAME_ "ATmega2560" -#elif defined (__AVR_ATmega2561__) - #define _AVR_CPU_NAME_ "ATmega2561" -#elif defined (__AVR_AT90CAN32__) - #define _AVR_CPU_NAME_ "AT90CAN32" -#elif defined (__AVR_AT90CAN64__) - #define _AVR_CPU_NAME_ "AT90CAN64" -#elif defined (__AVR_AT90CAN128__) - #define _AVR_CPU_NAME_ "AT90CAN128" -#elif defined (__AVR_AT90USB82__) - #define _AVR_CPU_NAME_ "AT90USB82" -#elif defined (__AVR_AT90USB162__) - #define _AVR_CPU_NAME_ "AT90USB162" -#elif defined (__AVR_AT90USB646__) - #define _AVR_CPU_NAME_ "AT90USB646" -#elif defined (__AVR_AT90USB647__) - #define _AVR_CPU_NAME_ "AT90USB647" -#elif defined (__AVR_AT90USB1286__) - #define _AVR_CPU_NAME_ "AT90USB1286" -#elif defined (__AVR_AT90USB1287__) - #define _AVR_CPU_NAME_ "AT90USB1287" -#elif defined (__AVR_ATmega64__) - #define _AVR_CPU_NAME_ "ATmega64" -#elif defined (__AVR_ATmega640__) - #define _AVR_CPU_NAME_ "ATmega640" -#elif defined (__AVR_ATmega644__) - #define _AVR_CPU_NAME_ "ATmega644" -#elif defined (__AVR_ATmega644P__) - #define _AVR_CPU_NAME_ "ATmega644P" -#elif defined (__AVR_ATmega645__) - #define _AVR_CPU_NAME_ "ATmega645" -#elif defined (__AVR_ATmega6450__) - #define _AVR_CPU_NAME_ "ATmega6450" -#elif defined (__AVR_ATmega649__) - #define _AVR_CPU_NAME_ "ATmega649" -#elif defined (__AVR_ATmega6490__) - #define _AVR_CPU_NAME_ "ATmega6490" -#elif defined (__AVR_ATmega103__) - #define _AVR_CPU_NAME_ "ATmega103" -#elif defined (__AVR_ATmega32__) - #define _AVR_CPU_NAME_ "Atmega32" -#elif defined (__AVR_ATmega323__) - #define _AVR_CPU_NAME_ "ATmega323" -#elif defined (__AVR_ATmega324P__) - #define _AVR_CPU_NAME_ "ATmega324P" -#elif defined (__AVR_ATmega325__) - #define _AVR_CPU_NAME_ "ATmega325" -#elif defined (__AVR_ATmega325P__) - #define _AVR_CPU_NAME_ "ATmega325P" -#elif defined (__AVR_ATmega3250__) - #define _AVR_CPU_NAME_ "ATmega3250" -#elif defined (__AVR_ATmega3250P__) - #define _AVR_CPU_NAME_ "ATmega3250P" -#elif defined (__AVR_ATmega328P__) - #define _AVR_CPU_NAME_ "ATmega328P" -#elif defined (__AVR_ATmega329__) - #define _AVR_CPU_NAME_ "ATmega329" -#elif defined (__AVR_ATmega329P__) - #define _AVR_CPU_NAME_ "ATmega329P" -#elif defined (__AVR_ATmega3290__) - #define _AVR_CPU_NAME_ "ATmega3290" -#elif defined (__AVR_ATmega3290P__) - #define _AVR_CPU_NAME_ "ATmega3290P" -#elif defined (__AVR_ATmega32HVB__) - #define _AVR_CPU_NAME_ "ATmega32HVB" -#elif defined (__AVR_ATmega406__) - #define _AVR_CPU_NAME_ "ATmega406" -#elif defined (__AVR_ATmega16__) - #define _AVR_CPU_NAME_ "Atmega16" -#elif defined (__AVR_ATmega161__) - #define _AVR_CPU_NAME_ "ATmega161" -#elif defined (__AVR_ATmega162__) - #define _AVR_CPU_NAME_ "ATmega162" -#elif defined (__AVR_ATmega163__) - #define _AVR_CPU_NAME_ "ATmega163" -#elif defined (__AVR_ATmega164P__) - #define _AVR_CPU_NAME_ "ATmega164P" -#elif defined (__AVR_ATmega165__) - #define _AVR_CPU_NAME_ "ATmega165" -#elif defined (__AVR_ATmega165P__) - #define _AVR_CPU_NAME_ "ATmega165P" -#elif defined (__AVR_ATmega168__) - #define _AVR_CPU_NAME_ "ATmega168" -#elif defined (__AVR_ATmega168P__) - #define _AVR_CPU_NAME_ "ATmega168P" -#elif defined (__AVR_ATmega169__) - #define _AVR_CPU_NAME_ "Atmega169" -#elif defined (__AVR_ATmega169P__) - #define _AVR_CPU_NAME_ "ATmega169P" -#elif defined (__AVR_ATmega8HVA__) - #define _AVR_CPU_NAME_ "ATmega8HVA" -#elif defined (__AVR_ATmega16HVA__) - #define _AVR_CPU_NAME_ "ATmega16HVA" -#elif defined (__AVR_ATmega8__) - #define _AVR_CPU_NAME_ "ATmega8" -#elif defined (__AVR_ATmega48__) - #define _AVR_CPU_NAME_ "ATmega48" -#elif defined (__AVR_ATmega48P__) - #define _AVR_CPU_NAME_ "ATmega48P" -#elif defined (__AVR_ATmega88__) - #define _AVR_CPU_NAME_ "ATmega88" -#elif defined (__AVR_ATmega88P__) - #define _AVR_CPU_NAME_ "ATmega88P" -#elif defined (__AVR_ATmega8515__) - #define _AVR_CPU_NAME_ "ATmega8515" -#elif defined (__AVR_ATmega8535__) - #define _AVR_CPU_NAME_ "ATmega8535" -#elif defined (__AVR_AT90S8535__) -#elif defined (__AVR_AT90C8534__) -#elif defined (__AVR_AT90S8515__) -#elif defined (__AVR_AT90S4434__) -#elif defined (__AVR_AT90S4433__) -#elif defined (__AVR_AT90S4414__) -#elif defined (__AVR_ATtiny22__) -#elif defined (__AVR_ATtiny26__) -#elif defined (__AVR_AT90S2343__) -#elif defined (__AVR_AT90S2333__) -#elif defined (__AVR_AT90S2323__) -#elif defined (__AVR_AT90S2313__) -#elif defined (__AVR_ATtiny2313__) - #define _AVR_CPU_NAME_ "ATtiny2313" -#elif defined (__AVR_ATtiny13__) -#elif defined (__AVR_ATtiny13A__) -#elif defined (__AVR_ATtiny25__) -#elif defined (__AVR_ATtiny45__) -#elif defined (__AVR_ATtiny85__) -#elif defined (__AVR_ATtiny24__) -#elif defined (__AVR_ATtiny44__) -#elif defined (__AVR_ATtiny84__) -#elif defined (__AVR_ATtiny261__) -#elif defined (__AVR_ATtiny461__) -#elif defined (__AVR_ATtiny861__) -#elif defined (__AVR_ATtiny43U__) -#elif defined (__AVR_ATtiny48__) -#elif defined (__AVR_ATtiny88__) -#elif defined (__AVR_ATtiny167__) -#elif defined (__AVR_ATmega8U2__) - #define _AVR_CPU_NAME_ "ATmega8U2" -#else - #error cpu not defined -#endif - - -#if !defined (_AVR_CPU_NAME_) -// #define _AVR_CPU_NAME_ "UNKNOWN" -#endif diff --git a/bootloaders/stk500v2/avrinterruptnames.h b/bootloaders/stk500v2/avrinterruptnames.h deleted file mode 100644 index e7e3ed9..0000000 --- a/bootloaders/stk500v2/avrinterruptnames.h +++ /dev/null @@ -1,1040 +0,0 @@ -//************************************************************************************************** -//* -//* interrupt vector names -//* -//* It is important to note that the vector numbers listed here -//* are the ATMEL documentation numbers. The Arduino numbers are 1 less -//* This is because the Atmel docs start numbering the interrupts at 1 -//* when it is actually vector #0 in the table. -//************************************************************************************************** -//* Jun 1, 2010 Added support for ATmega1281 -//* Jun 30, 2010 Putting in more ifdefs to conserve space -//* Jul 3, 2010 More #ifdefs to conserve space and testing on most of my boards -//* Jul 4, 2010 Started using vector defs for #ifdefs as defined in -//* Jul 13, 2010 Added support for __AVR_ATmega128__ -//* Aug 26, 2010 Added support for __AVR_ATmega2561__ -//* Sep 13, 2010 Added support for __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__ -//************************************************************************************************** - -//#include "avrinterruptnames.h" - -//************************************************************************************************** -//* this defines the interrupt vectors and allows us to compile ONLY those strings that are actually -//* in the target CPU. This way we do not have to keep making changes based on cpu, it will be -//* automatic even if we add a new CPU -#ifndef _AVR_IO_H_ - #include -#endif -//************************************************************************************************** - -#ifdef __MWERKS__ - #define prog_char char - #define PGM_P char * -#endif - - prog_char gAvrInt_RESET[] PROGMEM = "RESET"; -#ifdef INT0_vect - prog_char gAvrInt_INT0[] PROGMEM = "INT0"; -#endif -#ifdef INT1_vect - prog_char gAvrInt_INT1[] PROGMEM = "INT1"; -#endif -#ifdef INT2_vect - prog_char gAvrInt_INT2[] PROGMEM = "INT2"; -#endif -#ifdef INT3_vect - prog_char gAvrInt_INT3[] PROGMEM = "INT3"; -#endif -#ifdef INT4_vect - prog_char gAvrInt_INT4[] PROGMEM = "INT4"; -#endif -#ifdef INT5_vect - prog_char gAvrInt_INT5[] PROGMEM = "INT5"; -#endif -#ifdef INT6_vect - prog_char gAvrInt_INT6[] PROGMEM = "INT6"; -#endif -#ifdef INT7_vect - prog_char gAvrInt_INT7[] PROGMEM = "INT7"; -#endif -#ifdef PCINT0_vect - prog_char gAvrInt_PCINT0[] PROGMEM = "PCINT0"; -#endif -#ifdef PCINT1_vect - prog_char gAvrInt_PCINT1[] PROGMEM = "PCINT1"; -#endif -#ifdef PCINT2_vect - prog_char gAvrInt_PCINT2[] PROGMEM = "PCINT2"; -#endif -#ifdef PCINT3_vect - prog_char gAvrInt_PCINT3[] PROGMEM = "PCINT3"; -#endif -#ifdef WDT_vect - prog_char gAvrInt_WDT[] PROGMEM = "WDT"; -#endif -#ifdef TIMER0_COMP_vect - prog_char gAvrInt_TIMER0_COMP[] PROGMEM = "TIMER0 COMP"; -#endif -#ifdef TIMER0_COMPA_vect - prog_char gAvrInt_TIMER0_COMPA[] PROGMEM = "TIMER0 COMPA"; -#endif -#ifdef TIMER0_COMPB_vect - prog_char gAvrInt_TIMER0_COMPB[] PROGMEM = "TIMER0 COMPB"; -#endif -#ifdef TIMER0_OVF_vect - prog_char gAvrInt_TIMER0_OVF[] PROGMEM = "TIMER0 OVF"; -#endif -#ifdef TIMER1_CAPT_vect - prog_char gAvrInt_TIMER1_CAPT[] PROGMEM = "TIMER1 CAPT"; -#endif -#ifdef TIMER1_COMPA_vect - prog_char gAvrInt_TIMER1_COMPA[] PROGMEM = "TIMER1 COMPA"; -#endif -#ifdef TIMER1_COMPB_vect - prog_char gAvrInt_TIMER1_COMPB[] PROGMEM = "TIMER1 COMPB"; -#endif -#ifdef TIMER1_COMPC_vect - prog_char gAvrInt_TIMER1_COMPC[] PROGMEM = "TIMER1 COMPC"; -#endif -#ifdef TIMER1_OVF_vect - prog_char gAvrInt_TIMER1_OVF[] PROGMEM = "TIMER1 OVF"; -#endif -#ifdef TIMER2_COMP_vect - prog_char gAvrInt_TIMER2_COMP[] PROGMEM = "TIMER2 COMP"; -#endif -#ifdef TIMER2_COMPA_vect - prog_char gAvrInt_TIMER2_COMPA[] PROGMEM = "TIMER2 COMPA"; -#endif -#ifdef TIMER2_COMPB_vect - prog_char gAvrInt_TIMER2_COMPB[] PROGMEM = "TIMER2 COMPB"; -#endif -#ifdef TIMER2_OVF_vect - prog_char gAvrInt_TIMER2_OVF[] PROGMEM = "TIMER2 OVF"; -#endif -#ifdef TIMER3_CAPT_vect - prog_char gAvrInt_TIMER3_CAPT[] PROGMEM = "TIMER3 CAPT"; -#endif -#ifdef TIMER3_COMPA_vect - prog_char gAvrInt_TIMER3_COMPA[] PROGMEM = "TIMER3 COMPA"; -#endif -#ifdef TIMER3_COMPB_vect - prog_char gAvrInt_TIMER3_COMPB[] PROGMEM = "TIMER3 COMPB"; -#endif -#ifdef TIMER3_COMPC_vect - prog_char gAvrInt_TIMER3_COMPC[] PROGMEM = "TIMER3 COMPC"; -#endif -#ifdef TIMER3_OVF_vect - prog_char gAvrInt_TIMER3_OVF[] PROGMEM = "TIMER3 OVF"; -#endif -#ifdef TIMER4_CAPT_vect - prog_char gAvrInt_TIMER4_CAPT[] PROGMEM = "TIMER4 CAPT"; -#endif -#ifdef TIMER4_COMPA_vect - prog_char gAvrInt_TIMER4_COMPA[] PROGMEM = "TIMER4 COMPA"; -#endif -#ifdef TIMER4_COMPB_vect - prog_char gAvrInt_TIMER4_COMPB[] PROGMEM = "TIMER4 COMPB"; -#endif -#ifdef TIMER4_COMPC_vect - prog_char gAvrInt_TIMER4_COMPC[] PROGMEM = "TIMER4 COMPC"; -#endif -#ifdef TIMER4_COMPD_vect - prog_char gAvrInt_TIMER4_COMPD[] PROGMEM = "TIMER4 COMPD"; -#endif -#ifdef TIMER4_OVF_vect - prog_char gAvrInt_TIMER4_OVF[] PROGMEM = "TIMER4 OVF"; -#endif -#ifdef TIMER4_FPF_vect - prog_char gAvrInt_TIMER4_FPF[] PROGMEM = "TIMER4 Fault Protection"; -#endif -#ifdef TIMER5_CAPT_vect - prog_char gAvrInt_TIMER5_CAPT[] PROGMEM = "TIMER5 CAPT"; -#endif -#ifdef TIMER5_COMPA_vect - prog_char gAvrInt_TIMER5_COMPA[] PROGMEM = "TIMER5 COMPA"; -#endif -#ifdef TIMER5_COMPB_vect - prog_char gAvrInt_TIMER5_COMPB[] PROGMEM = "TIMER5 COMPB"; -#endif -#ifdef TIMER5_COMPC_vect - prog_char gAvrInt_TIMER5_COMPC[] PROGMEM = "TIMER5 COMPC"; -#endif -#ifdef TIMER5_OVF_vect - prog_char gAvrInt_TIMER5_OVF[] PROGMEM = "TIMER5 OVF"; -#endif - -//* when there is only 1 usart -#if defined(USART_RX_vect) || defined(USART_RXC_vect) - prog_char gAvrInt_USART_RX[] PROGMEM = "USART RX"; -#endif -#if defined(USART_UDRE_vect) - prog_char gAvrInt_USART_UDRE[] PROGMEM = "USART UDRE"; -#endif -#if defined(USART_TX_vect) || defined(USART_TXC_vect) - prog_char gAvrInt_USART_TX[] PROGMEM = "USART TX"; -#endif - - -//* usart 0 -#if defined(USART0_RX_vect) - prog_char gAvrInt_USART0_RX[] PROGMEM = "USART0 RX"; -#endif -#if defined(USART0_UDRE_vect) - prog_char gAvrInt_USART0_UDRE[] PROGMEM = "USART0 UDRE"; -#endif -#if defined(USART0_TX_vect) - prog_char gAvrInt_USART0_TX[] PROGMEM = "USART0 TX"; -#endif - - -//* usart 1 -#ifdef USART1_RX_vect - prog_char gAvrInt_USART1_RX[] PROGMEM = "USART1 RX"; -#endif -#ifdef USART1_UDRE_vect - prog_char gAvrInt_USART1_UDRE[] PROGMEM = "USART1 UDRE"; -#endif -#ifdef USART1_TX_vect - prog_char gAvrInt_USART1_TX[] PROGMEM = "USART1 TX"; -#endif - -//* usart 2 -#ifdef USART2_RX_vect - prog_char gAvrInt_USART2_RX[] PROGMEM = "USART2 RX"; -#endif -#ifdef USART2_UDRE_vect - prog_char gAvrInt_USART2_UDRE[] PROGMEM = "USART2 UDRE"; -#endif -#ifdef USART2_TX_vect - prog_char gAvrInt_USART2_TX[] PROGMEM = "USART2 TX"; -#endif - -//* usart 3 -#ifdef USART3_RX_vect - prog_char gAvrInt_USART3_RX[] PROGMEM = "USART3 RX"; -#endif -#ifdef USART3_UDRE_vect - prog_char gAvrInt_USART3_UDRE[] PROGMEM = "USART3 UDRE"; -#endif -#ifdef USART3_TX_vect - prog_char gAvrInt_USART3_TX[] PROGMEM = "USART3 TX"; -#endif -#ifdef SPI_STC_vect - prog_char gAvrInt_SPI_STC[] PROGMEM = "SPI STC"; -#endif -#ifdef ADC_vect - prog_char gAvrInt_ADC[] PROGMEM = "ADC"; -#endif -#if defined(ANALOG_COMP_vect) || defined(ANA_COMP_vect) - prog_char gAvrInt_ANALOG_COMP[] PROGMEM = "ANALOG COMP"; -#endif -#if defined(EE_READY_vect) || defined(EE_RDY_vect) - prog_char gAvrInt_EE_READY[] PROGMEM = "EE READY"; -#endif -#ifdef TWI_vect - prog_char gAvrInt_TWI[] PROGMEM = "TWI"; -#endif -#if defined(SPM_READY_vect) || defined(SPM_RDY_vect) - prog_char gAvrInt_SPM_READY[] PROGMEM = "SPM READY"; -#endif -#ifdef USI_START_vect - prog_char gAvrInt_USI_START[] PROGMEM = "USI START"; -#endif -#ifdef USI_OVERFLOW_vect - prog_char gAvrInt_USI_OVERFLOW[] PROGMEM = "USI OVERFLOW"; -#endif -#ifdef USB_GEN_vect - prog_char gAvrInt_USB_General[] PROGMEM = "USB General"; -#endif -#ifdef USB_COM_vect - prog_char gAvrInt_USB_Endpoint[] PROGMEM = "USB Endpoint"; -#endif - -#ifdef LCD_vect - prog_char gAvrInt_LCD_StartFrame[] PROGMEM = "LCD Start of Frame"; -#endif - -//* these are for the chips with CAN bus support -#ifdef CANIT_vect - prog_char gAvrInt_CAN_TrafnsferCE[] PROGMEM = "CAN Transfer Complete or Error"; -#endif -#ifdef OVRIT_vect - prog_char gAvrInt_CAN_TimerOverRun[] PROGMEM = "CAN Timer Overrun"; -#endif - -//* these are for __AVR_ATmega128RFA1__ -#ifdef TRX24_PLL_LOCK_vect - prog_char gAvrInt_TRN_PLL_LOCK[] PROGMEM = "TRX24_PLL_LOCK"; -#endif -#ifdef TRX24_PLL_UNLOCK_vect - prog_char gAvrInt_TRN_PLL_UNLOCK[] PROGMEM = "TRX24_PLL_UNLOCK"; -#endif -#ifdef TRX24_RX_START_vect - prog_char gAvrInt_TRN_RX_START[] PROGMEM = "TRX24_RX_START"; -#endif -#ifdef TRX24_RX_END_vect - prog_char gAvrInt_TRN_RX_END[] PROGMEM = "TRX24_RX_END"; -#endif -#ifdef TRX24_CCA_ED_DONE_vect - prog_char gAvrInt_TRN_CAAED_DONE[] PROGMEM = "TRX24_CCA_ED_DONE"; -#endif -#ifdef TRX24_XAH_AMI_vect - prog_char gAvrInt_TRN_FRAME_MATCH[] PROGMEM = "TRX24_FRAME_ADDRESS_MATCH"; -#endif -#ifdef TRX24_TX_END_vect - prog_char gAvrInt_TRN_TX_END[] PROGMEM = "TRX24_TX_END"; -#endif -#ifdef TRX24_AWAKE_vect - prog_char gAvrInt_TRN_AWAKE[] PROGMEM = "TRX24_AWAKE"; -#endif -#ifdef SCNT_CMP1_vect - prog_char gAvrInt_SCNT_CMP1[] PROGMEM = "SCNT_CMP1"; -#endif -#ifdef SCNT_CMP2_vect - prog_char gAvrInt_SCNT_CMP2[] PROGMEM = "SCNT_CMP2"; -#endif -#ifdef SCNT_CMP3_vect - prog_char gAvrInt_SCNT_CMP3[] PROGMEM = "SCNT_CMP3"; -#endif -#ifdef SCNT_OVFL_vect - prog_char gAvrInt_SCNT_OVFL[] PROGMEM = "SCNT_OVFL"; -#endif -#ifdef SCNT_BACKOFF_vect - prog_char gAvrInt_SCNT_BACKOFF[] PROGMEM = "SCNT_BACKOFF"; -#endif -#ifdef AES_READY_vect - prog_char gAvrInt_AES_READY[] PROGMEM = "AES_READY"; -#endif -#ifdef BAT_LOW_vect - prog_char gAvrInt_BAT_LOW[] PROGMEM = "BAT_LOW"; -#endif - - - -//************************************************************************************************** -//* these do not have vector defs and have to be done by CPU type -#if defined(__AVR_ATmega645__ ) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) - prog_char gAvrInt_NOT_USED[] PROGMEM = "NOT_USED"; -#endif -#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega128RFA1__) - prog_char gAvrInt_RESERVED[] PROGMEM = "Reserved"; -#endif - - prog_char gAvrInt_END[] PROGMEM = "*"; - - - - - -//************************************************************************************************** -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) -#pragma mark __AVR_ATmega168__ / __AVR_ATmega328P__ / __AVR_ATmega328__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_PCINT0, // 4 - gAvrInt_PCINT1, // 5 - gAvrInt_PCINT2, // 6 - gAvrInt_WDT, // 7 - gAvrInt_TIMER2_COMPA, // 8 - gAvrInt_TIMER2_COMPB, // 9 - gAvrInt_TIMER2_OVF, // 10 - gAvrInt_TIMER1_CAPT, // 11 - gAvrInt_TIMER1_COMPA, // 12 - gAvrInt_TIMER1_COMPB, // 13 - gAvrInt_TIMER1_OVF, // 14 - gAvrInt_TIMER0_COMPA, // 15 - gAvrInt_TIMER0_COMPB, // 16 - gAvrInt_TIMER0_OVF, // 17 - gAvrInt_SPI_STC, // 18 - gAvrInt_USART_RX, // 19 - gAvrInt_USART_UDRE, // 20 - gAvrInt_USART_TX, // 21 - gAvrInt_ADC, // 22 - gAvrInt_EE_READY, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_TWI, // 25 - gAvrInt_SPM_READY, // 26 -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega169__) -#pragma mark __AVR_ATmega169__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_PCINT0, // 3 - gAvrInt_PCINT1, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART0_RX, // 14 - gAvrInt_USART0_UDRE, // 15 - gAvrInt_USART0_TX, // 16 - gAvrInt_USI_START, // 17 - gAvrInt_USI_OVERFLOW, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_ADC, // 20 - gAvrInt_EE_READY, // 21 - gAvrInt_SPM_READY, // 22 - gAvrInt_LCD_StartFrame, // 23 - -}; - -#endif - - -//************************************************************************************************** -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) -#pragma mark __AVR_ATmega640__ __AVR_ATmega1280__ __AVR_ATmega1281__ __AVR_ATmega2560__ __AVR_ATmega2561__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_PCINT1, // 11 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_PCINT2, // 12 -#else - gAvrInt_NOT_USED, // 12 -#endif - gAvrInt_WDT, // 13 - gAvrInt_TIMER2_COMPA, // 14 - gAvrInt_TIMER2_COMPB, // 15 - gAvrInt_TIMER2_OVF, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART0_RX, // 26 - gAvrInt_USART0_UDRE, // 27 - gAvrInt_USART0_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - - gAvrInt_USART1_RX, // 37 - gAvrInt_USART1_UDRE, // 38 - gAvrInt_USART1_TX, // 39 - gAvrInt_TWI, // 40 - gAvrInt_SPM_READY, // 41 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_TIMER4_CAPT, // 42 -#else - gAvrInt_NOT_USED, // 42 -#endif - gAvrInt_TIMER4_COMPA, // 43 - gAvrInt_TIMER4_COMPB, // 44 - gAvrInt_TIMER4_COMPC, // 45 - gAvrInt_TIMER4_OVF, // 46 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_TIMER5_CAPT, // 47 -#else - gAvrInt_NOT_USED, // 47 -#endif - gAvrInt_TIMER5_COMPA, // 48 - gAvrInt_TIMER5_COMPB, // 49 - gAvrInt_TIMER5_COMPC, // 50 - gAvrInt_TIMER5_OVF, // 51 - -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_USART2_RX, // 52 - gAvrInt_USART2_UDRE, // 53 - gAvrInt_USART2_TX, // 54 - - gAvrInt_USART3_RX, // 55 - gAvrInt_USART3_UDRE, // 56 - gAvrInt_USART3_TX, // 57 -#endif - -}; - -#endif - - - -//************************************************************************************************** -#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644__ ) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) -#pragma mark __AVR_ATmega324P__ __AVR_ATmega644__ __AVR_ATmega644P__ __AVR_ATmega1284P__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_PCINT0, // 5 - gAvrInt_PCINT1, // 6 - gAvrInt_PCINT2, // 7 - gAvrInt_PCINT3, // 8 - gAvrInt_WDT, // 9 - gAvrInt_TIMER2_COMPA, // 10 - gAvrInt_TIMER2_COMPB, // 11 - gAvrInt_TIMER2_OVF, // 12 - gAvrInt_TIMER1_CAPT, // 13 - gAvrInt_TIMER1_COMPA, // 14 - gAvrInt_TIMER1_COMPB, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMPA, // 17 - gAvrInt_TIMER0_COMPB, // 18 - gAvrInt_TIMER0_OVF, // 19 - gAvrInt_SPI_STC, // 20 - gAvrInt_USART0_RX, // 21 - gAvrInt_USART0_UDRE, // 22 - gAvrInt_USART0_TX, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_ADC, // 25 - gAvrInt_EE_READY, // 26 - gAvrInt_TWI, // 27 - gAvrInt_SPM_READY, // 28 - -#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644P__) - gAvrInt_USART1_RX, // 29 - gAvrInt_USART1_UDRE, // 30 - gAvrInt_USART1_TX, // 31 -#endif - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega1284P__ ) -#pragma mark __AVR_ATmega1284P__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_PCINT0, // 5 - gAvrInt_PCINT1, // 6 - gAvrInt_PCINT2, // 7 - gAvrInt_PCINT3, // 8 - gAvrInt_WDT, // 9 - gAvrInt_TIMER2_COMPA, // 10 - gAvrInt_TIMER2_COMPB, // 11 - gAvrInt_TIMER2_OVF, // 12 - gAvrInt_TIMER1_CAPT, // 13 - gAvrInt_TIMER1_COMPA, // 14 - gAvrInt_TIMER1_COMPB, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMPA, // 17 - gAvrInt_TIMER0_COMPB, // 18 - gAvrInt_TIMER0_OVF, // 19 - gAvrInt_SPI_STC, // 20 - gAvrInt_USART0_RX, // 21 - gAvrInt_USART0_UDRE, // 22 - gAvrInt_USART0_TX, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_ADC, // 25 - gAvrInt_EE_READY, // 26 - gAvrInt_TWI, // 27 - gAvrInt_SPM_READY, // 28 - - gAvrInt_USART1_RX, // 29 - gAvrInt_USART1_UDRE, // 30 - gAvrInt_USART1_TX, // 31 - //* these are NOT documented in doc8272.pdf - //* they are in iom1284p.h - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_OVF, // 35 - - -}; - - -#endif - - -//************************************************************************************************** -#if defined(__AVR_ATmega645__ ) -#pragma mark __AVR_ATmega645__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_PCINT0, // 3 - gAvrInt_PCINT1, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART0_RX, // 14 - gAvrInt_USART0_UDRE, // 15 - gAvrInt_USART0_TX, // 16 - gAvrInt_USI_START, // 17 - gAvrInt_USI_OVERFLOW, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_ADC, // 20 - gAvrInt_EE_READY, // 21 - gAvrInt_SPM_READY, // 22 - gAvrInt_NOT_USED, // 23 - -#if defined(__AVR_ATmega3250__) || defined(__AVR_ATmega6450__) - gAvrInt_PCINT2, // 24 - gAvrInt_PCINT3, // 25 -#endif -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega16__ ) -#pragma mark __AVR_ATmega16__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_TIMER2_COMP, // 4 - gAvrInt_TIMER2_OVF, // 5 - gAvrInt_TIMER1_CAPT, // 6 - gAvrInt_TIMER1_COMPA, // 7 - gAvrInt_TIMER1_COMPB, // 8 - gAvrInt_TIMER1_OVF, // 9 - gAvrInt_TIMER0_OVF, // 10 - gAvrInt_SPI_STC, // 11 - gAvrInt_USART_RX, // 12 - gAvrInt_USART_UDRE, // 13 - gAvrInt_USART_TX, // 14 - gAvrInt_ADC, // 15 - gAvrInt_EE_READY, // 16 - gAvrInt_ANALOG_COMP, // 17 - gAvrInt_TWI, // 18 - gAvrInt_INT2, // 19 - gAvrInt_TIMER0_COMP, // 20 - gAvrInt_SPM_READY, // 21 - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega32__ ) -#pragma mark __AVR_ATmega32__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART_RX, // 14 - gAvrInt_USART_UDRE, // 15 - gAvrInt_USART_TX, // 16 - gAvrInt_ADC, // 17 - gAvrInt_EE_READY, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_TWI, // 20 - gAvrInt_SPM_READY, // 21 - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega32U4__) -#pragma mark __AVR_ATmega32U4__ -//* teensy 2.0 -//* http://www.pjrc.com/teensy/pinout.html -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_RESERVED, // 6 - gAvrInt_RESERVED, // 7 - gAvrInt_INT6, // 8 - gAvrInt_RESERVED, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_USB_General, // 11 - gAvrInt_USB_Endpoint, // 12 - gAvrInt_WDT, // 13 - gAvrInt_RESERVED, // 14 - gAvrInt_RESERVED, // 15 - gAvrInt_RESERVED, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART1_RX, // 26 - gAvrInt_USART1_UDRE, // 27 - gAvrInt_USART1_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - gAvrInt_TWI, // 37 - gAvrInt_SPM_READY, // 38 - - gAvrInt_TIMER4_COMPA, // 39 - gAvrInt_TIMER4_COMPB, // 40 - gAvrInt_TIMER4_COMPD, // 41 - gAvrInt_TIMER4_OVF, // 42 - gAvrInt_TIMER4_FPF, // 43 -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) -#pragma mark __AVR_AT90USB1286__ -//* teensy++ 2.0 -//* http://www.pjrc.com/teensy/pinout.html -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_USB_General, // 11 - gAvrInt_USB_Endpoint, // 12 - gAvrInt_WDT, // 13 - gAvrInt_TIMER2_COMPA, // 14 - gAvrInt_TIMER2_COMPB, // 15 - gAvrInt_TIMER2_OVF, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART1_RX, // 26 - gAvrInt_USART1_UDRE, // 27 - gAvrInt_USART1_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - gAvrInt_TWI, // 37 - gAvrInt_SPM_READY, // 38 - -}; - -#endif - - - - -//************************************************************************************************** -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega64__) -#pragma mark __AVR_ATmega64__ __AVR_ATmega128__ -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_TIMER2_COMP, // 10 - gAvrInt_TIMER2_OVF, // 11 - gAvrInt_TIMER1_CAPT, // 12 - gAvrInt_TIMER1_COMPA, // 13 - gAvrInt_TIMER1_COMPB, // 14 - gAvrInt_TIMER1_OVF, // 15 - gAvrInt_TIMER0_COMP, // 16 - gAvrInt_TIMER0_OVF, // 17 - gAvrInt_SPI_STC, // 18 - gAvrInt_USART0_RX, // 19 - gAvrInt_USART0_UDRE, // 20 - gAvrInt_USART0_TX, // 21 - gAvrInt_ADC, // 22 - gAvrInt_EE_READY, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_TIMER1_COMPC, // 25 - gAvrInt_TIMER3_CAPT, // 26 - gAvrInt_TIMER3_COMPA, // 27 - gAvrInt_TIMER3_COMPB, // 28 - gAvrInt_TIMER3_COMPC, // 29 - gAvrInt_TIMER3_OVF, // 30 - gAvrInt_USART1_RX, // 31 - gAvrInt_USART1_UDRE, // 32 - gAvrInt_USART1_TX, // 33 - gAvrInt_TWI, // 34 - gAvrInt_SPM_READY, // 35 - -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_AT90CAN32__) || defined(__AVR_AT90CAN64__) || defined(__AVR_AT90CAN128__) -#pragma mark __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_TIMER2_COMP, // 10 - gAvrInt_TIMER2_OVF, // 11 - gAvrInt_TIMER1_CAPT, // 12 - gAvrInt_TIMER1_COMPA, // 13 - gAvrInt_TIMER1_COMPB, // 14 - gAvrInt_TIMER1_COMPC, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMP, // 17 - gAvrInt_TIMER0_OVF, // 18 - gAvrInt_CAN_TrafnsferCE, // 19 - gAvrInt_CAN_TimerOverRun, // 20 - gAvrInt_SPI_STC, // 21 - gAvrInt_USART0_RX, // 22 - gAvrInt_USART0_UDRE, // 23 - gAvrInt_USART0_TX, // 24 - gAvrInt_ANALOG_COMP, // 25 - gAvrInt_ADC, // 26 - gAvrInt_EE_READY, // 27 - gAvrInt_TIMER3_CAPT, // 28 - gAvrInt_TIMER3_COMPA, // 29 - gAvrInt_TIMER3_COMPB, // 30 - gAvrInt_TIMER3_COMPC, // 31 - gAvrInt_TIMER3_OVF, // 32 - gAvrInt_USART1_RX, // 33 - gAvrInt_USART1_UDRE, // 34 - gAvrInt_USART1_TX, // 35 - gAvrInt_TWI, // 36 - gAvrInt_SPM_READY, // 37 -}; - -#endif - -//************************************************************************************************** -#if defined (__AVR_ATmega128RFA1__) -#pragma mark __AVR_ATmega128RFA1__ -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - //* Atmel changed the number scheme for interrupt vectors - gAvrInt_RESET, // 0 - gAvrInt_INT0, // 1 - gAvrInt_INT1, // 2 - gAvrInt_INT2, // 3 - gAvrInt_INT3, // 4 - gAvrInt_INT4, // 5 - gAvrInt_INT5, // 6 - gAvrInt_INT6, // 7 - gAvrInt_INT7, // 8 - gAvrInt_PCINT0, // 9 - gAvrInt_PCINT1, // 10 - gAvrInt_PCINT2, // 11 - gAvrInt_WDT, // 12 - gAvrInt_TIMER2_COMPA, // 13 - gAvrInt_TIMER2_COMPB, // 14 - gAvrInt_TIMER2_OVF, // 15 - gAvrInt_TIMER1_CAPT, // 16 - gAvrInt_TIMER1_COMPA, // 17 - gAvrInt_TIMER1_COMPB, // 18 - gAvrInt_TIMER1_COMPC, // 19 - gAvrInt_TIMER1_OVF, // 20 - gAvrInt_TIMER0_COMPA, // 21 - gAvrInt_TIMER0_COMPB, // 22 - gAvrInt_TIMER0_OVF, // 23 - gAvrInt_SPI_STC, // 24 - gAvrInt_USART0_RX, // 25 - gAvrInt_USART0_UDRE, // 26 - gAvrInt_USART0_TX, // 27 - gAvrInt_ANALOG_COMP, // 28 - gAvrInt_ADC, // 29 - gAvrInt_EE_READY, // 30 - gAvrInt_TIMER3_CAPT, // 31 - gAvrInt_TIMER3_COMPA, // 32 - gAvrInt_TIMER3_COMPB, // 33 - gAvrInt_TIMER3_COMPC, // 34 - gAvrInt_TIMER3_OVF, // 35 - gAvrInt_USART1_RX, // 36 - gAvrInt_USART1_UDRE, // 37 - gAvrInt_USART1_TX, // 38 - gAvrInt_TWI, // 39 - gAvrInt_SPM_READY, // 40 - gAvrInt_TIMER4_CAPT, // 41 - gAvrInt_TIMER4_COMPA, // 42 - gAvrInt_TIMER4_COMPB, // 43 - gAvrInt_TIMER4_COMPC, // 44 - gAvrInt_TIMER4_OVF, // 45 - gAvrInt_TIMER5_CAPT, // 46 - gAvrInt_TIMER5_COMPA, // 47 - gAvrInt_TIMER5_COMPB, // 48 - gAvrInt_TIMER5_COMPC, // 49 - gAvrInt_TIMER5_OVF, // 50 -#if 1 - gAvrInt_RESERVED, // 51 - gAvrInt_RESERVED, // 52 - gAvrInt_RESERVED, // 53 - - gAvrInt_RESERVED, // 54 - gAvrInt_RESERVED, // 55 - gAvrInt_RESERVED, // 56 - -#else - gAvrInt_USART2_RX, // 51 - gAvrInt_USART2_UDRE, // 52 - gAvrInt_USART2_TX, // 53 - - gAvrInt_USART3_RX, // 54 - gAvrInt_USART3_UDRE, // 55 - gAvrInt_USART3_TX, // 56 -#endif - gAvrInt_TRN_PLL_LOCK, // 57 - gAvrInt_TRN_PLL_UNLOCK, // 58 - gAvrInt_TRN_RX_START, // 59 - gAvrInt_TRN_RX_END, // 60 - gAvrInt_TRN_CAAED_DONE, // 61 - gAvrInt_TRN_FRAME_MATCH,// 62 - gAvrInt_TRN_TX_END, // 63 - gAvrInt_TRN_AWAKE, // 64 - - gAvrInt_SCNT_CMP1, // 65 - gAvrInt_SCNT_CMP2, // 66 - gAvrInt_SCNT_CMP3, // 67 - gAvrInt_SCNT_OVFL, // 68 - gAvrInt_SCNT_BACKOFF, // 69 - gAvrInt_AES_READY, // 70 - gAvrInt_BAT_LOW, // 71 - - -}; - -#endif - - -#if !defined(_INTERRUPT_NAMES_DEFINED_) - #warning No interrupt string defs for this cpu -#endif - diff --git a/bootloaders/stk500v2/command.h b/bootloaders/stk500v2/command.h deleted file mode 100644 index 03b1b38..0000000 --- a/bootloaders/stk500v2/command.h +++ /dev/null @@ -1,114 +0,0 @@ -//**** ATMEL AVR - A P P L I C A T I O N N O T E ************************ -//* -//* Title: AVR068 - STK500 Communication Protocol -//* Filename: command.h -//* Version: 1.0 -//* Last updated: 31.01.2005 -//* -//* Support E-mail: avr@atmel.com -//* -//************************************************************************** - -// *****************[ STK message constants ]*************************** - -#define MESSAGE_START 0x1B //= ESC = 27 decimal -#define TOKEN 0x0E - -// *****************[ STK general command constants ]************************** - -#define CMD_SIGN_ON 0x01 -#define CMD_SET_PARAMETER 0x02 -#define CMD_GET_PARAMETER 0x03 -#define CMD_SET_DEVICE_PARAMETERS 0x04 -#define CMD_OSCCAL 0x05 -#define CMD_LOAD_ADDRESS 0x06 -#define CMD_FIRMWARE_UPGRADE 0x07 - - -// *****************[ STK ISP command constants ]****************************** - -#define CMD_ENTER_PROGMODE_ISP 0x10 -#define CMD_LEAVE_PROGMODE_ISP 0x11 -#define CMD_CHIP_ERASE_ISP 0x12 -#define CMD_PROGRAM_FLASH_ISP 0x13 -#define CMD_READ_FLASH_ISP 0x14 -#define CMD_PROGRAM_EEPROM_ISP 0x15 -#define CMD_READ_EEPROM_ISP 0x16 -#define CMD_PROGRAM_FUSE_ISP 0x17 -#define CMD_READ_FUSE_ISP 0x18 -#define CMD_PROGRAM_LOCK_ISP 0x19 -#define CMD_READ_LOCK_ISP 0x1A -#define CMD_READ_SIGNATURE_ISP 0x1B -#define CMD_READ_OSCCAL_ISP 0x1C -#define CMD_SPI_MULTI 0x1D - -// *****************[ STK PP command constants ]******************************* - -#define CMD_ENTER_PROGMODE_PP 0x20 -#define CMD_LEAVE_PROGMODE_PP 0x21 -#define CMD_CHIP_ERASE_PP 0x22 -#define CMD_PROGRAM_FLASH_PP 0x23 -#define CMD_READ_FLASH_PP 0x24 -#define CMD_PROGRAM_EEPROM_PP 0x25 -#define CMD_READ_EEPROM_PP 0x26 -#define CMD_PROGRAM_FUSE_PP 0x27 -#define CMD_READ_FUSE_PP 0x28 -#define CMD_PROGRAM_LOCK_PP 0x29 -#define CMD_READ_LOCK_PP 0x2A -#define CMD_READ_SIGNATURE_PP 0x2B -#define CMD_READ_OSCCAL_PP 0x2C - -#define CMD_SET_CONTROL_STACK 0x2D - -// *****************[ STK HVSP command constants ]***************************** - -#define CMD_ENTER_PROGMODE_HVSP 0x30 -#define CMD_LEAVE_PROGMODE_HVSP 0x31 -#define CMD_CHIP_ERASE_HVSP 0x32 -#define CMD_PROGRAM_FLASH_HVSP ` 0x33 -#define CMD_READ_FLASH_HVSP 0x34 -#define CMD_PROGRAM_EEPROM_HVSP 0x35 -#define CMD_READ_EEPROM_HVSP 0x36 -#define CMD_PROGRAM_FUSE_HVSP 0x37 -#define CMD_READ_FUSE_HVSP 0x38 -#define CMD_PROGRAM_LOCK_HVSP 0x39 -#define CMD_READ_LOCK_HVSP 0x3A -#define CMD_READ_SIGNATURE_HVSP 0x3B -#define CMD_READ_OSCCAL_HVSP 0x3C - -// *****************[ STK status constants ]*************************** - -// Success -#define STATUS_CMD_OK 0x00 - -// Warnings -#define STATUS_CMD_TOUT 0x80 -#define STATUS_RDY_BSY_TOUT 0x81 -#define STATUS_SET_PARAM_MISSING 0x82 - -// Errors -#define STATUS_CMD_FAILED 0xC0 -#define STATUS_CKSUM_ERROR 0xC1 -#define STATUS_CMD_UNKNOWN 0xC9 - -// *****************[ STK parameter constants ]*************************** -#define PARAM_BUILD_NUMBER_LOW 0x80 -#define PARAM_BUILD_NUMBER_HIGH 0x81 -#define PARAM_HW_VER 0x90 -#define PARAM_SW_MAJOR 0x91 -#define PARAM_SW_MINOR 0x92 -#define PARAM_VTARGET 0x94 -#define PARAM_VADJUST 0x95 -#define PARAM_OSC_PSCALE 0x96 -#define PARAM_OSC_CMATCH 0x97 -#define PARAM_SCK_DURATION 0x98 -#define PARAM_TOPCARD_DETECT 0x9A -#define PARAM_STATUS 0x9C -#define PARAM_DATA 0x9D -#define PARAM_RESET_POLARITY 0x9E -#define PARAM_CONTROLLER_INIT 0x9F - -// *****************[ STK answer constants ]*************************** - -#define ANSWER_CKSUM_ERROR 0xB0 - diff --git a/bootloaders/stk500v2/stk500boot.c b/bootloaders/stk500v2/stk500boot.c deleted file mode 100644 index 0b49dff..0000000 --- a/bootloaders/stk500v2/stk500boot.c +++ /dev/null @@ -1,2122 +0,0 @@ -/***************************************************************************** -Title: STK500v2 compatible bootloader - Modified for Wiring board ATMega128-16MHz -Author: Peter Fleury http://jump.to/fleury -Compiler: avr-gcc 3.4.5 or 4.1 / avr-libc 1.4.3 -Hardware: All AVRs with bootloader support, tested with ATmega8 -License: GNU General Public License - -Modified: Worapoht Kornkaewwattanakul http://www.avride.com -Date: 17 October 2007 -Update: 1st, 29 Dec 2007 : Enable CMD_SPI_MULTI but ignore unused command by return 0x00 byte response.. -Compiler: WINAVR20060421 -Description: add timeout feature like previous Wiring bootloader - -DESCRIPTION: - This program allows an AVR with bootloader capabilities to - read/write its own Flash/EEprom. To enter Programming mode - an input pin is checked. If this pin is pulled low, programming mode - is entered. If not, normal execution is done from $0000 - "reset" vector in Application area. - Size fits into a 1024 word bootloader section - when compiled with avr-gcc 4.1 - (direct replace on Wiring Board without fuse setting changed) - -USAGE: - - Set AVR MCU type and clock-frequency (F_CPU) in the Makefile. - - Set baud rate below (AVRISP only works with 115200 bps) - - compile/link the bootloader with the supplied Makefile - - program the "Boot Flash section size" (BOOTSZ fuses), - for boot-size 1024 words: program BOOTSZ01 - - enable the BOOT Reset Vector (program BOOTRST) - - Upload the hex file to the AVR using any ISP programmer - - Program Boot Lock Mode 3 (program BootLock 11 and BootLock 12 lock bits) // (leave them) - - Reset your AVR while keeping PROG_PIN pulled low // (for enter bootloader by switch) - - Start AVRISP Programmer (AVRStudio/Tools/Program AVR) - - AVRISP will detect the bootloader - - Program your application FLASH file and optional EEPROM file using AVRISP - -Note: - Erasing the device without flashing, through AVRISP GUI button "Erase Device" - is not implemented, due to AVRStudio limitations. - Flash is always erased before programming. - - AVRdude: - Please uncomment #define REMOVE_CMD_SPI_MULTI when using AVRdude. - Comment #define REMOVE_PROGRAM_LOCK_BIT_SUPPORT to reduce code size - Read Fuse Bits and Read/Write Lock Bits is not supported - -NOTES: - Based on Atmel Application Note AVR109 - Self-programming - Based on Atmel Application Note AVR068 - STK500v2 Protocol - -LICENSE: - Copyright (C) 2006 Peter Fleury - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -*****************************************************************************/ - -//************************************************************************ -//* Edit History -//************************************************************************ -//* Jul 7, 2010 = Mark Sproul msproul@skycharoit.com -//* Jul 7, 2010 Working on mega2560. No Auto-restart -//* Jul 7, 2010 Switched to 8K bytes (4K words) so that we have room for the monitor -//* Jul 8, 2010 Found older version of source that had auto restart, put that code back in -//* Jul 8, 2010 Adding monitor code -//* Jul 11, 2010 Added blinking LED while waiting for download to start -//* Jul 11, 2010 Added EEPROM test -//* Jul 29, 2010 Added recchar_timeout for timing out on bootloading -//* Aug 23, 2010 Added support for atmega2561 -//* Aug 26, 2010 Removed support for BOOT_BY_SWITCH -//* Sep 8, 2010 Added support for atmega16 -//* Nov 9, 2010 Issue 392:Fixed bug that 3 !!! in code would cause it to jump to monitor -//* Jun 24, 2011 Removed analogRead (was not used) -//* Dec 29, 2011 Issue 181: added watch dog timmer support -//* Dec 29, 2011 Issue 505: bootloader is comparing the seqNum to 1 or the current sequence -//* Jan 1, 2012 Issue 543: CMD_CHIP_ERASE_ISP now returns STATUS_CMD_FAILED instead of STATUS_CMD_OK -//* Jan 1, 2012 Issue 543: Write EEPROM now does something (NOT TESTED) -//* Jan 1, 2012 Issue 544: stk500v2 bootloader doesn't support reading fuses -//************************************************************************ - -//************************************************************************ -//* these are used to test issues -//* http://code.google.com/p/arduino/issues/detail?id=505 -//* Reported by mark.stubbs, Mar 14, 2011 -//* The STK500V2 bootloader is comparing the seqNum to 1 or the current sequence -//* (IE: Requiring the sequence to be 1 or match seqNum before continuing). -//* The correct behavior is for the STK500V2 to accept the PC's sequence number, and echo it back for the reply message. -#define _FIX_ISSUE_505_ -//************************************************************************ -//* Issue 181: added watch dog timmer support -#define _FIX_ISSUE_181_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#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 -#ifndef EEMWE - #define EEMWE 2 -#endif - -//#define _DEBUG_SERIAL_ -//#define _DEBUG_WITH_LEDS_ - - -/* - * 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_CMD_SPI_MULTI // disable processing of SPI_MULTI commands, Remark this line for AVRDUDE -// - - - -//************************************************************************ -//* LED on pin "PROGLED_PIN" on port "PROGLED_PORT" -//* indicates that bootloader is active -//* PG2 -> LED on Wiring board -//************************************************************************ -#define BLINK_LED_WHILE_WAITING - -#ifdef _MEGA_BOARD_ - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB7 -#elif defined( _BOARD_AMBER128_ ) - //* this is for the amber 128 http://www.soc-robotics.com/ - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTD - #define PROGLED_DDR DDRD - #define PROGLED_PIN PINE7 -#elif defined( _CEREBOTPLUS_BOARD_ ) || defined(_CEREBOT_II_BOARD_) - //* this is for the Cerebot 2560 board and the Cerebot-ii - //* onbarod leds are on PORTE4-7 - #define PROGLED_PORT PORTE - #define PROGLED_DDR DDRE - #define PROGLED_PIN PINE7 -#elif defined( _PENGUINO_ ) - //* this is for the Penguino - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTC - #define PROGLED_DDR DDRC - #define PROGLED_PIN PINC6 -#elif defined( _ANDROID_2561_ ) || defined( __AVR_ATmega2561__ ) - //* this is for the Boston Android 2561 - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA3 -#elif defined( _BOARD_MEGA16 ) - //* onbarod led is PORTA7 - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA7 - #define UART_BAUDRATE_DOUBLE_SPEED 0 - -#elif defined( _BOARD_BAHBOT_ ) - //* dosent have an onboard LED but this is what will probably be added to this port - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB0 - -#elif defined( _BOARD_ROBOTX_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB6 -#elif defined( _BOARD_CUSTOM1284_BLINK_B0_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB0 -#elif defined( _BOARD_CUSTOM1284_ ) - #define PROGLED_PORT PORTD - #define PROGLED_DDR DDRD - #define PROGLED_PIN PIND5 -#elif defined( _AVRLIP_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB5 -#elif defined( _BOARD_STK500_ ) - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA7 -#elif defined( _BOARD_STK502_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB5 -#elif defined( _BOARD_STK525_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB7 -#else - #define PROGLED_PORT PORTG - #define PROGLED_DDR DDRG - #define PROGLED_PIN PING2 -#endif - - - -/* - * define CPU frequency in Mhz here if not defined in Makefile - */ -#ifndef F_CPU - #define F_CPU 16000000UL -#endif - -#define _BLINK_LOOP_COUNT_ (F_CPU / 2250) -/* - * UART Baudrate, AVRStudio AVRISP only accepts 115200 bps - */ - -#ifndef BAUDRATE - #define BAUDRATE 115200 -#endif - -/* - * Enable (1) or disable (0) USART double speed operation - */ -#ifndef UART_BAUDRATE_DOUBLE_SPEED - #if defined (__AVR_ATmega32__) - #define UART_BAUDRATE_DOUBLE_SPEED 0 - #else - #define UART_BAUDRATE_DOUBLE_SPEED 1 - #endif -#endif - -/* - * HW and SW version, reported to AVRISP, must match version of AVRStudio - */ -#define CONFIG_PARAM_BUILD_NUMBER_LOW 0 -#define CONFIG_PARAM_BUILD_NUMBER_HIGH 0 -#define CONFIG_PARAM_HW_VER 0x0F -#define CONFIG_PARAM_SW_MAJOR 2 -#define CONFIG_PARAM_SW_MINOR 0x0A - -/* - * Calculate the address where the bootloader starts from FLASHEND and BOOTSIZE - * (adjust BOOTSIZE below and BOOTLOADER_ADDRESS in Makefile if you want to change the size of the bootloader) - */ -//#define BOOTSIZE 1024 -#if FLASHEND > 0x0F000 - #define BOOTSIZE 8192 -#else - #define BOOTSIZE 2048 -#endif - -#define APP_END (FLASHEND -(2*BOOTSIZE) + 1) - -/* - * Signature bytes are not available in avr-gcc io_xxx.h - */ -#if defined (__AVR_ATmega8__) - #define SIGNATURE_BYTES 0x1E9307 -#elif defined (__AVR_ATmega16__) - #define SIGNATURE_BYTES 0x1E9403 -#elif defined (__AVR_ATmega32__) - #define SIGNATURE_BYTES 0x1E9502 -#elif defined (__AVR_ATmega8515__) - #define SIGNATURE_BYTES 0x1E9306 -#elif defined (__AVR_ATmega8535__) - #define SIGNATURE_BYTES 0x1E9308 -#elif defined (__AVR_ATmega162__) - #define SIGNATURE_BYTES 0x1E9404 -#elif defined (__AVR_ATmega128__) - #define SIGNATURE_BYTES 0x1E9702 -#elif defined (__AVR_ATmega1280__) - #define SIGNATURE_BYTES 0x1E9703 -#elif defined (__AVR_ATmega2560__) - #define SIGNATURE_BYTES 0x1E9801 -#elif defined (__AVR_ATmega2561__) - #define SIGNATURE_BYTES 0x1e9802 -#elif defined (__AVR_ATmega1284P__) - #define SIGNATURE_BYTES 0x1e9705 -#elif defined (__AVR_ATmega640__) - #define SIGNATURE_BYTES 0x1e9608 -#elif defined (__AVR_ATmega64__) - #define SIGNATURE_BYTES 0x1E9602 -#elif defined (__AVR_ATmega169__) - #define SIGNATURE_BYTES 0x1e9405 -#elif defined (__AVR_AT90USB1287__) - #define SIGNATURE_BYTES 0x1e9782 -#else - #error "no signature definition for MCU available" -#endif - - -#if defined(_BOARD_ROBOTX_) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) - #define UART_BAUD_RATE_LOW UBRR1L - #define UART_STATUS_REG UCSR1A - #define UART_CONTROL_REG UCSR1B - #define UART_ENABLE_TRANSMITTER TXEN1 - #define UART_ENABLE_RECEIVER RXEN1 - #define UART_TRANSMIT_COMPLETE TXC1 - #define UART_RECEIVE_COMPLETE RXC1 - #define UART_DATA_REG UDR1 - #define UART_DOUBLE_SPEED U2X1 - -#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ - || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) - /* ATMega8 with one USART */ - #define UART_BAUD_RATE_LOW UBRRL - #define UART_STATUS_REG UCSRA - #define UART_CONTROL_REG UCSRB - #define UART_ENABLE_TRANSMITTER TXEN - #define UART_ENABLE_RECEIVER RXEN - #define UART_TRANSMIT_COMPLETE TXC - #define UART_RECEIVE_COMPLETE RXC - #define UART_DATA_REG UDR - #define UART_DOUBLE_SPEED U2X - -#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega162__) \ - || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) - /* ATMega with two USART, use UART0 */ - #define UART_BAUD_RATE_LOW UBRR0L - #define UART_STATUS_REG UCSR0A - #define UART_CONTROL_REG UCSR0B - #define UART_ENABLE_TRANSMITTER TXEN0 - #define UART_ENABLE_RECEIVER RXEN0 - #define UART_TRANSMIT_COMPLETE TXC0 - #define UART_RECEIVE_COMPLETE RXC0 - #define UART_DATA_REG UDR0 - #define UART_DOUBLE_SPEED U2X0 -#elif defined(UBRR0L) && defined(UCSR0A) && defined(TXEN0) - /* ATMega with two USART, use UART0 */ - #define UART_BAUD_RATE_LOW UBRR0L - #define UART_STATUS_REG UCSR0A - #define UART_CONTROL_REG UCSR0B - #define UART_ENABLE_TRANSMITTER TXEN0 - #define UART_ENABLE_RECEIVER RXEN0 - #define UART_TRANSMIT_COMPLETE TXC0 - #define UART_RECEIVE_COMPLETE RXC0 - #define UART_DATA_REG UDR0 - #define UART_DOUBLE_SPEED U2X0 -#elif defined(UBRRL) && defined(UCSRA) && defined(UCSRB) && defined(TXEN) && defined(RXEN) - //* catch all - #define UART_BAUD_RATE_LOW UBRRL - #define UART_STATUS_REG UCSRA - #define UART_CONTROL_REG UCSRB - #define UART_ENABLE_TRANSMITTER TXEN - #define UART_ENABLE_RECEIVER RXEN - #define UART_TRANSMIT_COMPLETE TXC - #define UART_RECEIVE_COMPLETE RXC - #define UART_DATA_REG UDR - #define UART_DOUBLE_SPEED U2X -#else - #error "no UART definition for MCU available" -#endif - - - -/* - * Macro to calculate UBBR from XTAL and baudrate - */ -#if defined(__AVR_ATmega32__) && UART_BAUDRATE_DOUBLE_SPEED - #define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu / 4 / baudRate - 1) / 2) -#elif defined(__AVR_ATmega32__) - #define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu / 8 / baudRate - 1) / 2) -#elif UART_BAUDRATE_DOUBLE_SPEED - #define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*8.0)-1.0+0.5) -#else - #define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*16.0)-1.0+0.5) -#endif - - -/* - * States used in the receive state machine - */ -#define ST_START 0 -#define ST_GET_SEQ_NUM 1 -#define ST_MSG_SIZE_1 2 -#define ST_MSG_SIZE_2 3 -#define ST_GET_TOKEN 4 -#define ST_GET_DATA 5 -#define ST_GET_CHECK 6 -#define ST_PROCESS 7 - -/* - * use 16bit address variable for ATmegas with <= 64K flash - */ -#if defined(RAMPZ) - typedef uint32_t address_t; -#else - typedef uint16_t address_t; -#endif - -/* - * function prototypes - */ -static void sendchar(char c); -static unsigned char recchar(void); - -/* - * since this bootloader is not linked against the avr-gcc crt1 functions, - * to reduce the code size, we need to provide our own initialization - */ -void __jumpMain (void) __attribute__ ((naked)) __attribute__ ((section (".init9"))); -#include - -//#define SPH_REG 0x3E -//#define SPL_REG 0x3D - -//***************************************************************************** -void __jumpMain(void) -{ -//* July 17, 2010 Added stack pointer initialzation -//* the first line did not do the job on the ATmega128 - - asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); - -//* set stack pointer to top of RAM - - asm volatile ( "ldi 16, %0" :: "i" (RAMEND >> 8) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); - - asm volatile ( "ldi 16, %0" :: "i" (RAMEND & 0x0ff) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - - asm volatile ( "clr __zero_reg__" ); // GCC depends on register r1 set to 0 - asm volatile ( "out %0, __zero_reg__" :: "I" (_SFR_IO_ADDR(SREG)) ); // set SREG to 0 - asm volatile ( "jmp main"); // jump to main() -} - - -//***************************************************************************** -void delay_ms(unsigned int timedelay) -{ - unsigned int i; - for (i=0;i> 1) -//***************************************************************************** -static unsigned char recchar_timeout(void) -{ -uint32_t count = 0; - - while (!(UART_STATUS_REG & (1 << UART_RECEIVE_COMPLETE))) - { - // wait for data - count++; - if (count > MAX_TIME_COUNT) - { - unsigned int data; - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(0); //* get the first word of the user program - #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. - { - asm volatile( - "clr r30 \n\t" - "clr r31 \n\t" - "ijmp \n\t" - ); - } - count = 0; - } - } - return UART_DATA_REG; -} - -//* for watch dog timer startup -void (*app_start)(void) = 0x0000; - - -//***************************************************************************** -int main(void) -{ - address_t address = 0; - address_t eraseAddress = 0; - unsigned char msgParseState; - unsigned int ii = 0; - unsigned char checksum = 0; - unsigned char seqNum = 0; - unsigned int msgLength = 0; - unsigned char msgBuffer[285]; - unsigned char c, *p; - unsigned char isLeave = 0; - - unsigned long boot_timeout; - unsigned long boot_timer; - unsigned int boot_state; -#ifdef ENABLE_MONITOR - unsigned int exPointCntr = 0; - 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) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); - asm volatile ( "ldi 16, %0" :: "i" (RAMEND & 0x0ff) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - -#ifdef _FIX_ISSUE_181_ - //************************************************************************ - //* Dec 29, 2011 Issue #181, added watch dog timmer support - //* handle the watch dog timer - uint8_t mcuStatusReg; - mcuStatusReg = MCUSR; - - __asm__ __volatile__ ("cli"); - __asm__ __volatile__ ("wdr"); - MCUSR = 0; - WDTCSR |= _BV(WDCE) | _BV(WDE); - WDTCSR = 0; - __asm__ __volatile__ ("sei"); - // check if WDT generated the reset, if so, go straight to app - if (mcuStatusReg & _BV(WDRF)) - { - app_start(); - } - //************************************************************************ -#endif - - - boot_timer = 0; - boot_state = 0; - -#ifdef BLINK_LED_WHILE_WAITING -// boot_timeout = 90000; //* should be about 4 seconds -// boot_timeout = 170000; - boot_timeout = 20000; //* should be about 1 second -#else - boot_timeout = 3500000; // 7 seconds , approx 2us per step when optimize "s" -#endif - /* - * Branch to bootloader or application code ? - */ - -#ifndef REMOVE_BOOTLOADER_LED - /* PROG_PIN pulled low, indicate with LED that bootloader is active */ - PROGLED_DDR |= (1< 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) - { - //* toggle the LED - PROGLED_PORT ^= (1<> 16) & 0x000000FF; - } - else if ( signatureIndex == 1 ) - { - answerByte = (SIGNATURE_BYTES >> 8) & 0x000000FF; - } - else - { - answerByte = SIGNATURE_BYTES & 0x000000FF; - } - } - else if ( msgBuffer[4] & 0x50 ) - { - //* 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) - { - answerByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - } - else if (msgBuffer[4] == 0x58) - { - answerByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - } - else - { - answerByte = 0; - } - } - else - { - answerByte = 0; // for all others command are not implemented, return dummy value for AVRDUDE happy - } - if ( !flag ) - { - msgLength = 7; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = 0; - msgBuffer[3] = msgBuffer[4]; - msgBuffer[4] = 0; - msgBuffer[5] = answerByte; - msgBuffer[6] = STATUS_CMD_OK; - } - } - break; - #endif - case CMD_SIGN_ON: - msgLength = 11; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = 8; - msgBuffer[3] = 'A'; - msgBuffer[4] = 'V'; - msgBuffer[5] = 'R'; - msgBuffer[6] = 'I'; - msgBuffer[7] = 'S'; - msgBuffer[8] = 'P'; - msgBuffer[9] = '_'; - msgBuffer[10] = '2'; - break; - - case CMD_GET_PARAMETER: - { - unsigned char value; - - switch(msgBuffer[1]) - { - case PARAM_BUILD_NUMBER_LOW: - value = CONFIG_PARAM_BUILD_NUMBER_LOW; - break; - case PARAM_BUILD_NUMBER_HIGH: - value = CONFIG_PARAM_BUILD_NUMBER_HIGH; - break; - case PARAM_HW_VER: - value = CONFIG_PARAM_HW_VER; - break; - case PARAM_SW_MAJOR: - value = CONFIG_PARAM_SW_MAJOR; - break; - case PARAM_SW_MINOR: - value = CONFIG_PARAM_SW_MINOR; - break; - default: - value = 0; - break; - } - msgLength = 3; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = value; - } - break; - - case CMD_LEAVE_PROGMODE_ISP: - isLeave = 1; - //* fall thru - - case CMD_SET_PARAMETER: - case CMD_ENTER_PROGMODE_ISP: - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - break; - - case CMD_READ_SIGNATURE_ISP: - { - unsigned char signatureIndex = msgBuffer[4]; - unsigned char signature; - - if ( signatureIndex == 0 ) - signature = (SIGNATURE_BYTES >>16) & 0x000000FF; - else if ( signatureIndex == 1 ) - signature = (SIGNATURE_BYTES >> 8) & 0x000000FF; - else - signature = SIGNATURE_BYTES & 0x000000FF; - - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = signature; - msgBuffer[3] = STATUS_CMD_OK; - } - break; - - case CMD_READ_LOCK_ISP: - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = boot_lock_fuse_bits_get( GET_LOCK_BITS ); - msgBuffer[3] = STATUS_CMD_OK; - break; - - case CMD_READ_FUSE_ISP: - { - unsigned char fuseBits; - - if ( msgBuffer[2] == 0x50 ) - { - if ( msgBuffer[3] == 0x08 ) - fuseBits = boot_lock_fuse_bits_get( GET_EXTENDED_FUSE_BITS ); - else - fuseBits = boot_lock_fuse_bits_get( GET_LOW_FUSE_BITS ); - } - else - { - fuseBits = boot_lock_fuse_bits_get( GET_HIGH_FUSE_BITS ); - } - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = fuseBits; - msgBuffer[3] = STATUS_CMD_OK; - } - break; - - #ifndef REMOVE_PROGRAM_LOCK_BIT_SUPPORT - case CMD_PROGRAM_LOCK_ISP: - { - unsigned char lockBits = msgBuffer[4]; - - lockBits = (~lockBits) & 0x3C; // mask BLBxx bits - boot_lock_bits_set(lockBits); // and program it - boot_spm_busy_wait(); - - msgLength = 3; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = STATUS_CMD_OK; - } - break; - #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 - break; - - 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; - #else - address = ( ((msgBuffer[3])<<8)|(msgBuffer[4]) )<<1; //convert word to byte address - #endif - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - break; - - case CMD_PROGRAM_FLASH_ISP: - case CMD_PROGRAM_EEPROM_ISP: - { - unsigned int size = ((msgBuffer[1])<<8) | msgBuffer[2]; - unsigned char *p = msgBuffer+10; - unsigned int data; - unsigned char highByte, lowByte; - address_t tempaddress = address; - - - if ( msgBuffer[0] == CMD_PROGRAM_FLASH_ISP ) - { - // erase only main section (bootloader protection) - if (eraseAddress < APP_END ) - { - boot_page_erase(eraseAddress); // Perform page erase - boot_spm_busy_wait(); // Wait until the memory is erased. - eraseAddress += SPM_PAGESIZE; // point to next page to be erase - } - - /* Write FLASH */ - do { - lowByte = *p++; - highByte = *p++; - - data = (highByte << 8) | lowByte; - boot_page_fill(address,data); - - address = address + 2; // Select next word in memory - size -= 2; // Reduce number of bytes to write by two - } while (size); // Loop until all bytes written - - boot_page_write(tempaddress); - boot_spm_busy_wait(); - boot_rww_enable(); // Re-enable the RWW section - } - else - { - //* issue 543, this should work, It has not been tested. - uint16_t ii = address >> 1; - /* write EEPROM */ - while (size) { - eeprom_write_byte((uint8_t*)ii, *p++); - address+=2; // Select next EEPROM byte - ii++; - size--; - } - } - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - } - break; - - 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; - - *p++ = STATUS_CMD_OK; - if (msgBuffer[0] == CMD_READ_FLASH_ISP ) - { - unsigned int data; - - // Read FLASH - do { - //#if defined(RAMPZ) - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(address); - #else - data = pgm_read_word_near(address); - #endif - *p++ = (unsigned char)data; //LSB - *p++ = (unsigned char)(data >> 8); //MSB - address += 2; // Select next word in memory - size -= 2; - }while (size); - } - else - { - /* Read EEPROM */ - do { - EEARL = address; // Setup EEPROM address - EEARH = ((address >> 8)); - address++; // Select next EEPROM byte - EECR |= (1<>8)&0xFF); - sendchar(c); - checksum ^= c; - - c = msgLength&0x00FF; - sendchar(c); - checksum ^= c; - - sendchar(TOKEN); - checksum ^= TOKEN; - - p = msgBuffer; - while ( msgLength ) - { - c = *p++; - sendchar(c); - checksum ^=c; - msgLength--; - } - sendchar(checksum); - seqNum++; - - #ifndef REMOVE_BOOTLOADER_LED - //* toggle the LED - PROGLED_PORT ^= (1< - - -base address = f000 -avrdude: Device signature = 0x1e9703 -avrdude: safemode: lfuse reads as FF -avrdude: safemode: hfuse reads as D8 -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.ppg b/bootloaders/stk500v2/stk500boot.ppg deleted file mode 100644 index a8929d7..0000000 --- a/bootloaders/stk500v2/stk500boot.ppg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex deleted file mode 100644 index 68d2e18..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex +++ /dev/null @@ -1,469 +0,0 @@ -:020000023000CC -: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 -- cgit v1.2.3-18-g5258