①创建文件。在fdt中申请新目录项。
②写文件。当写一新文件时,需在fat表中查找未使用的簇,并将该簇号写入文件对应目录数据结构中的起始簇号位置。当此文件长度大于一簇时,还需在fat表中对应的起始簇号位置填入下一可用簇的簇号,直到文件的最后一簇(fat表中的相应位置填ffff)。若磁盘有备份fat,则须在备份fat表的相应位置填入正确的内容。
③删除文件。除了将fdt中对应的目录项置相应标志外,还要修改fat表及备份fat表。将此文件使用的簇号位置清0,表示此簇当前未被使用。
由于在fat16中子目录被视为特殊的文件,对其操作类似于文件操作,所以不再赘述。
构建的fat16文件系统对用户提供文件级api函数,如ch375_creat_file()、ch375_write_file()、ch375_delete_file()等,当执行文件级api函数时,将调用seck_empty_cluster()寻找一个空簇、link_cluster_list()建立簇链、seck_sector()定位文件指针等中间函数。这些中间函数在调用ch375s专用于海量存储设备类对应的命令,如set_usb_mode、disk_read、disk_write等。下面以创建adc.txt,并向其中写入a/d采样数据为例,其工作流程如图3所示。
用fat16文件系统存储文件时最小单元为簇。即使一个很小的文件也会占用一簇,所以,为了节约存储空间,在图3中将创建同名文件并向其中写入数据转换为向原文件追加数据。
3、大容量数据采集系统设计
利用已设计好的嵌入式usb-host搭建起大容量数据采集系统,系统的框图如图4所示。
温度传感器采用ds18b20。它是单总线数字温度传感器,测量范围为-55~+125℃,可编程9~12位a/d转换精度,测温分辨率可达o.0625℃。液晶采用tm320240eccw,它是320×240点阵液晶,显示控制芯片是sed1335,既可以以文本模式显示所测温度数据,也可以自建平面坐标以曲线模式显示温度数据。外扩了4×5键盘,用于设定采集的时间间隔、时间长度;系统所允许的高、低温容限;设定采集时的时间以及输入自己想查看数据的存储区域。键盘用8279管理,目的是减轻单片机的负担。因为单片机处理温度采集及温度数据在液晶上显示时已经耗去一些时间,再加上定时和不定时的读/写u盘,负荷已经很重了,所以键盘扫描与处理交给8279来做。单片机采用查询方式查询8279的中断。