#ifndef _SYSTEM_FLASH_MEM_MANAGE_H_ #define _SYSTEM_FLASH_MEM_MANAGE_H_ #include "off_chip_flash.h" #define STORAGE_SPACE OUT_FLASH_ALL_SIZE /************Íⲿflash´æ´¢¹æ»®****************** *1³ÌÐòÉý¼¶´æ´¢Çø£ºÁôÁ½¸ö512KB¿Õ¼ä£¬Ò»¸öÓÃÓÚ½ÓÊÕ¸üгÌÐò£¬Ò»¸öÓÃÓÚ»¹Ô­Ð³ÌÐòÁÙʱ´æ´¢Çø¡£ *2˼ÖþÈÕÖ¾´æ´¢Çø£¬°üÀ¨Êý¾ÝÀúÊ·¼Ç¼¡¢¾¯¼Ç¼¡¢Ê¼þ¼Ç¼¡¢²ÎÊýÐ޸ļǼ£» *3µÚÈý·½ÏµÍ³´æ´¢Çø£¬°üÀ¨Êý¾ÝÀúÊ·¡¢±¨¾¯¼Ç¼¡¢Ê¼þ¼Ç¼µÈ£¬¸ù¾ÝµÚÈý·½ÏµÍ³ÒªÇóÔÚ×ö¾ßÌ嶨Ò壬´Ë´¦½ö×öÁô¿Õ */ /*³ÌÐòÉý¼¶´æ´¢Çø£¬Áô¹»¿Õ¼ä£¬ÖÁÉÙÁô2*412*1024+ 0x1000£¬¾ßÌ嶨ÒåÔÚÉý¼¶³ÌÐò²¿·Ö*/ #define PROGRAM_UPDATE_STORAGE_START_ADDR 0 #define PROGRAM_UPDATE_STORAGE_LENGTH (1024*1024) /*˼ÖþÈÕÖ¾´æ´¢Çø*/ //Êý¾ÝÀúÊ·¼Ç¼ #define HISTORY_RECORD_STORAGE_START_ADDR PROGRAM_UPDATE_STORAGE_START_ADDR + PROGRAM_UPDATE_STORAGE_LENGTH #define HISTORY_RECORD_STORAGE_LENGTH (1024*1024) //±¨¾¯¼Ç¼£¨Ô¤Áô1±¶£© #define SYSTEM_ALARM_STORAGE_START_ADDR HISTORY_RECORD_STORAGE_START_ADDR + HISTORY_RECORD_STORAGE_LENGTH #define SYSTEM_ALARM_STORAGE_LENGTH (30*1024) //ʼþ¼Ç¼£¨Ô¤Áô2±¶£© #define SYSTEM_EVENT_STORAGE_START_ADDR SYSTEM_ALARM_STORAGE_START_ADDR + SYSTEM_ALARM_STORAGE_LENGTH #define SYSTEM_EVENT_STORAGE_LENGTH (20*1024) //²ÎÊýÐ޸ļǼ£¨Ô¤Áô2±¶£© #define SYSTEM_PARA_MODIFY_STORAGE_START_ADDR SYSTEM_EVENT_STORAGE_START_ADDR + SYSTEM_EVENT_STORAGE_LENGTH #define SYSTEM_PARA_MODIFY_STORAGE_LENGTH (30*1024) //˼ÖþÈÕÖ¾´æ´¢ÇøÏ¸·Ö //Êý¾ÝÀúÊ·¼Ç¼-ԼǼ #define MONTH_HISTORY_RECORD_STORAGE_START_ADDR HISTORY_RECORD_STORAGE_START_ADDR #define MONTH_HISTORY_RECORD_STORAGE_ADDR_LENGTH 8*1024 //Êý¾ÝÀúÊ·¼Ç¼-ÈռǼ #define DAY_HISTORY_RECORD_STORAGE_START_ADDR MONTH_HISTORY_RECORD_STORAGE_START_ADDR + MONTH_HISTORY_RECORD_STORAGE_ADDR_LENGTH #define DAY_HISTORY_RECORD_STORAGE_ADDR_LENGTH 40*1024 //Êý¾ÝÀúÊ·¼Ç¼-Сʱ¼Ç¼ #define HOUR_HISTORY_RECORD_STORAGE_START_ADDR DAY_HISTORY_RECORD_STORAGE_START_ADDR + DAY_HISTORY_RECORD_STORAGE_ADDR_LENGTH #define HOUR_HISTORY_RECORD_STORAGE_ADDR_LENGTH 230*1024 //Êý¾ÝÀúÊ·¼Ç¼-¼ä¸ô¶³½á¼Ç¼ #define INTERVAL_HISTORY_RECORD_STORAGE_START_ADDR HOUR_HISTORY_RECORD_STORAGE_START_ADDR + HOUR_HISTORY_RECORD_STORAGE_ADDR_LENGTH #define INTERVAL_HISTORY_RECORD_STORAGE_ADDR_LENGTH 100*1024 //±¨¾¯¼Ç¼,ÔÝʱֻÓÐÒ»ÖÖ£¬ÏȲ»Ï¸·Ö //ʼþ¼Ç¼-·§¿Ø¼Ç¼ #define VALVE_OPERATION_EVENT_STORAGE_START_ADDR SYSTEM_EVENT_STORAGE_START_ADDR #define VALVE_OPERATION_EVENT_STORAGE_ADDR_LENGTH 4*1024 //ʼþ¼Ç¼-»Ö¸´³ö³§¼Ç¼ #define FACTORY_RESET_EVENT_STORAGE_START_ADDR VALVE_OPERATION_EVENT_STORAGE_START_ADDR + VALVE_OPERATION_EVENT_STORAGE_ADDR_LENGTH #define FACTORY_RESET_EVENT_STORAGE_ADDR_LENGTH 512 //ʼþ¼Ç¼-Уʱ¼Ç¼ #define SET_TIME_EVENT_STORAGE_START_ADDR FACTORY_RESET_EVENT_STORAGE_START_ADDR + FACTORY_RESET_EVENT_STORAGE_ADDR_LENGTH #define SET_TIME_EVENT_STORAGE_ADDR_LENGTH 1*1024 //²ÎÊýÐ޸ļǼ-É豸»ù´¡ÐÅÏ¢Ð޸ļǼ #define BASIC_INFO_MODIFY_STORAGE_START_ADDR SYSTEM_PARA_MODIFY_STORAGE_START_ADDR #define BASIC_INFO_MODIFY_STORAGE_ADDR_LENGTH 1130 //²ÎÊýÐ޸ļǼ-ÀÛ»ýÁ¿Ð޸ļǼ #define CUMULATE_MODIFY_STORAGE_START_ADDR BASIC_INFO_MODIFY_STORAGE_START_ADDR + BASIC_INFO_MODIFY_STORAGE_ADDR_LENGTH #define CUMULATE_MODIFY_STORAGE_ADDR_LENGTH 900 //²ÎÊýÐ޸ļǼ-Óà¶îÐÞ¸Ä #define BALANCE_MODIFY_STORAGE_START_ADDR CUMULATE_MODIFY_STORAGE_START_ADDR + CUMULATE_MODIFY_STORAGE_ADDR_LENGTH #define BALANCE_MODIFY_STORAGE_ADDR_LENGTH 580 //²ÎÊýÐ޸ļǼ-Á÷Á¿¼Æ²ÎÊýÐ޸ļǼ #define FLOWMETER_PARA_MODIFY_STORAGE_START_ADDR BALANCE_MODIFY_STORAGE_START_ADDR + BALANCE_MODIFY_STORAGE_ADDR_LENGTH #define FLOWMETER_PARA_MODIFY_STORAGE_ADDR_LENGTH 2260 //²ÎÊýÐ޸ļǼ-Óà¶î/Ìõ¼þ¹Ø·§²ÎÊýÐ޸ļǼ #define CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_STORAGE_START_ADDR FLOWMETER_PARA_MODIFY_STORAGE_START_ADDR + FLOWMETER_PARA_MODIFY_STORAGE_ADDR_LENGTH #define CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_STORAGE_ADDR_LENGTH 2260 //²ÎÊýÐ޸ļǼ-ϵͳ¹¦ÄÜÅäÖÃ×ÖÐ޸ļǼ #define FUN_CTRL_MODIFY_STORAGE_START_ADDR CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_STORAGE_START_ADDR + CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_STORAGE_ADDR_LENGTH #define FUN_CTRL_MODIFY_STORAGE_ADDR_LENGTH 740 //²ÎÊýÐ޸ļǼ-±¨¾¯¿ØÖÆ/Éϱ¨¿ØÖÆ×ÖÐ޸ļǼ #define ALARM_CTRL_MODIFY_STORAGE_START_ADDR FUN_CTRL_MODIFY_STORAGE_START_ADDR + FUN_CTRL_MODIFY_STORAGE_ADDR_LENGTH #define ALARM_CTRL_MODIFY_STORAGE_ADDR_LENGTH 1700 //²ÎÊýÐ޸ļǼ-¹Ø·§¿ØÖÆ×ÖÐ޸ļǼ #define VALVE_CTRL_BYTES_MODIFY_STORAGE_START_ADDR ALARM_CTRL_MODIFY_STORAGE_START_ADDR + ALARM_CTRL_MODIFY_STORAGE_ADDR_LENGTH #define VALVE_CTRL_BYTES_MODIFY_STORAGE_ADDR_LENGTH 1700 //µÚÈý·½ÏµÍ³´æ´¢Çø #define THIRS_SYSTEM_RECORD_STORAGE_START_ADDR 3*1024*1024 #define THIRS_SYSTEM_RECORD_STORAGE_LENGTH (1024*1024) //flash²Ù×÷µØÖ·Ô½½çÅÐ¶Ï #define FLASH_LOG_ADDR_CHECK(__HANDLE__,__START_ADDR__,__LENGTH__,__MAX_NUM__) \ do{ \ if(FlashLogAddrCheck(__HANDLE__.log_addr_save,__START_ADDR__,__LENGTH__,__MAX_NUM__) ==FAIL){ \ __HANDLE__.log_addr_save = __START_ADDR__; \ __HANDLE__.log_count = 0; \ } \ }while(0); //ÈÕÖ¾¿ØÖƲÎÊý´¦Àí #define FLASH_LOG_CRTL_PARA_HANDLE(__HANDLE__,__START_ADDR__,__LENGTH__,__MAX_NUM__) \ do{ \ if( __HANDLE__.log_addr_save <(__START_ADDR__ + __LENGTH__ * (__MAX_NUM__ -1))){ \ __HANDLE__.log_addr_save += __LENGTH__; \ }else{ \ __HANDLE__.log_addr_save = __START_ADDR__; \ } \ if(__HANDLE__.log_count < __MAX_NUM__) \ __HANDLE__.log_count ++; \ }while(0); ErrorStatus FlashMultipleWriteAndReadCheck(uint8_t * write_data,uint32_t addrA,uint16_t length); ErrorStatus FlashLogAddrCheck(uint32_t OpAddr,uint32_t StartAddr,uint16_t length,uint16_t MaxNum); ErrorStatus FlashMultipleReadAndCrcCheck(uint8_t * read_data,uint32_t addrA,uint16_t length); uint32_t FlashLogPreviousAddrGet(uint32_t OpAddr,uint32_t StartAddr,uint16_t length,uint32_t EndAddr); #endif