12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /*****************************************************************************
- FileSys.h
- *****************************************************************************/
- #ifndef _FILE_SYS_H
- #define _FILE_SYS_H
- /*****************************************************************************/
- #include <stm32f10x.h>
- #define STORAGE_MARK 0x8abcdef8
- #define FILE_INDEX_ADDR 0x00000000 //4KB 000000~000FFF 保存文件索引信息
- #define FILE_DATA_ADDR 0x00001000 //~2MB 001000~1FFFFF 所有文件数据存储的首地址
- #define FILE_DATA_ADDR_END (0x001FFFFF-8192) //最后8K用于作备份文件区
- #define FILE_COUNT_MAX 50 //文件最大个数 文件索引表所占空间:sizeof(SUT_FILE_INFO)*FILE_COUNT_MAX+8=44*90+8=3968B=3.9KB
- #define FILE_NAME_LEN_MAX 20 //文件名最长字节数 应预留结束符0 因此实际文件名长度应控制在FILE_NAME_LEN_MAX-1
- #define FILE_ALL_DATA_LEN_MAX (FILE_DATA_ADDR_END+1) //文件数据最大长度
- #define FILE_HEAD_MARK 136321841
- #define FILE_HEAD_END 0xabcdef12
- typedef struct{
- unsigned char fName[FILE_NAME_LEN_MAX];//本页头所描述的文件名字
- unsigned char md5[16];//本页头所描述的文件内容的md5
- unsigned int fLength;//本页所描述的文件内容共占多少个字节数
- unsigned int nextFileHeadAddr;//如果本页为有效文件的页头,且本值不为0时,则指向的是一下个文件的页头地址
- unsigned int mark; //表示此页是否是合法的页头信息,否则为数据页或无效页 此项放最后
- }__attribute__((packed)) SUT_FILE_PAGE_HEAD;//20+16+4+4+4=48
- typedef struct SUT_FILE_INFO
- {
- char FileName[FILE_NAME_LEN_MAX];
- char FileMD5[16];
- unsigned long FileLen;
- unsigned long FileAddr;
- }__attribute__((packed)) SUT_FILE_INFO;//20+16+4+4=44
- typedef struct SUT_FILE_LIST
- {
- unsigned long Mark;
- unsigned long FileCount;//文件个数
- SUT_FILE_INFO FileInfo[FILE_COUNT_MAX];//文件信息列表
- }__attribute__((packed)) SUT_FILE_LIST;
- extern SUT_FILE_LIST g_sutFilesList;
- int FileSysInit(void);
- void FileSysSaveIndex(void);
- int FileSysReadIndex(void);
- int FileCheckMD5(int FileIndex);
- int GetFileIndex(const char *filename);
- int GetFileLen(int FileIndex);
- int ReadFileData(int FileIndex,u32 startAddr,u32 readLen,unsigned char *pData);
- int ModifyConfigureFile(char);
- void PrintfAllRFileInfo(void);
- /*****************************************************************************/
- #endif
- /*****************************************************************************/
|