保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于虚拟扇区的Flash存储管理技术


中的SAT属性都标为无效时,才对当前block进行擦写。可见,以虚拟扇区大小为单位的存储管理,对Flash块的擦写次数可大大减少,从而提高了系统性能。
(凹丫丫范文网fanwen.oyaya.net收集整理)
3 VSS管理实现要点

3.1 常数部分

#define BLOCKSIZE 128*1024 //可根据Flash型号修改

#define SECTORSIZE

512 //可根据Flash型号及应用情况修改

#define MAX_BLOCK 8 //可擦除块个数

#define MAX_SI_1B 255 //每个可擦除块中有效SI个数

#define SATSIZE 510 //扇区分配表大小

#define VSS_MASK 0XC000 //VSS属性屏蔽值

#define VSS_FREE 0XC000 //VSS为未使用的属性值

#define VSS_VALID 0X4000 //VSS为有效的属性值

#define VSS_INVALID 0X0000 //VSS为无效的属性值

3.2 数据结构部分

unsigned char VSS_Table[MAX_BLOCK][MAX_SI_1B/8];用于记录Flash中各个block的使用情况。数组中的某位为1,表示相应sector为未使用;否则,为已经写过,系统通过这个表可以跟踪各个block的使用情况。

3.3 函数功能部分

1) Flash_Format()//擦除整块Flash存储介质。

2) Flash_Init()//对VSS管理系统参数进行初始化,填充VSS_Table表,统计Flash的使用情况。在系统复位初始时调用。

3) Block_Erase(int blockID)//擦除块号为block ID的块。

4) Find_VSS(int vss)//查找VSS所在的block ID及分割号SI。

5) Get_Addr(int vss)//取得VSS所在的物理地址。

6) Scan_SAT(int blockID)//整理块号为block ID的SAT,填充VSS_Table[]。

7) Flash_Read(long addr,char *pdata,int len)//从物理地址为addr的Flash处读取len个字节到pdata。

8) Flash_Write(long addr,char *pdata,int len)//写pdata中长度为len的数据到指定地址为addr的Flash中。

9) Read_Sat(int bi)//读取块号为blockID的SAT。

10) IsValid(vat)//检查本SAT单元属性是否有效。

11) IsFree(vat)//检查本SAT单元属性是否未使用。

12) IsInvalid(vat)//检查本SAT单元属性是否无效。

13) Read_VSS(addr)//从地址为addr处读一个VSS。

14) Write_VSS(addr,*pData)//把pData中的内容写到从地址addr开始的一个VSS中。

4 计算VSS ID的物理地址

《基于虚拟扇区的Flash存储管理技术(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/149604.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。