文件系统在EEPROM中的应用

发布时间:2010-5-19 16:39    发布者:李宽
关键词: eeprom , 文件系统
引言

嵌入式系统中,EEPROM凭借使用简单、性能可靠、价格低廉的特点而广泛应用于小量而又重要的数据存储领域。目前,嵌入式产品层出不穷,应用繁多,相应的EEPROM随之出现。其中,两线EEPROM因其引脚少、封装小得到广泛应用。本文主要针对两线EEPROM AT24C512来创建文件系统,当然也适用于其他同类产品。

1  AT24C512简介[1]

AT24C512是 Atmel公司生产的串行电可擦的可编程存储器。它采用8引脚封装,具有可掉电记忆、结构紧凑、64 KB存储容量等特点,可以在2线总线上并接多片芯片,适用于具有较大容量重要数据存储要求的嵌入式系统。

1.1  封装及引脚介绍

1.gif
图1  AT24C512引脚图

AT24C512有多种封装:TSSOP、PDIP、SOIC、dBGA2、SAP等。其引脚顺序如图1所示。

A0,A1:设备地址。当串行总线上挂接多片EEPROM芯片时,用这个地址来区分各芯片。
SDA:串行数据。
SCL:串行时钟。
WP:写保护。低电平写允许,高电平写禁止。
VCC:电源。
GND:地。
NC:悬空。

1.2  芯片操作简介

(1) 设备寻址(device addressing)

在读写EEPROM前,需要一个开始标志和一个8位的设备地址去寻址。其设备地址格式如下:

c1.gif

其中,最后一位为读写操作位,1表示读操作,0表示写操作。

(2) 写操作

AT24C512提供字节写和 128字节页写功能。字节写与页写操作主要区别在于:后者不需要每写入一字节就提供一个结束标志,而是在处理器得到应答信号后继续写入数据,直到写完小于等于一页的数据。字节写和页写的操作如图2和图3所示。

2.gif
图2字节写操作

3.gif
图3页写操作

(3) 读操作

AT24C512的读操作有多种模式,包括当前地址读、随机地址读和连续多字节读3种方式。读操作基本与写操作同。当前地址读操作不发送片内地址,每次只读取当前地址的数据,片内读地址自动加1,直到读完整片EEPROM后置0。随机地址读操作需先指定片内地址,然后读出数据。而连续多字节读操作则综合了上述两种方式,既可以是当前地址读,也可以是随机地址读。每当处理器接收到一字节数据后返回一个 ACK,EEPROM收到此ACK后地址自动加1,接着输出下一个字节数据,直到控制器返回NO ACK时,读过程结束。

2  AT24C512与主控芯片的连接

采用Atmel公司的工控芯片AT91RM9200[2]作为主控芯片。AT91RM9200有专用两线接口,可用来连接AT24C512。AT24C512与主控芯片的连接如图4所示。

4.gif
图4  AT24C512与主控芯片的连接电路

由于AT91RM9200内部有两线控制器,因此对AT24C512的访问只需操作 AT91RM9200的内部寄存器,而无需人为模拟AT24C512的访问时序。这为编程提供了方便,同时也保证了可靠性。这里以写操作的流程为例,简要介绍在主控芯片AT91RM9200下如何对AT24C512进行编程,如图5所示。

5.gif
图5  写流程

3  Linux块设备驱动

3.1  Linux块设备驱动模型[3]

在Linux系统中(本文使用Linux内核2.6.28),设备驱动程序通常有固定的模式,既为编写具体的驱动程序提供了方便,也减少了错误的发生。在编写块设备驱动程序时,首先用register_blkdev注册块设备,之后分配处理函数。处理函数主要包括:request函数,当有读写操作时内核会调用该函数;open函数,用于打开设备;release函数,用于释放设备;ioctl函数,用于查询或设置一些信息。最后向内核注册磁盘。在这个过程中,最重要的一个结构是 struct gendisk。上述所描述的处理函数都被写入该结构体,将该结构体必要的字段赋值后,就可使用add_disk将该结构体添加入内核。此时,磁盘设备将被激活,并随时会调用它提供的方法。

3.2  在块设备驱动中访问EEPROM

为了访问EEPROM,就需要将对EEPROM的操作与块设备驱动关联起来。首先是在块设备驱动初始化代码中调用at91_twi_init对EEPROM进行初始化,然后在块设备传输函数block_transfer中调用AT91_TWI_Read和AT91_TWI_Write进行读写操作,这样就使得块设备驱动和EEPROM关联起来了。

为了提高效率,在对EEPROM写操作时采用页写模式。这里要注意的是,需要对写入的数据进行分割,因为AT24C512 提供的是128字节页写功能,如果多于128字节,需分成128字节的倍数。同时注意,在一次写结束时,应等待1个写周期时间,再进行其他的操作;在进行读操作时,为了提高效率,应采用连续多字节读方式。

4  建立文件系统

为了按文件方式存取EEPROM,在块设备之上建立文件系统是必要的。由于AT24C512只有64 KB的容量,建立文件系统时,应该选择本身占用空间少的文件系统。当然这要根据具体需求来作出决定。

下面以msdos、minix、ext2文件系统为例作个比较。首先分别使用mkdos、mkfs.minix、mke2fs 对块设备格式化,并挂载到某个目录下。在未写入任何文件数据的情况下,其结果如表1所列。

表1  文件系统对比
b1.gif

AT24C512 EEPROM只有64 KB容量,相比磁盘等大容量的存储设备,除稳定性外,最主要考虑的是有效空间利用率。从表1中可以看出,在这3种文件系统中,msdos文件系统的空间利用率要高一些,minix文件系统次之,ext2文件系统最低。但是msdos文件系统的缺点是只支持8.3格式的文件名,而minix文件系统支持的文件名最多为14个字符,ext2文件系统支持的文件名长度则高达255个字符。当然,实际采用何种文件系统应根据具体要求来作出选择。

5  结论

由于AT24C512这类串行EEPROM本身固有的特性,在写入和读取文件操作时,其响应速度要低于NOR Flash、NAND Flash等存储设备。尽管如此,EEPROM也有其优势,目前仍然大量应用于嵌入式系统中。在EEPROM上建立文件系统,给存取带来了极大的便利,也大大地简化了应用程序的编写。

参考文献

   1. Atmel.Two-wire Serial EEPROM AT24C512 datasheet[OL].[2009-09].http://www.atmel.com/atmel/acrobat/doc1116.pdf.
   2. Atmel.AT91RM9200 datasheet[OL].[2009-09].http://www.atmel.com/dyn/resources/prod_documents/doc1768_cn.pdf.
   3. Corbet Jonathan,Rubini Alessandro,Kroah-Hartman Greg.Linux设备驱动程序[M].魏永明,译.3版.北京:中国电力出版社,2006.

作者:刘辉  蒋朝根(西南交通大学,信息科学与技术学院,成都,610031)
来源:单片机与嵌入式系统应用  2010 (2)
本文地址:https://www.eechina.com/thread-11394-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
lixupeng 发表于 2011-7-17 22:41:08
学习!
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表