+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- * Header file for PDIProtocol.c.\r
- */\r
-\r
-#ifndef _PDI_PROTOCOL_\r
-#define _PDI_PROTOCOL_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- #include <util/delay.h>\r
- #include <stdio.h>\r
- \r
- #include "V2Protocol.h"\r
- #include "PDITarget.h"\r
- #include "XMEGANVM.h"\r
-\r
- /* Preprocessor Checks: */\r
- #if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))\r
- #undef ENABLE_ISP_PROTOCOL\r
- #undef ENABLE_TPI_PROTOCOL\r
- \r
- #if !defined(ENABLE_PDI_PROTOCOL)\r
- #define ENABLE_PDI_PROTOCOL\r
- #endif\r
- #endif\r
- \r
- /* Macros: */\r
- #define XPRG_CMD_ENTER_PROGMODE 0x01\r
- #define XPRG_CMD_LEAVE_PROGMODE 0x02\r
- #define XPRG_CMD_ERASE 0x03\r
- #define XPRG_CMD_WRITE_MEM 0x04\r
- #define XPRG_CMD_READ_MEM 0x05\r
- #define XPRG_CMD_CRC 0x06\r
- #define XPRG_CMD_SET_PARAM 0x07\r
-\r
- #define XPRG_MEM_TYPE_APPL 1\r
- #define XPRG_MEM_TYPE_BOOT 2\r
- #define XPRG_MEM_TYPE_EEPROM 3\r
- #define XPRG_MEM_TYPE_FUSE 4\r
- #define XPRG_MEM_TYPE_LOCKBITS 5\r
- #define XPRG_MEM_TYPE_USERSIG 6\r
- #define XPRG_MEM_TYPE_FACTORY_CALIBRATION 7\r
-\r
- #define XPRG_ERASE_CHIP 1\r
- #define XPRG_ERASE_APP 2\r
- #define XPRG_ERASE_BOOT 3\r
- #define XPRG_ERASE_EEPROM 4\r
- #define XPRG_ERASE_APP_PAGE 5\r
- #define XPRG_ERASE_BOOT_PAGE 6\r
- #define XPRG_ERASE_EEPROM_PAGE 7\r
- #define XPRG_ERASE_USERSIG 8\r
-\r
- #define XPRG_MEM_WRITE_ERASE 0\r
- #define XPRG_MEM_WRITE_WRITE 1\r
-\r
- #define XPRG_CRC_APP 1\r
- #define XPRG_CRC_BOOT 2\r
- #define XPRG_CRC_FLASH 3\r
-\r
- #define XPRG_ERR_OK 0\r
- #define XPRG_ERR_FAILED 1\r
- #define XPRG_ERR_COLLISION 2\r
- #define XPRG_ERR_TIMEOUT 3\r
-\r
- #define XPRG_PARAM_NVMBASE 0x01\r
- #define XPRG_PARAM_EEPPAGESIZE 0x02\r
- \r
- #define XPRG_PROTOCOL_PDI 0x00\r
- #define XPRG_PROTOCOL_JTAG 0x01\r
- \r
- #define XPRG_PAGEMODE_WRITE (1 << 1)\r
- #define XPRG_PAGEMODE_ERASE (1 << 0)\r
- \r
- /* External Variables: */\r
- extern uint32_t XPROG_Param_NVMBase;\r
- \r
- /* Function Prototypes: */\r
- void PDIProtocol_XPROG_SetMode(void);\r
- void PDIProtocol_XPROG_Command(void);\r
- \r
- #if defined(INCLUDE_FROM_PDIPROTOCOL_C)\r
- static void PDIProtocol_EnterXPROGMode(void);\r
- static void PDIProtocol_LeaveXPROGMode(void);\r
- static void PDIProtocol_SetParam(void);\r
- static void PDIProtocol_Erase(void);\r
- static void PDIProtocol_WriteMemory(void);\r
- static void PDIProtocol_ReadMemory(void);\r
- static void PDIProtocol_ReadCRC(void);\r
- #endif\r
- \r
-#endif\r