/******************************************************************************* 版权所有 (C), 2018,中颖电子股份有限公司 ********************************************************************************/ #ifndef __FLASH_H__ #define __FLASH_H__ #include "C51_TYPE.H" #define MCU_TYPE_CODE 0x00 #define MCU_TYPE_E2P 0x01 #define BOOT_PGR_OK 0x00 #define BOOT_PGR_ERASE_ERR 0x01 #define BOOT_PGR_WR_ERR 0x02 #define BootMcuWdtClear() RSTSTAT &= 0xF8; //清看门狗 /****************************************************************************** MCU 程序区共计64K Boot区占用4K (0x0000~0x0FFF) App运行区占用29K (0x1000~0x83FF) App备份区占用30K (0x8400~0xFBFF) CODE和参数都缓存在CODE区 App备份参数区占用1K (0xFC00~0xFFFF) *******************************************************************************/ #define MCU_CODE_SECTOR_SIZE ((U32)0x200) #define BOOT_CODE_START_ADDR ((U32)0x0000) //BOOT程序区起始地址 #define BOOT_CODE_SIZE ((U32)4*1024) //BOOT程序区起始地址 #define IAP_CODE_START_ADDR ((U32)BOOT_CODE_START_ADDR+BOOT_CODE_SIZE)//APP程序区起始地址 #define IAP_CODE_SIZE ((U32)29*1024) //APP程序区长度29K #define IAP_CODE_END_ADDR ((U32)IAP_CODE_START_ADDR+IAP_CODE_SIZE-1) #define IAP_BK_CODE_START_ADDR ((U32)IAP_CODE_START_ADDR+IAP_CODE_SIZE) //APP程序备份区起始地址 #define IAP_BK_CODE_SIZE ((U32)30*1024) //APP程序备份区结束地址 #define IAP_BK_CODE_END_ADDR ((U32)IAP_BK_CODE_START_ADDR+IAP_BK_CODE_SIZE-1) #define APP_PARA_START_ADDR ((U32)0x0000) //参数区起始地址--EEPROM地址从0开始 #define APP_PARA_SIZE ((U32)1*1024) //参数区长度1K #define BOOT_FLG_START_ADDR ((U32)BOOT_CODE_START_ADDR+BOOT_CODE_SIZE-MCU_CODE_SECTOR_SIZE)//存放在BOOT区最后1个Sector #define BOOT_FLG_IAP_ADDR ((U32)BOOT_FLG_START_ADDR+MCU_CODE_SECTOR_SIZE-1) //IAP标志存放在标志Sector的最后一个字节 #define BOOT_FLG_ISP_ADDR ((U32)BOOT_FLG_START_ADDR+MCU_CODE_SECTOR_SIZE-1) //IAP标志存放在标志Sector的最后一个字节 #define ISP_CODE_START_ADDR ((U32)IAP_CODE_START_ADDR) //APP程序区起始地址 #define ISP_CODE_SIZE ((U32)59*1024) //APP程序区长度59K(含1K的参数) extern U8 ucMcuFlashWrValid; extern U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType); extern void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType); extern BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType); extern void McuFlashWrOneByte(U32 xdata McuFlashAddr, U8 xdata WrData, U8 xdata McuType); extern BOOL BootUpgradeCode(void); #endif //#define MCU_CODE_SECTOR_SIZE ((U32)0x200) //#define BOOT_CODE_START_ADDR ((U32)0x0000) //BOOT程序区起始地址 //#define BOOT_CODE_SIZE ((U32)4*1024) //BOOT程序区起始地址 //#define IAP_CODE_START_ADDR (0x0000+4096)//APP程序区起始地址 //#define IAP_CODE_SIZE ((U32)29*1024) //APP程序区长度29K //#define IAP_CODE_END_ADDR (4096+29K-1) //#define IAP_BK_CODE_START_ADDR (4096+29K) //APP程序备份区起始地址 //#define IAP_BK_CODE_SIZE ((U32)30*1024) //APP程序备份区结束地址 //#define IAP_BK_CODE_END_ADDR (33K+30K-1) //#define APP_PARA_START_ADDR ((U32)0x0000) //参数区起始地址--EEPROM地址从0开始 //#define APP_PARA_SIZE ((U32)1*1024) //参数区长度1K //#define BOOT_FLG_START_ADDR (0x0000+4096-0x200)//存放在BOOT区最后1个Sector //#define BOOT_FLG_IAP_ADDR (3.5K+0x200-1) //IAP标志存放在标志Sector的最后一个字节 //#define BOOT_FLG_ISP_ADDR (3.5K+0x200-1) //IAP标志存放在标志Sector的最后一个字节 //#define ISP_CODE_START_ADDR (4096) //APP程序区起始地址 //#define ISP_CODE_SIZE ((U32)59*1024) //APP程序区长度60K(含1K的参数区)