72 lines
1.9 KiB
C
72 lines
1.9 KiB
C
|
|
#ifndef FLASH_INTERFACE_H
|
|
#define FLASH_INTERFACE_H
|
|
|
|
#include "define.h" //for CPU selection
|
|
|
|
//#define APPLICATION_START_ADDRESS 0x9D003000
|
|
//#define APPLICATION_FLASH_START_ADDRESS 0x9D002000
|
|
|
|
#define APPLICATION_START_ADDRESS 0x9D005000
|
|
#define APPLICATION_FLASH_START_ADDRESS 0x9D004000
|
|
|
|
#define FLASH_ROW_SIZE 128
|
|
#define FLASH_ROW_SIZE_IN_BYTES (4 * FLASH_ROW_SIZE) //512
|
|
#define FLASH_PAGE_SIZE (8 * FLASH_ROW_SIZE) //1024
|
|
#define FLASH_PAGE_SIZE_IN_BYTES (4 * FLASH_PAGE_SIZE) //4096
|
|
#define MAX_SECTOR_SIZE FLASH_PAGE_SIZE_IN_BYTES
|
|
|
|
//The number of pages of application program flash
|
|
#ifdef USE_675F512_CPU
|
|
#define FLASH_NB_APPLICATION_PAGES (0x40000 / FLASH_PAGE_SIZE_IN_BYTES) - 2 //0x40000 is the size of the flash (32MX675F512L), the 2 first pages are reserved for bootloader. (-2)
|
|
#else
|
|
#define FLASH_NB_APPLICATION_PAGES (0x80000 / FLASH_PAGE_SIZE_IN_BYTES) - 4 //0x80000 is the size of the flash (32MX795F512L), the 2 first pages are reserved for bootloader. (-2)
|
|
#endif
|
|
|
|
|
|
#define PROGRAM_FLASH_BEGIN_ADDRESS 0x1D000000
|
|
#define PROGRAM_FLASH_END_ADDRESS 0x1D07FFFF
|
|
|
|
|
|
typedef struct
|
|
{
|
|
unsigned int SectorStartAddress;
|
|
unsigned short SectorSize;
|
|
unsigned int SectorData[MAX_SECTOR_SIZE];
|
|
|
|
}stDataSector_t;
|
|
|
|
enum eFlashOperations
|
|
{
|
|
FLASH_NOP_CMD = 0X0000,
|
|
FLASH_PROGRAM_WORD_CMD = 0x4001,
|
|
FLASH_PROGRAM_ROW_CMD = 0x4003,
|
|
FLASH_PAGE_ERASE_CMD = 0x4004,
|
|
FLASH_ERASE_CMD = 0x4005
|
|
};
|
|
|
|
enum eFlashReturnValues
|
|
{
|
|
FLASH_STATUS_OK,
|
|
FLASH_STATUS_ERROR
|
|
};
|
|
|
|
extern stDataSector_t CurrentDataSector;
|
|
|
|
void InitFlashInterface(void);
|
|
unsigned int FlashErase(void);
|
|
unsigned int FlashErasePage(void *Address);
|
|
unsigned int FlashUnlock(unsigned int Operation);
|
|
unsigned int FlashProgramWord(void *Address, unsigned int DataWord);
|
|
unsigned int FlashProgramRow(void *Address, void *DataPtr);
|
|
unsigned int FlashProgramData(void *FlashStartAddress, unsigned int *DataPtr, unsigned int Size);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
//EOF
|
|
|
|
|