92 lines
3.0 KiB
C
92 lines
3.0 KiB
C
#ifndef FAT_WK_PSM
|
|
|
|
#include "platform.h"
|
|
|
|
#define FAT_WK_PSM
|
|
#define PSM_BLK_SIZE 0x800 //2k
|
|
//#define FLASH_PSM_START_ADDR 0x80FF8000
|
|
//#define FLASH_PSM_START_ADDR 0xFF8000
|
|
#define FLASH_PSM_START_ADDR 0x3C000
|
|
#define FLASE_SECTOR_SIZE 512
|
|
|
|
//#define FLASH_BLK_SIZE (GetFlashProperties(BOOT_FLASH)->BlockSize)
|
|
#define FLASH_BLK_SIZE (PSM_BLK_SIZE)
|
|
#if 0
|
|
//use this address temporarily
|
|
#define FLASHPARTITION_PSM_BLK0 (GetFlashLayoutConfig()->PSMStartAddress)
|
|
#define FLASHPARTITION_PSM_BLK1 (FLASHPARTITION_PSM_BLK0 + FLASH_BLK_SIZE)
|
|
#define FLASHPARTITION_PSM_BLK2 (FLASHPARTITION_PSM_BLK1 + FLASH_BLK_SIZE)
|
|
#define FLASHPARTITION_PSM_BLK3 (FLASHPARTITION_PSM_BLK2 + FLASH_BLK_SIZE)
|
|
|
|
#define FLASHPARTITION_PSM_REV0 (FLASHPARTITION_PSM_BLK3 + FLASH_BLK_SIZE)
|
|
#define FLASHPARTITION_PSM_REV1 (FLASHPARTITION_PSM_REV0 + FLASH_BLK_SIZE)
|
|
#define FLASHPARTITION_PSM_REV2 (FLASHPARTITION_PSM_REV1 + FLASH_BLK_SIZE)
|
|
#endif
|
|
#define FLASHPARTITION_PSM_BLK0 (FLASH_PSM_START_ADDR)
|
|
|
|
//#define SMS_ME_SUPPORT
|
|
|
|
//psm file number
|
|
#ifdef SMS_ME_SUPPORT
|
|
#define TOTAL_PSMFILE_NUM 2
|
|
#else
|
|
#define TOTAL_PSMFILE_NUM 1
|
|
#endif
|
|
//#define TOTAL_PSMFILE_NUM 1
|
|
//reserver psm block number
|
|
#define PSMBLK_REV_NUM 1
|
|
//total psm block number
|
|
#define TOTAL_PSMBLK_NUM (TOTAL_PSMFILE_NUM + PSMBLK_REV_NUM)
|
|
|
|
#define PSM_HEADER_LEN sizeof(Psm_Block_Info)
|
|
|
|
#define PSM_DATA_OFFSET (PSM_HEADER_LEN - 4)
|
|
#define PSM_DATA_LEN (PSM_BLK_SIZE - PSM_HEADER_LEN)
|
|
|
|
//for reserved psm block
|
|
#define INVALID_PSM_LEN 0xff00ff00
|
|
|
|
#define PSM_MAGIC_NUM1 0x5a5a5a5a
|
|
#define PSM_MAGIC_NUM2 0xa5a5a5a5
|
|
|
|
//#define PSM_Debug(format,...) do{}while(0)
|
|
#define PSM_Debug(fmt,args...) CPUartLogPrintf("[psm]"fmt, ##args)
|
|
#define PSM_Error(fmt,args...) CPUartLogPrintf("[psm]"fmt, ##args)
|
|
|
|
//store in flash
|
|
typedef struct
|
|
{
|
|
unsigned int magic_num1;
|
|
// unsigned int dirty; // 1 psm wirte back to flash, 0 flash block not program
|
|
// int idx; //point to the index of physical psm file, 0xa5a5a5a5 for reserver
|
|
unsigned char filename[12];
|
|
unsigned int len;
|
|
unsigned int crc;
|
|
unsigned int random;
|
|
unsigned int magic_num2; //store in the end of flash block
|
|
}Psm_Block_Info;
|
|
|
|
typedef enum
|
|
{
|
|
BOOT_FLASH = 0,
|
|
SAVE_STATE_FLASH = 1
|
|
} FlashBootType_T;
|
|
|
|
void psm_lowlevel_init(void);
|
|
|
|
void psm_lock_high(void);
|
|
void psm_unlock_high(void);
|
|
|
|
void psm_lock_low(void);
|
|
void psm_unlock_low(void);
|
|
int FDI_remove_psm(const char *filename_ptr);
|
|
FILE_ID FDI_fopen_psm(const char *filename_ptr, const char *mode);
|
|
size_t FDI_fread_defaultpsm(void *buff, size_t element_size, size_t count, FILE_ID stream);
|
|
size_t FDI_fwrite_defaultpsm(void *buff, size_t element_size, size_t count, FILE_ID stream);
|
|
size_t FDI_fread_psm(size_t element_size, size_t count, FILE_ID stream);
|
|
size_t FDI_fwrite_psm(size_t element_size, size_t count, FILE_ID stream);
|
|
int FDI_fseek_psm(FILE_ID stream, long offset, int wherefrom);
|
|
int FDI_fclose_psm(FILE_ID stream);
|
|
unsigned int get_psm_len(char handleIndex);
|
|
|
|
#endif |