EEPROM在文件系统在中的实现

出处:刘辉,蒋朝根 西南交通大学 发布于:2011-09-02 08:30:36

 

  EEPROM(电可擦写可编程只读存储器)是可用户更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。本文主要针对两线EEPROM AT24C512来创建文件系统,当然也适用于其他同类产品。

  1  AT24C512简介

  AT24C512是ATMEL公司生产的64KB串行电可擦的可编程存储器,内部有512页,每一页为128字节,任一单元的地址为16位,地址范围为0000-0FFFH.它采用8引脚封装,具有结构紧凑,存储容量大等特点,可以在2线总线上并接4片芯片,特别适用于具有大容量数据存储要求的数据采集系统,因此在测控系统中被大量采用。

  1.1  封装及引脚介绍

按此在新窗口浏览图片
图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位的设备地址去寻址。其设备地址格式如下:

按此在新窗口浏览图片

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

  (2) 写操作

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

按此在新窗口浏览图片
图2字节写操作

按此在新窗口浏览图片

  (3) 读操作

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

  2  AT24C512与主控芯片的连接

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

按此在新窗口浏览图片

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

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

按此在新窗口浏览图片

图5  写流程

  3  Linux块设备驱动

  3.1  Linux块设备驱动模型

  Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是"Linux".Linux操作系统也是自由软件和开放源代码发展中着名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于计算机业余爱好者Linus Torvalds.

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

  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  文件系统对比

按此在新窗口浏览图片

  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上建立文件系统,给存取带来了极大的便利,也大大地简化了应用程序的编写。

 


  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!