DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1701|回复: 1
打印 上一主题 下一主题

[待整理] IC卡数据循环存储及文件管理

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 09:57:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
IC卡数据循环存储及文件管理

摘要:一种I2C总线型EEPROM存储器,在数据记录系统中,用来保存当前时刻以前一段时间内的多组数据。使用时设计成首尾地址相接的环型存储结构,实现数据文件的循环存储。文章介绍循环存储器的结构、循环存储的实现方法以及文件管理的过程;指出该方法的优越性。    关键词:EEPROM 循环存储 I2C总线 IC卡
绝大多数的IC卡采用的都是I2C总线型的EEPROM存储器。在现场数据记录系统中,经常需要保存的是当前时刻之前一段时间内的数据。 由于EEPROM单字节写入时间太长,不易采用数据在存储器中内整体位置移动的方法管理;而单纯采用自存储器顶端向下顺序写入的方法,会出现存储器写满的现象。为解决这个问题,我们设计了环型存储的管理方法,使用首尾相接的存储环,配合以目录管理功能,完成顺的循环写入,实现了EEPROM存储器内文件的的高效保存和管理。
1 存储器及文件目录结构
这里以1片4KB的I2C总线型EEPROM为例。微处理器采用Atmel的AT89S52;EEPROM的0000H~003FH作为IC卡内文件的目录管理区,为直线结构;目录区最多可以记录30个数据文件。存储器及目录结构如图1所示。0040H~0FFFH设计成首尾相接的环型存储结构,用来作为文件存储区。数据文件从0040H处开始依次记入,每写入一个字节,地址指针自动加1,然后判断该指针是否到了存储环的交界处。地址过界,即地址大于0FFFH时,将写入地址指针再修改成0040H,将最早形成的文件记录自动覆盖掉。AT89S52内部RAM的40H~7FH作为EEPROM文件目录区的映像,系统复位后由单片机将EEPRM中0000H~003FH的内容读出并记入到该映像区。每一组现场数据作为一个记录文件输入后,单片机都要及时修改目录映像中当前文件的结束地址。每建立一个新文件记录,映像区整个数据都要向地址增大方向移动2个字节,超出7DH的自动丢弃。新建立的文件首位地址记入40H~43H,最后将该映像再重新写回到EEPROM目录区。文件目录中只有当前文件记录了起始地址和结束地址。当前文件的起始地址是前一文件结束地址的下一个地址,因此在前文件只记录其起始地址。目录区没有文件的空间用#0FFH填充。另外,每一个文件的长度不应超过文件数据存储区的总长度。单个文件的长度越短,存储器可存储的文件数越多。存储器的大小可视一般记录文件和系统要求而定。

2 存储器清除及文件建立

在IC卡第一次使用之前,首先应该通过功能程序将卡内目录管理区清空,即将0000H~003DH写入#0FFH.。003EH写入#00H,表示卡内没有文件。003FH写入自定义的卡编写,这一过程需要0.6s完成。只有使用经过初始清除处理的IC卡,才能保证后续文件建立和数据写入的正确性。
文件的建立依赖于系统的功能指令。当系统得到建立新文件的指令时,立即启动新文件建立程序,完成文件起始地址配置以及目录区管理,具体过程见图2。


图2

3 文件写入及目录管理

文件数据的写入按照I2C总线规约逐字节写入。特殊之处在于,每写完一个字节之后,地址指针加1,调整后的指针如果超过0FFFH,则重新高速为0040H,这将意味着“吃掉“(覆盖掉)最早建立的文件或其它在前文件。这里,通过目录管理了程序找出被“吃掉”的文件,并将从目录中删除。由于在所选用存储时已经有效使存储空间远大于单个文件的长度,因此不会出现同一个文件“吃掉”自身的情况。只有当多个文件的总长度超过存储空间时,才会出现在前文件被“吃掉”的现象。不过,被吃掉的文件永远是最早形成的文件,是按照系统设计已经可以丢弃的文件。
目录管理的主要功能是:实时统计IC卡内实际文件的数量,记载新建立的文件,及时删除已经被覆盖掉的文件。文件检索过程只有目录映像区进行,根据文件目录映像区的结构,读出所有已记录的在前文件的地址,与当前文件地址比较。如果所检查的在前文件地址进入当前文件首尾地址范围内,则认定为该文件已经被当前文件覆盖,应用从目录中删除。
由于存储器空间被安排成环状结构,会出现当前文件的结尾地址大于开始地址的情况,因此不能简单地根据地址的绝对大小判断覆盖问题。考虑到单一文件的长度远小于存储数据空间,以及目录映像区文件次序的前后排列关系,我们采取自前一文件到最早文件的次序检索方法。如果遇到某个文件被覆盖,则后续文件一定被覆盖。由于在前文件的起始地址存在大于或小于当前文件结尾地址的情况,因此应分两种情况进行分析,统计出有效文件的数量并找到到被覆盖的文件,将其从目录中删除,过程见图3。R2为文件数量计数器,初值为零。


图3

结语

EEPROM循环写入的方法避免了大块数据在存储器内移动的问题,同时消除了存储器写满后影响后续写入的问题,充分使用了存储空间;文件检索和目录修改在RAM映像区完成,加快了程序运行速度。循环写入方案在运达公司一种记录棋谱的电子棋盘中已经得到了应用,实用可靠。此方法在类似产品或记录设备中具有相当的实用价值。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-23 17:18 , 耗时 0.097927 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表