244 lines
5.8 KiB
C
244 lines
5.8 KiB
C
|
|
|
|||
|
|
#ifndef __DATAFILE_H__
|
|||
|
|
#define __DATAFILE_H__
|
|||
|
|
|
|||
|
|
#include "datadef.h"
|
|||
|
|
#include "exram.h"
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define MAX_FILE_NUM 16 // ֧<>ֿɱ<D6BF><C9B1><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>16 <20><><EFBFBD>ļ<EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define DATA_FILE_ADDR1 EXRAM1_DATA_ADDR_BEG
|
|||
|
|
#define DATA_FILE_ADDR2 EXRAM2_DATA_ADDR_BEG
|
|||
|
|
|
|||
|
|
#define DATA_FILE_SIZE1 MAX_DATA_EXRAM1_SIZE
|
|||
|
|
#define DATA_FILE_SIZE2 MAX_DATA_EXRAM2_SIZE
|
|||
|
|
|
|||
|
|
#define DATA_FILE_SIZE (DATA_FILE_SIZE1+DATA_FILE_SIZE2)
|
|||
|
|
|
|||
|
|
#ifndef DATA_FILE_SIZE3
|
|||
|
|
#define DATA_FILE_SIZE3 (0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef DATA3_BASE_ADDR
|
|||
|
|
#define DATA3_BASE_ADDR (EXRAM1_BASE_ADDR)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
/*
|
|||
|
|
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD>Ϊ10<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>СΪ10
|
|||
|
|
* <EFBFBD>Ե<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>ǰ 7:3<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD>ݴ洢<EFBFBD><EFBFBD>SRAM<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
#ifndef FILE_EXBUF_NUM
|
|||
|
|
#define FILE_EXBUF_NUM (50)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define DAT_BLOCK_SIZE (1024) // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
|
#define ITEM_NUM_PER_BLK ((DAT_BLOCK_SIZE)/sizeof(DataItem)) // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ洢<C9B4><E6B4A2><EFBFBD><EFBFBD>
|
|||
|
|
#define REQUEST_GAP 200 // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>λms
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int exbufFlag[FILE_EXBUF_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־ 0,<2C><>Ч
|
|||
|
|
u32 datExBeg [FILE_EXBUF_NUM]; // <20><><EFBFBD>ݿ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ʼ
|
|||
|
|
u8 datExBlock[FILE_EXBUF_NUM][DAT_BLOCK_SIZE]; // <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}DatExCtrl;
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int enflag; // <20>ļ<EFBFBD><C4BC><EFBFBD>Ч<EFBFBD><D0A7>־<EFBFBD><D6BE>
|
|||
|
|
int storage; // <20>ļ<EFBFBD><C4BC>洢<EFBFBD><E6B4A2>ʽ<EFBFBD><CABD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿSRAM<41><4D>; 1, <20><><EFBFBD><EFBFBD><EFBFBD>ⲿNorFLASH<53><48>; 2, <20>洢<EFBFBD><E6B4A2><EFBFBD>ⲿNandFlash<73><68>; 3, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>);
|
|||
|
|
int newFile; // <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>־
|
|||
|
|
|
|||
|
|
u32 fileIdxMap;
|
|||
|
|
s32 fileIdx; // <20><>ǰ<EFBFBD>ļ<EFBFBD>
|
|||
|
|
|
|||
|
|
DataFileHead * pFileHead; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u32 dataBuff1BegAddr; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ַ
|
|||
|
|
u32 dataBuff1Len; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>С
|
|||
|
|
|
|||
|
|
u32 dataBuff2BegAddr; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>ַ
|
|||
|
|
u32 dataBuff2Len; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>С
|
|||
|
|
|
|||
|
|
u32 dataBuff3BegAddr; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>ַ,<2C><>EXRAM<41>ж<EFBFBD><D0B6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڴ<EFBFBD><DAB4>ű߿<C5B1><DFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ļ<EFBFBD>
|
|||
|
|
u32 dataBuff3Len; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33>С
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
DatExCtrl * pDatExCtrl; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}DatFileCtrl;
|
|||
|
|
|
|||
|
|
#define STORAGE_EXSRAM 0 // <20>洢<EFBFBD><E6B4A2>SRAM<41><4D>
|
|||
|
|
#define STORAGE_NORFLASH 1 // <20>洢<EFBFBD><E6B4A2>NORFlash<73><68>
|
|||
|
|
#define STORAGE_NANDFLASH 2 // <20>洢<EFBFBD><E6B4A2>NANDFlash<73><68>
|
|||
|
|
#define STORAGE_NETWORK 3 // <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define STORAGE_SRAMANDNOR 4 // <20>洢<EFBFBD><E6B4A2>SRAM<41><4D>NorFlash<73><68>
|
|||
|
|
#define STORAGE_TRANS 5 // <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,<2C><><EFBFBD><EFBFBD><EFBFBD>洢
|
|||
|
|
#define STORAGE_SPAREARAM 6 // <20>洢<EFBFBD><E6B4A2>SRAM<41><4D><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڴ洢<DAB4>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ļ<EFBFBD>
|
|||
|
|
#define STORAGE_INFLASH 7 // <20>洢<EFBFBD><E6B4A2><EFBFBD>ڲ<EFBFBD>FLASH<53><48>
|
|||
|
|
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define MAX_SQRT 256
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
float begx;
|
|||
|
|
float begy; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
float midx;
|
|||
|
|
float midy; // <20>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
|
/*
|
|||
|
|
float midx2;
|
|||
|
|
float midy2; // <20>м<EFBFBD><D0BC><EFBFBD>2
|
|||
|
|
*/
|
|||
|
|
float endx;
|
|||
|
|
float endy; // <20>յ<EFBFBD>
|
|||
|
|
|
|||
|
|
u8 line_type; // <20><><EFBFBD><EFBFBD> = 0 ֱ<><D6B1> = 1 Բ = 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 type; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u8 blockNum; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 blockTimes; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockTimes; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 blockjumps; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockjumps; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u32 stepSize; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}__attribute__ ((packed)) SqrtItem;
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
SqrtItem sqrtItem[MAX_SQRT]; // ͼ<><CDBC><EFBFBD>б<EFBFBD>
|
|||
|
|
int sqrtNum; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u32 stepSize; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
u8 blockNum; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 blockTimes; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockTimes; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 blockjumps; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 elockjumps; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
s32 startx;
|
|||
|
|
s32 starty;
|
|||
|
|
|
|||
|
|
s32 startx2;
|
|||
|
|
s32 starty2;
|
|||
|
|
|
|||
|
|
u8 defofst;
|
|||
|
|
} SqrtInfo;
|
|||
|
|
|
|||
|
|
int CreateCommFile(SqrtInfo * pSqrt);
|
|||
|
|
|
|||
|
|
int WriteTestFile(int sel, int cx, int cy, int sx, int sy, int dex, int dey, u16 type, int stepSize);
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#ifdef _IN_DATAFILE_C
|
|||
|
|
DatFileCtrl g_datFile;
|
|||
|
|
DataFileHead g_fileHead1;
|
|||
|
|
DataFileHead g_fileHead2;
|
|||
|
|
#else
|
|||
|
|
extern DatFileCtrl g_datFile;
|
|||
|
|
extern DataFileHead g_fileHead1;
|
|||
|
|
extern DataFileHead g_fileHead2;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20>õ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int GetADataItem(u8 fileBlk, u32 idx, DataItem * pDat);
|
|||
|
|
int GetADataItemNoSqrt(u8 fileBlk, u32 idx, DataItem * pDat);
|
|||
|
|
int GetADataItemBase(u8 fileBlk, u32 idx, DataItem * pDat, int sqrtflag);
|
|||
|
|
int WriteADataItem(u8 fileBlk, u32 idx, DataItem * pDat);
|
|||
|
|
int WriteFileData(u8 fileBlk, u32 begaddr, u8 * pBuf, u32 size);
|
|||
|
|
|
|||
|
|
u32 GetFileItemNums(void);
|
|||
|
|
s32 GetFileWide(void);
|
|||
|
|
s32 GetFileHigh(void);
|
|||
|
|
|
|||
|
|
int GetMinMaxFromFileDatWithAnchor(s32 * pminx, s32 * pmaxx, s32 * pminy, s32 * pmaxy);
|
|||
|
|
int GetMinMaxFromFileDat(s32 * pminx, s32 * pmaxx, s32 * pminy, s32 * pmaxy);
|
|||
|
|
int GetMinMaxFromFileDatBase(int point, s32 * pminx, s32 * pmaxx, s32 * pminy, s32 * pmaxy);
|
|||
|
|
|
|||
|
|
int InvalidDatFile(u32 idx);
|
|||
|
|
int AvalidDatFile(u32 idx);
|
|||
|
|
int IsDatFileAvailable(void);
|
|||
|
|
int IsDatIndexAvailable(u32 idx);
|
|||
|
|
|
|||
|
|
void InvalidDatBlock(void);
|
|||
|
|
|
|||
|
|
void SetNewDatFlag(u32 idx, int en);
|
|||
|
|
int IsNewDatFile(u32 idx);
|
|||
|
|
|
|||
|
|
void InitNorSectorManage(void);
|
|||
|
|
void NorAllocAndSetUsingFlags(int allocBytes);
|
|||
|
|
int ReleaseSpace(int sync);
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void InitDatFiles(void);
|
|||
|
|
|
|||
|
|
void OutFileInfo(void);
|
|||
|
|
|
|||
|
|
int IsDatIdxInBuf(int idx);
|
|||
|
|
int GetBlockIdxNeedtoLoad(int datidx);
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA1_SIZE
|
|||
|
|
#define TEMP_DATA1_SIZE (0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA1_ADDR
|
|||
|
|
#define TEMP_DATA1_ADDR (EXRAM1_BASE_ADDR)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA2_SIZE
|
|||
|
|
#define TEMP_DATA2_SIZE (0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA2_ADDR
|
|||
|
|
#define TEMP_DATA2_ADDR (TEMP_DATA1_ADDR+TEMP_DATA1_SIZE)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA3_SIZE
|
|||
|
|
#define TEMP_DATA3_SIZE (0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA3_ADDR
|
|||
|
|
#define TEMP_DATA3_ADDR (TEMP_DATA2_ADDR+TEMP_DATA2_SIZE)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA4_SIZE
|
|||
|
|
#define TEMP_DATA4_SIZE (0)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifndef TEMP_DATA4_ADDR
|
|||
|
|
#define TEMP_DATA4_ADDR (TEMP_DATA3_ADDR+TEMP_DATA3_SIZE)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
void InitTempData(int type);
|
|||
|
|
u8 * GetTempData(int type);
|
|||
|
|
int SetTempData(int type, int idx, u8 * pBuf);
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|