#include "cfg.h" #include "uart.h" #include "flash.h" #include static uint64_t reflectionBuff[(sizeof(Config_type)>>3)+1]; Config_type *config = (Config_type *)reflectionBuff; static void Factory_reset(void) { config->magic = CONFIG_MAGIC; config->addr = DEFAULT_ADDR; config->br_index = BaudRate_115200; //config->App2Size = 0; //config->App2Crc = 0; //config->IapFlag = 0; } int Config_Init(void) { //EFLASH_StatusType ret = EFLASH_STATUS_SUCCESS; //memcpy(reflectionBuff, (void *)CONFIG_ADDRESS, sizeof(Config_type)); FLASH_DRV_Read(&g_Flash_Config,CONFIG_ADDRESS, (uint8_t*)reflectionBuff, sizeof(reflectionBuff)); if (config->magic != CONFIG_MAGIC) {/* initiliaze config */ memset(reflectionBuff, 0xFF, sizeof(reflectionBuff)); //config->magic = CONFIG_MAGIC; Factory_reset(); // config->IapFlag = Startup_Normal; config->hw_version = 0x0000; config->devicetype = 0x0000; config->deviceid = 0x00; SaveConfig(); } //Factory_reset(); return 0; } int SaveConfig(void) { status_t ret = STATUS_SUCCESS; ret = FLASH_DRV_UnlockCtrl(); if(STATUS_SUCCESS != ret) return -1; ret = FLASH_DRV_EraseSector(&g_Flash_Config, CONFIG_ADDRESS, EFLASH_PAGE_SIZE_INIT); if(STATUS_SUCCESS != ret) return -1; ret = FLASH_DRV_VerifySection(&g_Flash_Config,CONFIG_ADDRESS, EFLASH_PAGE_SIZE_INIT/8); if(STATUS_SUCCESS != ret) return -1; ret = FLASH_DRV_Program(&g_Flash_Config, CONFIG_ADDRESS, sizeof(reflectionBuff), (uint8_t*)reflectionBuff); FLASH_DRV_LockCtrl(); return 0; } int ResetConfig(void) { Factory_reset(); //SaveConfig(); return 0; }