85 lines
3.0 KiB
C
85 lines
3.0 KiB
C
/******************************************************************************
|
|
*
|
|
* @brief FLASH Çý¶¯Í·Îļþ.
|
|
*
|
|
******************************************************************************/
|
|
#ifndef FLASH_H_
|
|
#define FLASH_H_
|
|
|
|
|
|
#include "common.h"
|
|
|
|
#define ETMRH_FSTAT_MGSTAT0_MASK (1)
|
|
#define ETMRH_FSTAT_MGSTAT1_MASK (1<<1)
|
|
|
|
#define FLASH_SECTOR_SIZE 512 // in bytes
|
|
|
|
#define FLASH_ERR_BASE 0x3000
|
|
#define FLASH_ERR_SUCCESS 0
|
|
#define FLASH_ERR_INVALID_PARAM (FLASH_ERR_BASE+1)
|
|
#define EEPROM_ERR_SINGLE_BIT_FAULT (FLASH_ERR_BASE+2)
|
|
#define EEPROM_ERR_DOUBLE_BIT_FAULT (FLASH_ERR_BASE+4)
|
|
#define FLASH_ERR_ACCESS (FLASH_ERR_BASE+8)
|
|
#define FLASH_ERR_PROTECTION (FLASH_ERR_BASE+0x10)
|
|
#define FLASH_ERR_MGSTAT0 (FLASH_ERR_BASE+0x11)
|
|
#define FLASH_ERR_MGSTAT1 (FLASH_ERR_BASE+0x12)
|
|
#define FLASH_ERR_INIT_CCIF (FLASH_ERR_BASE+0x14)
|
|
#define FLASH_ERR_INIT_FDIV (FLASH_ERR_BASE+0x18)
|
|
|
|
/*********************************/
|
|
|
|
#define FLASH_CMD_PROGRAM 0x20000000
|
|
#define FLASH_CMD_CLEAR 0x00005000
|
|
#define FLASH_CMD_ERASE_ALL 0x41000000
|
|
#define FLASH_CMD_ERASE_SECTOR 0x40000000
|
|
#define FLASH_FACTORY_KEY 0x00cfbdbe
|
|
|
|
#define EFM_DONE_MASK 0x00006000
|
|
#define EFM_STATUS_DONE 0x00006000
|
|
#define EFM_STATUS_READY 0x00002000
|
|
|
|
#define FLASH_ACCERR_MASK 0x10
|
|
|
|
#define M8(adr) (*((volatile unsigned char *) (adr)))
|
|
#define M16(adr) (*((volatile unsigned short *) (adr)))
|
|
#define M32(adr) (*((volatile unsigned long *) (adr)))
|
|
|
|
#define __ramfunc __attribute__ ((long_call, section (".ramfunctions")))
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
******************************************************************************/
|
|
typedef uint16_t (*TFlash_Fun1)(uint32_t wNVMTargetAddress, uint8_t *pbData, uint8_t bByteCount);
|
|
typedef uint16_t (*TFlash_Fun2)(uint32_t wNVMTargetAddress, uint32_t dwData0, uint32_t dwData1);
|
|
typedef uint16_t (*TFlash_Fun3)(uint32_t wNVMTargetAddress, uint32_t dwData);
|
|
|
|
/******************************************************************************
|
|
******************************************************************************/
|
|
__ramfunc uint16_t Flash_Program(uint32_t wNVMTargetAddress, uint8_t *pData, uint16_t sizeBytes);
|
|
__ramfunc uint16_t Flash_Program1LongWord(uint32_t wNVMTargetAddress, uint32_t dwData);
|
|
__ramfunc uint16_t Flash_Program2LongWords(uint32_t wNVMTargetAddress, uint32_t dwData0, uint32_t dwData1);
|
|
|
|
__ramfunc uint16_t Flash_EraseSector(uint32_t wNVMTargetAddress);
|
|
|
|
__ramfunc uint16_t Flash_VerifyBackdoorKey(void);
|
|
|
|
__ramfunc uint16_t NVM_EraseAll(void);
|
|
|
|
__ramfunc uint16_t NVM_Unsecure(void);
|
|
|
|
uint16_t Flash_Init(void);
|
|
|
|
#ifdef IAR
|
|
void __ramfunc EFM_LaunchCMD(uint32_t EFM_CMD);
|
|
#else
|
|
__ramfunc void EFM_LaunchCMD(uint32_t EFM_CMD);
|
|
#endif
|
|
|
|
|
|
void Flash_CopyInRAM(void);
|
|
void Flash_CopyRouinte2RAM(char *func, uint16_t sizeFunc);
|
|
/********************************************************************/
|
|
|
|
#endif /* FLASH_H_ */
|