/***************************************************************************** Storage.h *****************************************************************************/ #ifndef _STORAGE_H #define _STORAGE_H /*****************************************************************************/ #include #include "ProtocolPack.h" /* 每个Position占64字节,1MB可存16384条记录 3MB可存49152条记录,每5秒一条记录,则可存68小时(2.8天) */ #define STORAGE_POS_START_ADDR 0x00100000 //存储Position记录起始地址 1MB开始 #define STORAGE_POS_END_ADDR 0x00400000 //存储Position记录结束地址 #define STORAGE_POS_LEN 64 //每个Position 记录所占长度 #define STORAGE_POS_COUNT_SECTOR (4096/STORAGE_POS_LEN) //每个SECTOR可以存放的记录个数 #define STORAGE_POS_COUNT_TOTAL ((STORAGE_POS_END_ADDR-STORAGE_POS_START_ADDR)/STORAGE_POS_LEN) //总共可存储的记录个数 #define STORAGE_POS_MARK 0x11223355 #define STORAGE_POS_FLAG 0x58 //保存在外部FLASH的系统参数 typedef struct SUT_STORAGE_FIFO { int out;//指向队头的索引,这个所指空间有元数,先读出后位移 int in; //指向对尾的索引,这个所指的空间为空,先写入后位移 int len;//元素个数,只用于调试阶段判断是否异常,队列操作不以此为控制 }__attribute__((packed)) SUT_STORAGE_FIFO; extern SUT_STORAGE_FIFO sutStorageFiFo; void StorageFiFoInit(void);// void StorageFiFoTest(void); void StorageCtrlSavePos(void); int StorageFiFoPop(SUT_POSITION *pPos); /*****************************************************************************/ #endif /*****************************************************************************/