2009-07-21
注册 | 登录 | 网站地图
 内容管理 > 论坛精华 2009-9-11

怎样在LPC2478上实现SD Card 文件系统?

关键字:LPC2478
人气: 302

SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地用于便携式装置上使用,例如数码相机个人数码助理(PDA)和多媒体播放器等。
SD卡的技术是基于MultiMedia卡(MMC)格式上发展而来的,大小和MMC差不多,尺寸为32mm x 24mm x 2.1mm。长宽和MMC一样,只是比MMC厚了0.7mm,以容纳更大容量的存贮单元。SD卡与MMC卡保持着向上兼容,也就是说,MMC可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。(SD卡外型采用了与MMC厚度一样的导轨式设计,以使SD设备可以适合MMC)。
SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方便地保存到SD卡中。因此不少数码相机也开始支持SD卡。
见于SD卡的广泛应用,一些ARM厂商也纷纷在自己的产品中专门设立了SD卡的接口来支援SD卡,NXP的LPC24XX系列就全面支持SD卡的读写。但是我们通常读写文件需要文件系统的支持,怎样在SD卡中建立起较为流行且易于操作的文件系统呢,这就是我今天要和大家讨论的话题,即在LPC2478上建立基于SD卡的FatFs文件系统。
FatFs Module是一种便于在嵌入式设备中移植和使用的文件系统,其结构如下:
 
     
中间层FatFs Module实现了FAT文件读/写协议。FatFs Module的完全版提供的是ff.c、ff.h,简化版Tiny—FatFs提供的是tff.c、tff.h。除非有必要,使用者一般不用修改,使用时将需要版本的头文件直接包含进去即可。
需要使用者编写移植代码的是FatFs Module提供的底层接口,它包括存储媒介读/写接口DiskIO和供给文件创建修改时间的实时时钟。
  移植步骤如下:
1、编写 disk_initialize  – 初始化SD卡的接口函数
2、编写 disk_status    – 读取SD卡状态的接口函数
3、编写 disk_read      – 读取SD卡扇区的函数
4、编写disk_write      - 写入SD卡扇区的函数
5、编写disk_ioctl       - 控制设备的独立接口函数
6、编写get_fattime     - 为文件存取提供时钟的函数
   到这里,有关文件系统的所有底层函数全部移植完毕,这些函数会被FatFs的系统函数所调用,FatFs系统函数如下
1、f_mount - Register/Unregister a Work Area
2、f_open - Open/Create a File
3、f_close - Close a File
4、f_read - Read File
5、f_write - Write File
6、f_lseek - Move File R/W Pointer
7、f_truncate - Truncate File
8、f_sync - Flush Cached Data
9、f_opendir - Open a Directory
10、f_readdir - Read a Directory Item
11、f_getfree - Get Free Clusters
12、f_stat - Get File Status
13、f_mkdir - Create a Directory
14、f_unlink - Remove a File or Directory
15、f_chmod - Change Attribute
16、f_utime - Change Timestamp
17、f_rename - Rename/Move a File or Directory
18、f_mkfs - Create a File System on the Drive
19、f_forward - Forward file data to the stream directly
20、fgets - Read a string
21、fputc - Write a character
22、fputs - Write a string
23、fprintf - Write a formatted string
 
用户程序只需要调用FatFs的系统函数就可以在SD卡上存取文件了

相关资源
版权所有:华荣汇电子科技(北京)有限公司
COPYRIGNT(C) 2006 FORIC.COM.CN