Index: NVDataMgmt.c =================================================================== diff -u -re1b34b080d041c571ca4aad8a31104d2773c17df -r34d06953f880f3dd2b50f5361cfe31a70c579a38 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision e1b34b080d041c571ca4aad8a31104d2773c17df) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 34d06953f880f3dd2b50f5361cfe31a70c579a38) @@ -16,8 +16,10 @@ // Includes -#include "NVDataMgmt.h" #include "F021.h" +#include "NVDataMgmt.h" +#include "RTC.h" + #include "system.h" // Private defines @@ -93,14 +95,15 @@ // Private variables -struct memoryOps job[ MAX_QUEUE_SIZE ]; -static Fapi_StatusType EEPROMStatus; +struct memoryOps jobQueue[ MAX_QUEUE_SIZE ]; +static Fapi_StatusType EEPROMStatus = Fapi_Status_Success; static NVDATAMGMT_SELF_TEST_STATE_T NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; static NVDATAMGMT_EXEC_STATE_T NVDataMgmtExecState = NVDATAMGMT_EXEC_STATE_WAIT_FOR_POST; static SELF_TEST_STATUS_T NVDataMgmtSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; +static BOOL isServiceOnEntry = TRUE; +static U32 readBuffer[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - /************************************************************************* * @brief initNVDataMgmt * The initNVDataMgmt initializes EEPROM @@ -112,14 +115,55 @@ *************************************************************************/ void initNVDataMgmt( void ) { + // TODO: initialize all the necessary variables NVDataMgmtSelfTestState = NVDATAMGMT_SELF_TEST_STATE_START; EEPROMStatus = Fapi_initializeFlashBanks( ROUNDED_HCLK_FREQ ); EEPROMStatus = Fapi_setActiveFlashBank( Fapi_FlashBank7 ); +} - EEPROMStatus = Fapi_enableEepromBankSectors( BANK7_SECTOR_0_31_ENABLE_BIT_MASK, BANK7_SECTOR_32_63_ENABLE_BIT_MASK ); +/************************************************************************* + * @brief handleSelfTestStart + * The handleSelfTestStart enables the EEPROM bank sectors + * @details + * Inputs : none + * Outputs : NVDATAMGMT_SELF_TEST_STATE_T + * @param none + * @return NVDATAMGMT_SELF_TEST_STATE_T + *************************************************************************/ +NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestStart( void ) +{ + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_START; + if ( isServiceOnEntry ) + { + EEPROMStatus = Fapi_enableEepromBankSectors( BANK7_SECTOR_0_31_ENABLE_BIT_MASK, + BANK7_SECTOR_32_63_ENABLE_BIT_MASK ); + isServiceOnEntry = FALSE; + } + else if ( EEPROMStatus == Fapi_Status_Success ) + { + state = NVDATAMGMT_SELF_TEST_STATE_READ_MEMORY_DATA; + isServiceOnEntry = TRUE; + } + return state; } +NVDATAMGMT_SELF_TEST_STATE_T handleSelfTestReadMemoryData( void ) +{ + NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_MEMORY_DATA; + + if ( isServiceOnEntry ) + { + EEPROMStatus = Fapi_doMarginRead((uint32_t*)BANK7_SECTOR0_START_ADDRESS, readBuffer, 8, Fapi_NormalRead); + isServiceOnEntry = FALSE; + } + else if ( EEPROMStatus == Fapi_Status_Success ) + { + isServiceOnEntry = TRUE; + } + return state; +} + /************************************************************************* * @brief execNVDataMgmtSelfTest * The execNVDataMgmtSelfTest runs the NVDataMgmt POST during the self test @@ -134,9 +178,13 @@ switch( NVDataMgmtSelfTestState ) { case NVDATAMGMT_SELF_TEST_STATE_START: + + NVDataMgmtSelfTestState = handleSelfTestStart(); break; case NVDATAMGMT_SELF_TEST_STATE_READ_MEMORY_DATA: + + NVDataMgmtSelfTestState = handleSelfTestReadMemoryData(); break; case NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC: @@ -154,6 +202,8 @@ return NVDataMgmtSelfTestResult; } + + void execNVDataMgmt( void ) {