diff --git a/Projects/AVRISP/Lib/ISPTarget.h b/Projects/AVRISP/Lib/ISPTarget.h index 2af4541a99..62d8bbb4bc 100644 --- a/Projects/AVRISP/Lib/ISPTarget.h +++ b/Projects/AVRISP/Lib/ISPTarget.h @@ -61,13 +61,16 @@ /** Total number of allowable ISP programming speeds supported by the device */ #define TOTAL_ISP_PROGRAMMING_SPEEDS 7 + /** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */ + #define TARGET_BUSY_TIMEOUT_MS 100 + /* Function Prototypes: */ - uint8_t ISPTarget_GetSPIPrescalerMask(void); - void ISPTarget_ChangeTargetResetLine(const bool ResetTarget); - uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress, - const uint8_t PollValue, const uint8_t DelayMS, - const uint8_t ReadMemCommand); - uint8_t ISPTarget_WaitWhileTargetBusy(void); - void ISPTarget_LoadExtendedAddress(void); + uint8_t ISPTarget_GetSPIPrescalerMask(void); + void ISPTarget_ChangeTargetResetLine(const bool ResetTarget); + uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress, + const uint8_t PollValue, const uint8_t DelayMS, + const uint8_t ReadMemCommand); + uint8_t ISPTarget_WaitWhileTargetBusy(void); + void ISPTarget_LoadExtendedAddress(void); #endif diff --git a/Projects/AVRISP/Lib/PDIProtocol.h b/Projects/AVRISP/Lib/PDIProtocol.h index f2c38d5960..c1fbef466a 100644 --- a/Projects/AVRISP/Lib/PDIProtocol.h +++ b/Projects/AVRISP/Lib/PDIProtocol.h @@ -54,7 +54,7 @@ #define ENABLE_PDI_PROTOCOL #endif #endif - + /* Macros: */ #define XPRG_CMD_ENTER_PROGMODE 0x01 #define XPRG_CMD_LEAVE_PROGMODE 0x02 diff --git a/Projects/AVRISP/Lib/PDITarget.h b/Projects/AVRISP/Lib/PDITarget.h index da89d55f1d..cf7780c179 100644 --- a/Projects/AVRISP/Lib/PDITarget.h +++ b/Projects/AVRISP/Lib/PDITarget.h @@ -68,9 +68,11 @@ #define BITBANG_PDICLOCK_MASK RESET_LINE_MASK #endif + /** Total number of bits in a single USART frame */ #define BITS_IN_PDI_FRAME 12 - #define PDI_NVM_TIMEOUT_MS 200 + /** Timeout in milliseconds of a PDI busy-wait command */ + #define PDI_NVM_TIMEOUT_MS 100 #define PDI_CMD_LDS 0x00 #define PDI_CMD_LD 0x20 diff --git a/Projects/AVRISP/Lib/TINYNVM.c b/Projects/AVRISP/Lib/TINYNVM.c index 515e113859..206ea39f21 100644 --- a/Projects/AVRISP/Lib/TINYNVM.c +++ b/Projects/AVRISP/Lib/TINYNVM.c @@ -38,107 +38,6 @@ #if defined(ENABLE_TPI_PROTOCOL) || defined(__DOXYGEN__) -/** Sends the given NVM register address to the target. - * - * \param[in] Register NVM register whose absolute address is to be sent - */ -void TINYNVM_SendNVMRegAddress(const uint8_t Register) -{ - // TODO -} - -/** Sends the given 32-bit absolute address to the target. - * - * \param[in] AbsoluteAddress Absolute address to send to the target - */ -void TINYNVM_SendAddress(const uint32_t AbsoluteAddress) -{ - // TODO -} - -/** Waits while the target's NVM controller is busy performing an operation, exiting if the - * timeout period expires. - * - * \return Boolean true if the NVM controller became ready within the timeout period, false otherwise - */ -bool TINYNVM_WaitWhileNVMControllerBusy(void) -{ - // TODO - return false; -} - -/** Retrieves the CRC value of the given memory space. - * - * \param[in] CRCCommand NVM CRC command to issue to the target - * \param[out] CRCDest CRC Destination when read from the target - * - * \return Boolean true if the command sequence complete successfully - */ -bool TINYNVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest) -{ - // TODO - return true; -} - -/** Reads memory from the target's memory spaces. - * - * \param[in] ReadAddress Start address to read from within the target's address space - * \param[out] ReadBuffer Buffer to store read data into - * \param[in] ReadSize Number of bytes to read - * - * \return Boolean true if the command sequence complete successfully - */ -bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, const uint16_t ReadSize) -{ - // TODO - return true; -} - -/** Writes byte addressed memory to the target's memory spaces. - * - * \param[in] WriteCommand Command to send to the device to write each memory byte - * \param[in] WriteAddress Start address to write to within the target's address space - * \param[in] WriteBuffer Buffer to source data from - * - * \return Boolean true if the command sequence complete successfully - */ -bool TINYNVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t* WriteBuffer) -{ - // TODO - return true; -} - -/** Writes page addressed memory to the target's memory spaces. - * - * \param[in] WriteBuffCommand Command to send to the device to write a byte to the memory page buffer - * \param[in] EraseBuffCommand Command to send to the device to erase the memory page buffer - * \param[in] WritePageCommand Command to send to the device to write the page buffer to the destination memory - * \param[in] PageMode Bitfield indicating what operations need to be executed on the specified page - * \param[in] WriteAddress Start address to write the page data to within the target's address space - * \param[in] WriteBuffer Buffer to source data from - * \param[in] WriteSize Number of bytes to write - * - * \return Boolean true if the command sequence complete successfully - */ -bool TINYNVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand, - const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress, - const uint8_t* WriteBuffer, const uint16_t WriteSize) -{ - // TODO - return true; -} - -/** Erases a specific memory space of the target. - * - * \param[in] EraseCommand NVM erase command to send to the device - * \param[in] Address Address inside the memory space to erase - * - * \return Boolean true if the command sequence complete successfully - */ -bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address) -{ - // TODO - return true; -} +// TODO #endif diff --git a/Projects/AVRISP/Lib/TINYNVM.h b/Projects/AVRISP/Lib/TINYNVM.h index 585fce8c9b..eca3c98b88 100644 --- a/Projects/AVRISP/Lib/TINYNVM.h +++ b/Projects/AVRISP/Lib/TINYNVM.h @@ -43,6 +43,7 @@ #include + #include "TPIProtocol.h" #include "TPITarget.h" /* Preprocessor Checks: */ @@ -56,18 +57,6 @@ #endif /* Defines: */ - #define TINY_NVM_BUSY_TIMEOUT_MS 200 - - /* Function Prototypes: */ - void TINYNVM_SendNVMRegAddress(const uint8_t Register); - void TINYNVM_SendAddress(const uint32_t AbsoluteAddress); - bool TINYNVM_WaitWhileNVMControllerBusy(void); - bool TINYNVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest); - bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, const uint16_t ReadSize); - bool TINYNVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t* WriteBuffer); - bool TINYNVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand, - const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress, - const uint8_t* WriteBuffer, const uint16_t WriteSize); - bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address); + #define TINY_NVM_BUSY_TIMEOUT_MS 100 #endif diff --git a/Projects/AVRISP/Lib/TPITarget.h b/Projects/AVRISP/Lib/TPITarget.h index e11e075514..596bdce216 100644 --- a/Projects/AVRISP/Lib/TPITarget.h +++ b/Projects/AVRISP/Lib/TPITarget.h @@ -64,9 +64,11 @@ #define BITBANG_TPICLOCK_PIN PINB #define BITBANG_TPICLOCK_MASK (1 << 1) + /** Total number of bits in a single USART frame */ #define BITS_IN_TPI_FRAME 12 - #define TPI_NVM_TIMEOUT_MS 200 + /** Timeout in milliseconds of a PDI busy-wait command */ + #define TPI_NVM_TIMEOUT_MS 100 #define TPI_CMD_SLD 0x20 #define TPI_CMD_SST 0x60 diff --git a/Projects/AVRISP/Lib/V2Protocol.h b/Projects/AVRISP/Lib/V2Protocol.h index b43ae89c56..ef4d2eb63a 100644 --- a/Projects/AVRISP/Lib/V2Protocol.h +++ b/Projects/AVRISP/Lib/V2Protocol.h @@ -59,14 +59,11 @@ /* Macros: */ /** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing */ - #define PROGRAMMER_ID "AVRISP_MK2" - - /** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */ - #define TARGET_BUSY_TIMEOUT_MS 240 + #define PROGRAMMER_ID "AVRISP_MK2" /* External Variables: */ extern uint32_t CurrentAddress; - extern bool MustSetAddress; + extern bool MustSetAddress; /* Function Prototypes: */ void V2Protocol_ProcessCommand(void); diff --git a/Projects/AVRISP/Lib/V2ProtocolParams.c b/Projects/AVRISP/Lib/V2ProtocolParams.c index f900d7ecd8..6b7f84aa34 100644 --- a/Projects/AVRISP/Lib/V2ProtocolParams.c +++ b/Projects/AVRISP/Lib/V2ProtocolParams.c @@ -44,43 +44,43 @@ static ParameterItem_t ParameterTable[] = { { .ParamID = PARAM_BUILD_NUMBER_LOW, .ParamValue = (LUFA_VERSION_INTEGER >> 8), - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_BUILD_NUMBER_HIGH, .ParamValue = (LUFA_VERSION_INTEGER & 0xFF), - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_HW_VER, .ParamValue = 0x00, - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_SW_MAJOR, .ParamValue = 0x01, - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_SW_MINOR, - .ParamValue = 0x0C, - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamValue = 0x0D, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_VTARGET, .ParamValue = 0x32, - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_SCK_DURATION, .ParamValue = (TOTAL_ISP_PROGRAMMING_SPEEDS - 1), - .ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE }, + .ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE }, { .ParamID = PARAM_RESET_POLARITY, .ParamValue = 0x00, - .ParamPrivileges = PARAM_PRIV_WRITE }, + .ParamPrivileges = PARAM_PRIV_WRITE }, { .ParamID = PARAM_STATUS_TGT_CONN, .ParamValue = 0x00, - .ParamPrivileges = PARAM_PRIV_READ }, + .ParamPrivileges = PARAM_PRIV_READ }, { .ParamID = PARAM_DISCHARGEDELAY, .ParamValue = 0x00, - .ParamPrivileges = PARAM_PRIV_WRITE }, + .ParamPrivileges = PARAM_PRIV_WRITE }, }; @@ -173,6 +173,6 @@ static ParameterItem_t* V2Params_GetParamFromTable(const uint8_t ParamID) if (ParamID == ParameterTable[TableIndex].ParamID) return &ParameterTable[TableIndex]; } - + return NULL; }