首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   基于虚拟扇区的Flash存储管理技术      ★★★ 【字体: 】  
基于虚拟扇区的Flash存储管理技术
收集整理:佚名    来源:本站整理  时间:2009-01-10 23:50:53   点击数:[]    

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的物理地址

要对某个VSS ID进行读写操作,必须先找到其物理地址。

定位某个VSS ID物理地址的过程如下。

① 查找这个VSS ID所在的块号(BI)以及在这个块中所处的分割号(SI)。

从第一个block开始,搜索这个块的SAT表。首先搜索属性,只有属性为有效的才比较VSS ID号。如果条件满足,记录所在的块号BI及SAT的位置,即扇区分割号SI;否则,block号增加,继续按照上面步骤查找。

bFound=0;

for(int i=0;i<MAX_block;i++)

{//读取对应block的SAT表

psat=ReadSat(i)

for(j=0;j<MAX_SI_1B;j++)

{//分析每个SAT单元

sat=*psat++;

if(IsValid(sat))//比较属性是否有效

{//比较逻辑号是否相等,相等设置标志退出

if(Equal(sat,VSSID)){bFound=1;break;}

}

}

if(bFound){bi=i;si=j;break;}//找到后记录块号和分割号退出

}

②找到VSS ID所在的块号及分割号(SI)后,这个VSS ID的物理地址为:

ADDR=整个Flash的偏地址+

BLOCKID*BLOCKSIZE+SATSIZE+SI*SECTERSIZE。

5 应用

应用于名片记录管理系统:由于名片记录很大,而且记录很多,存在常常修改的情况,因此可以使用Flash作存储介质。

名片记录结构为:

struct CARD

{

char name[10]; //姓名:10字节

char position[15]; //出职务:15字节

char companyname[40]; //公司名称:15字节

char mobilephone[11]; //手机号码:11字节

char homephone[15]; //家庭电话:15字节

char officephone[15]; //办公电话:15字节

char Email[30]; //邮件地址:30字节

char homepage[30]; //公司主页:30字节

char remark[40]; //备注:40字节

}card_record;

每个名片记录大小为:181字节。

对于1MB的Flash,分为8个block,每个block为128KB(131072字节)。

针对以上情况,作如下分配:

每个扇区大小为181字节;

SAT大小为1432字节,每个SAT单元用16位(2字节);

分为716个扇区,也相当于1个block能存716条名片记录,则131072-1432-716×181=44字节为空闲。

常数定义部分修改如下:

#define blockSIZE 128*1024 //每个block大小

#define SECTORSIZE 181 //每个扇区大小

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

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

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

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

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

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

约定:首先对名片进行编号,且约定名片的编号对应于VSS ID逻辑号。

a) 记录增加。增加一个记录时,根据提供的VSS ID号,首先查找这个记录号是否在使用。如果还没有使用,首先查找这个记录号是否在使用。如果还没有使用,则申请一个未使用的VSS,把相在内容写入这个VSS,修改其对应的SAT单元,写入有效属性值和VSSID号;否则,进入记录修改过程。

b) 记录删除。要删除一个记录时,根据提供的VSS ID号,查找SAT表。如果找到,修改其对应的SAT属性为无效;否则,说明这个记录不存在。

c) 记录查找。①由VSS ID号进行的查找:根据提供的VSS ID号,查找所有的SAT表中属性为有效的VSS ID,返回相应的BI及SI。②根据名片的用户名查找:检测所有的SAT表中属性为有效的VSS ID,得到相应的BI及SI,由BI及SI定位到指定Flash物理地址读入用户各到RAM中,比较是否相等。如果相等,读取并返回SAT单元的VSS ID;否则,继续查找。

d) 记录修改。当要修改一名片记录时,由VSS ID先把这个记录读入到RAM中,然后修改其内容,重新找一个未使用的扇区,把修改后的内容写入到这个新扇区中,并拷贝其VSS ID号到这个新扇区对应的SAT单元,修改其属性为高,修改原来的扇区属性为无效。

结语

本文提出的Flash存储管理技术原理简单实用。它是对那些复杂的Flash文件管理系统的一种剪裁、简化和定制。对于那些不需要复杂的文件管理系统,而又使用了Flash作为存储介质的嵌入式系统有很好的借鉴意义和使用价值,如手机电话号码簿管理、短信管理等都可以利用这种技术进行管理。



上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:TrueFFS原理及其在CF卡上的实现

  • 下一篇文章:Flash存储器在TMS320C3x系统中的应用
  • 返回上一页】【打 印】【关闭窗口
    中查找“基于虚拟扇区的Flash存储管理技术”更多相关内容 5VAR论文频道
    中查找“基于虚拟扇区的Flash存储管理技术”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››基于虚拟仪器的多点随机振动试验控...
  • ››基于虚拟现实技术的自行车漫游系统...
  • ››基于虚拟处理器嵌入式中间件
  • ››基于虚拟仪器技术的手机翻盖耐久性...
  • ››基于虚拟扇区的Flash存储管理技术
  • ››基于虚拟仪器的核能海水淡化实验测...
  • ››基于虚拟仪器的水电机组在线振动监...
  • ››基于虚拟仪器的圆盘式电流变传动机...
  • ››基于虚拟仪器技术的激光接收器测试...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .