首页 > 代码库 > 射频识别技术漫谈(26)——Felica的文件系统
射频识别技术漫谈(26)——Felica的文件系统
Felica的文件系统使用“系统\域\服务\数据块”的结构,如下图所示。通过这种结构实现对卡片非易失性存储区的使用和操作。
Felica的文件系统图
1、数据块
在Felica卡的文件系统中,非易失性内存操作的最小容量单位是16字节,称为数据块。所有的用户数据以数据块为单位存取。如果用户的数据超过16字节就要以多块的形式存储。除了用户数据,文件系统的管理信息也以数据块的形式存储。事实上,用户并不需要直接对数据块进行操作,而是通过一种被称为“服务”的机制实现存取。
2、服务
“服务”是文件系统中数据块的集合,“服务”提供了集合中数据块的存取控制。所有数据块的存取都是通过服务来实现的,因此,向卡片的文件系统注册“服务”才有可能存取数据块。
为了操作“服务”管理下的数据块,首先通过一个2字节的服务代码标识一个服务,然后使用1个字节的数据块号确定服务中数据块的位置。任何一个服务中的数据块号都是从0开始。
有3种不同类型的服务:
(1) 随机服务:这是一种普通用途的服务,可以读写服务中任一指定的数据块。
(2) 循环服务:这种服务中的数据滚动管理。写入新数据的同时将删除最旧的数据。
(3) 钱包服务:这种服务中的数据采用收费滚动管理,自动对块中指定的数据进行数值操作。
每种服务的存取方法不同。服务的访问属性可设置为“读/写”、“只读”、“操作前需要认证”等。
3、域
Felica使用“服务”用来管理数据块,同时使用“域”来管理非易失性存储区剩余的可用数据块或用来分配数据块给服务。
所有的服务都处于某一域的管理之下。所以服务建立的时候需要向主管它的域申请分配数据块。域之间也可以交叉管理,一个域下的数据块可以分配给其他的域,也可以被其他域管理。域使用2字节的域代码标识,其中域0是根域,在卡中总是存在,代码为0000H。
4、系统
系统是是文件系统的最高级,一个系统被看成一张逻辑卡片。通过系统分割,可以在一张物理卡片中生成多个系统,与域和服务类似,系统也使用一个两字节的系统代码来表示。
为了识别一张卡片,读写器必须使用轮询命令巡检射频场中未知数目的卡片。系统代码作为轮询命令的参数,在防冲突的过程中,只有系统代码相符的系统做出响应。卡片上如果分了多个系统,读写器则像对待一张单独的卡片一样对待卡上的每一个系统。
5、域和服务之间的关系
系统中的域和服务使用两字节的代码标识,每个服务只能分配一个代码,且在系统中唯一,而域则分配了一个代码段。域所管理的服务代码中最前面的服务代码同时又是该域的域代码。
例如一个服务的服务代码是12C8H,它所在的域管理的代码范围是12C0H~3FFFH,则域代码是12C0H。
域和服务之间以及域和域之间的父子关系通过以下方式确定:
(1) 如果一个服务的服务代码位于一个域管理的服务代码范围内,则该域与对应的服务形成父子关系。
(2) 如果域A管理的的服务代码位于域B管理的服务代码范围内,则该域B与域A形成父子关系。