/************************************************************************** * * Copyright (c) 2026-2027 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file NVDriver.h * * @author (original) Arpita Srivastava * @date (original) 31-Mar-2026 * ***************************************************************************/ #ifndef _NV_DRIVER_H #define _NV_DRIVER_H #include "Common.h" /** * @defgroup NVDriver NVDriver * @brief Non Volatile Memory Driver module provides an abstraction layer for * accessing Flash memory, ncluding initialization, sector erase, read, and write operations. * * @addtogroup NVDriver * @{ */ // ********** public definitions ********** #define BANK7_SECTOR0_START_ADDRESS 0xF0200000 ///< Bank7 sector 0 start address. #define BANK7_SECTOR0_END_ADDRESS 0xF0203FFF ///< Bank7 sector 0 end address. #define BANK7_SECTOR1_START_ADDRESS 0xF0204000 ///< Bank7 sector 1 start address. #define BANK7_SECTOR1_END_ADDRESS 0xF0207FFF ///< Bank7 sector 1 end address. #define BANK7_SECTOR2_START_ADDRESS 0xF0208000 ///< Bank7 sector 2 start address. #define BANK7_SECTOR2_END_ADDRESS 0xF020BFFF ///< Bank7 sector 2 end address. #define BANK7_SECTOR3_START_ADDRESS 0xF020C000 ///< Bank7 sector 3 start address. #define BANK7_SECTOR3_END_ADDRESS 0xF020FFFF ///< Bank7 sector 3 end address. /// Non Volatile Memory operation modes enumeration. typedef enum NVM_Operation { NVM_NONE = 0, ///< Default mode to prevent any accidental ops. NVM_OPERATION_WRITE, ///< Operation mode write. NVM_OPERATION_READ, ///< Operation mode read. NVM_OPERATION_ERASE, ///< Operation mode erase a sector (EEPROM). NUM_OF_NVM_OPERATIONS ///< Total number of operation states. } NVM_OPERATION_T; /// NVM record type enumeration typedef enum NVM_Record_Type { NVM_SYSTEM_RECORD = 0, ///< NVM process system record. NVM_SERVICE_RECORD, ///< NVM process service record. NVM_CALIBRATION_RECORD, ///< NVM process calibration record. NVM_INSTITUTIONAL_RECORD, ///< NVM process institutional record. NVM_USAGE_INFO_RECORD, ///< NVM process usage info record. NUM_OF_NVM_RECORD_TYPES ///< Number of NVM records jobs. } NVM_RECORD_TYPE_T; /// Process records job structure typedef struct { NVM_OPERATION_T memoryOperation; ///< Memory operation. NVM_RECORD_TYPE_T recordJob; ///< Record job (i.e sector 0). } PROCESS_RECORD_JOB_T; // ********** public function prototypes ********** void initNVDriver( void ); void eraseSector( U32* recordFlashAddress ); void writeSector( U32* recordFlashAddress, U08* bufferAddress, U32 bufferSize ); void readSector( U32* recordFlashAddress, U32* bufferAddress, U32 bufferSize ); BOOL isFlashReady( void ); /**@}*/ #endif /* _NV_DRIVER_H */