sincostan
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1620回复:2

U盘文件系统的问题的请教

楼主#
更多 发布于:2005-03-08 21:59
    现有一ARM嵌入系统,有USB OTG控制器和K9F56xx0B Flash。系统正常运行已经有文件系统,类似POSIX。欲实现U盘的功能。现已经通过Windows对USB设备的枚举过程,显示出了可移动磁盘的盘符,只是还不能访问存储介质。想利用先有的文件系统创建一个目录,对于该目录作为U盘的存储区,然后设计一个FAT16文件系统的接口 层,以便Windows对此存储区进行读写。
    我想是不是应该首先对此目录按照FAT16的格式初始化好DBR(扇区、柱面、磁头等)、FAT1、FAT2和根目录等参数,以便让Windows确定容量。然后再响应UFI命令中的Read(10)、Write(10)命令进行读写U盘的文件。很奇怪这两个命令包中用的是Logical Block Address和Transfer Length参数,怎么和Windows资源管理器中的文件名对应呢?也就是mass storage UFI协议中的一些命令和FAT16文件系统的操作怎么对应呢?假设响应Write(10)命令,写一个文件到存储区,还要负责实现更新FAT表里的内容吗(因为一个文件对应一条簇链)?哪些是windows已经做好的,哪些要自己实现的?
     不想闭门造车,欢迎讨论理思路!
Shentu
驱动小牛
驱动小牛
  • 注册日期2004-04-05
  • 最后登录2011-01-24
  • 粉丝0
  • 关注0
  • 积分234分
  • 威望24点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-08 23:26
UFI命令是用“扇区”来定位的,一个扇区是512字节,Logical Block Address 代表从第几个“扇区”开始,Transfer Length代表要操作几个扇区。我们要做的只是初始化好MBR,然后读写时一一对应的根据逻辑地址转化到实际的地址就搞定了。。
yuhang85
驱动牛犊
驱动牛犊
  • 注册日期2010-01-21
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-04-28 20:27
回 1楼(Shentu) 的帖子
您好 可以请教您几个问题吗呵呵  我现在就是学习Flash读写的   我的QQ442133447 或者我加您的QQ 非常感谢哦
Come on!
游客

返回顶部