Transcript 支持fatfs
目录
理解lab6的文件系统
确定如何支持fatfs
简化的文件系统
下阶段工作
lab6的文件系统
fs_init()
Sys Call
fs.c
sysfile.c
file.c
vfs
dev
pipe
sfs
mount
stdio
other
Disk0
Disk1
fatfs
lab6的文件系统
fs-specific inode
Inode
Proc:
Fs_struct
In_info
pwd
In_type
Counts
In_ops
Fs_count
Fs_sem
fs
inode
filema
p
fs_func()
In_fs
node
file
fs_type
fs-specific fs
Stdin,fd=0
fd
Stdout, fd=1
Status
Privileges
Count
pos
fs_info
lab6的文件系统
支持fatfs
vfs
fs
inode
fatfs
FATFS
Config
FIL/DIR
fatfs-standard
DRIVE buffer C/H/S
Disk IO
buffer C/H/S
Disk1
支持fatfs
Granularity:
inode对应DIR和FIL
fs对应FATFS
Cache & sync
由fatfs自己处理,其提供f_sync函数
Re-entrancy
_FS_REENTRANT选项=0
由vfs_op完成
支持fatfs
Disk io
Fatfs需要底层disk io函数支持
使用驱动器号访问,支持10个驱动器
Filename
"[drive#:][/]directory/file"
支持相对路径,LFN和SFN,同时提供支持Unicode的API
调用。
Critical section
f_sync,f_close
简化的文件系统
Flat Directory
Remove dirops:
mkdir, create, truncate,
link, unlink, rename
Lookup_parent
Remove pipe/fifo
Thin the vfs layer
Proj19~5700 lines, now reduced 1500lines
下阶段工作
Simple Linked FileSystem
DMA
Buffer cache
Implement in the vfs layer
cache replacement algorithm
write-behind
read-ahead
Boot from USB Device
撰写的wiki
Lab6文件系统的理解:
http://code.google.com/p/u9proj/wiki/fs_dir_remark
拼接fatfs:
http://code.google.com/p/u9proj/wiki/fatfs_vfs_connection
简化文件系统Q:
http://code.google.com/p/u9proj/wiki/simple_indexed_fs_QA
Buffer cache的理解:
http://code.google.com/p/u9proj/wiki/buffer_cache