/** ########################################################################## ** Filename : ** Project : ** Module : ** Processor : ** Version : ** Compiler : ** Date/Time : ** Abstract : ** Contents : ** Note : ** ** (c) Copyright dmdz Co.,Ltd ** -------------------------------------------------------------------------- ** R E V I S I O N H I S T O R Y ** -------------------------------------------------------------------------- ** Date Ver Author Description ** -20230602- --V1.0-- --mingyea--- --修改-- ** #########################################################################*/ /*--------------------------------------------------------------------------- - I N C L U D E F I L E S ----------------------------------------------------------------------------*/ #include "eeprom.h" #include "common_cfg.h" #include "common_memory.h" #include "error.h" #include "gpio.h" #include "wdog.h" #include "nvm.h" #include "eeprom_state_machine.h" #ifdef NVM_EEPROM_EXT_EN /*--------------------------------------------------------------------------- - D E F I N E S / M A C R O S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - T Y P E D E F I N I T I O N S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- - S T A T I C V A R I A B L E S ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- * G L O B A L V A R I A B L E S ----------------------------------------------------------------------------*/ #ifdef EEPROM_EXT_DEBUG_EN eeprom_input_test_s g_eeprom_input_test[EEPROM_AREA_TOTAL_FOR_RAM] = {0u}; //MEMORY_MAP_RAM_FLAG_NOINIT #endif MEMORY_MAP_RAM_FLAG_NOINIT eeprom_ext_s g_eeprom_ext[EEPROM_AREA_TOTAL_FOR_RAM] @RAM_EEPROM_OP_RAM_ADDR; eeprom_ext_test_s g_eeprom_ext_test[EEPROM_AREA_TOTAL_FOR_RAM] ; //MEMORY_MAP_FLAG_NO_OPTIME MEMORY_MAP_RAM_EEPROM u8 g_ram_for_eeprom_data[EEPROM_RAM_MAX_U8] = {0u}; #if 0 //debug的時候,開啟該宏 #else u8 *g_ram_for_eeprom[EEPROM_AREA_TOTAL_FOR_RAM] = { (u8*)(u32)EEPROM_AREA0_RAM_ADDR_START, #if EEPROM_AREA_TOTAL>1u (u8*)(u32)EEPROM_AREA1_RAM_ADDR_START #endif }; #endif u32 g_logic_page_read_data[EEPROM_AREA_TOTAL_FOR_RAM] MEMORY_MAP_RAM_WDOG @RAM_EEPROM_DATA_RAM_ADDR ; //逻辑页的数据--注意,该地址也是未初始化的,见ICF u32 g_logic_page_write_data[EEPROM_AREA_TOTAL_FOR_RAM] MEMORY_MAP_RAM_WDOG @(RAM_EEPROM_DATA_RAM_ADDR+(4u*EEPROM_AREA_TOTAL_FOR_RAM)) ; //逻辑页的数据 u8 g_logic_page_read_u8data[EEPROM_AREA_TOTAL_FOR_RAM][4] MEMORY_MAP_RAM_WDOG @(RAM_EEPROM_DATA_RAM_ADDR+(8u*EEPROM_AREA_TOTAL_FOR_RAM)); /*--------------------------------------------------------------------------- - C O N S T A N T S ----------------------------------------------------------------------------*/ const eeprom_user_info_s g_eeprom_user_info[EEPROM_AREA_TOTAL_FOR_RAM] = { { EEPROM_AREA0_EFLASH_PAGE_NUM, EFLASH_AREA0_MASS_PAGE_SIZE, EEPROM_AREA0_ADDR_TOTAL_U32, EEPROM_AREA0_ADDR_TOTAL_U8, EEPROM_AREA0_RAM_ADDR_START, EEPROM_AREA0_RAM_ADDR_END, EFLASH_AREA0_PAGE0_BASE_ADDRESS, EFLASH_AREA0_PAGE0_END_ADDRESS, EFLASH_AREA0_PAGE1_BASE_ADDRESS, EFLASH_AREA0_PAGE1_END_ADDRESS, }, #if EEPROM_AREA_TOTAL >1u { EEPROM_AREA1_EFLASH_PAGE_NUM, EFLASH_AREA1_MASS_PAGE_SIZE, EEPROM_AREA1_ADDR_TOTAL_U32, EEPROM_AREA1_ADDR_TOTAL_U8, EEPROM_AREA1_RAM_ADDR_START, EEPROM_AREA1_RAM_ADDR_END, EFLASH_AREA1_PAGE0_BASE_ADDRESS, EFLASH_AREA1_PAGE0_END_ADDRESS, EFLASH_AREA1_PAGE1_BASE_ADDRESS, EFLASH_AREA1_PAGE1_END_ADDRESS, }, #endif }; /*--------------------------------------------------------------------------- - F U N C T I O N P R O T O T Y P E ----------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- |Prototype : |Called by : |Preconditions : |Input parameters : area_id: Var片区 |Output parameters : |Return value : |Description : 返回当前有效页 ----------------------------------------------------------------------------*/ u16 eeprom_get_cur_page_id(u8 area_id) { assert_param(area_id