/*
LUFA Library
- Copyright (C) Dean Camera, 2013.
+ Copyright (C) Dean Camera, 2021.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2021 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
+ #include <util/delay.h>
#include "Descriptors.h"
+ #include "BootloaderAPI.h"
- #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Board/LEDs.h>
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Platform/Platform.h>
+
+ /* Preprocessor Checks: */
+ #if !defined(__OPTIMIZE_SIZE__)
+ #error This bootloader requires that it be optimized for size, not speed, to fit into the target device. Change optimization settings and try again.
+ #endif
/* Macros: */
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_USB_BUSY LEDS_LED2
+ /** Magic bootloader key to unlock forced application start mode. */
+ #define MAGIC_BOOT_KEY 0xDC42
+
+ /* Type Defines: */
+ #if (FLASHEND > 0xFFFF)
+ typedef uint32_t flashaddr_t;
+ #else
+ typedef uint16_t flashaddr_t;
+ #endif
+
/* Enums: */
/** Intel HEX parser state machine states. */
enum HEX_Parser_States_t