X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/1a4a26271e32fba6e2430b7869ec4a8b4242e6e2..4cd80263ff477e81ab88dc76f32103f3852a0468:/Bootloaders/CDC/BootloaderCDC.h diff --git a/Bootloaders/CDC/BootloaderCDC.h b/Bootloaders/CDC/BootloaderCDC.h index 41280fe8f..b11fa8fe1 100644 --- a/Bootloaders/CDC/BootloaderCDC.h +++ b/Bootloaders/CDC/BootloaderCDC.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 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 @@ -46,7 +46,8 @@ #include #include "Descriptors.h" - #include "BootloaderAPI.h" + #include "BootloaderAPI.h" + #include "Config/AppConfig.h" #include #include @@ -64,16 +65,63 @@ /** Hardware version minor of the CDC bootloader. */ #define BOOTLOADER_HWVERSION_MINOR 0x00 - /** Eight character bootloader firmware identifier reported to the host when requested */ + /** Eight character bootloader firmware identifier reported to the host when requested. */ #define SOFTWARE_IDENTIFIER "LUFACDC" + /** Magic bootloader key to unlock forced application start mode. */ + #define MAGIC_BOOT_KEY 0xDC42 + + /* Enums: */ + /** Possible memory types that can be addressed via the bootloader. */ + enum AVR109_Memories + { + MEMORY_TYPE_FLASH = 'F', + MEMORY_TYPE_EEPROM = 'E', + }; + + /** Possible commands that can be issued to the bootloader. */ + enum AVR109_Commands + { + AVR109_COMMAND_Sync = 27, + AVR109_COMMAND_ReadEEPROM = 'd', + AVR109_COMMAND_WriteEEPROM = 'D', + AVR109_COMMAND_ReadFLASHWord = 'R', + AVR109_COMMAND_WriteFlashPage = 'm', + AVR109_COMMAND_FillFlashPageWordLow = 'c', + AVR109_COMMAND_FillFlashPageWordHigh = 'C', + AVR109_COMMAND_GetBlockWriteSupport = 'b', + AVR109_COMMAND_BlockWrite = 'B', + AVR109_COMMAND_BlockRead = 'g', + AVR109_COMMAND_ReadExtendedFuses = 'Q', + AVR109_COMMAND_ReadHighFuses = 'N', + AVR109_COMMAND_ReadLowFuses = 'F', + AVR109_COMMAND_ReadLockbits = 'r', + AVR109_COMMAND_WriteLockbits = 'l', + AVR109_COMMAND_EraseFLASH = 'e', + AVR109_COMMAND_ReadSignature = 's', + AVR109_COMMAND_ReadBootloaderVersion = 'V', + AVR109_COMMAND_ReadBootloaderIdentifier = 'S', + AVR109_COMMAND_ReadBootloaderInterface = 'p', + AVR109_COMMAND_SetCurrentAddress = 'A', + AVR109_COMMAND_ReadAutoAddressIncrement = 'a', + AVR109_COMMAND_ReadPartCode = 't', + AVR109_COMMAND_EnterProgrammingMode = 'P', + AVR109_COMMAND_LeaveProgrammingMode = 'L', + AVR109_COMMAND_SelectDeviceType = 'T', + AVR109_COMMAND_SetLED = 'x', + AVR109_COMMAND_ClearLED = 'y', + AVR109_COMMAND_ExitBootloader = 'E', + }; + /* Type Defines: */ /** Type define for a non-returning pointer to the start of the loaded application in flash memory. */ typedef void (*AppPtr_t)(void) ATTR_NO_RETURN; /* Function Prototypes: */ - void CDC_Task(void); - void SetupHardware(void); + static void CDC_Task(void); + static void SetupHardware(void); + + void Application_Jump_Check(void) ATTR_INIT_SECTION(3); void EVENT_USB_Device_ConfigurationChanged(void);