使用ARM-LPC3131上的nandflash实现U盘模式心得(一)

使用ARM-LPC3131上的nandflash实现U盘模式心得(一)

         项目是基于NXPLPC3131的,之前实现了NANAFLASH启动的BOOTLOADER,使用的KEIL,话说NANDFLASH的自启动让我头疼了许久,不过最总还是实现了,感觉这个CODing的过程真是令人烦躁。言归正传,现在想继续实现通过USB传输来读写NANDFLASH,也就实现U盘模式。

实现U盘模式,必须了解USB设备协议、Mass Storage ClassUFI协议、FAT文件系统等相关知识。有了这三部分的实现后PC端就会认出一个U盘,和普通的盘无异。大致分3步:

1USB设备的枚举。涉及到基本的枚举命令,可以发现新硬件和类型,是Bulk-Only传输方式的Mass Storage设备,此过程是基于控制断点EP0

2UFI命令的答复。有三种数据包格式,分别是CBWOUT)、CSWIN)、普通数据Data。其中,设备需从CBW包中解析出相关的UFI命令,并做相应处理,可能涉及相关Data,然后发回CSW包作为一个命令应答的结束。此过程是基于传输端点Bulk-OutBulk-In

在我的程序里出现了以下命令:

INQUIRY0x12)、

READ_FORMAT_CAPACITY0x23)、

READ_CAPACITY0x25)、

READ_100x28)、

MODE_SENSE0x1a)、

TEST_UNIT_READY0x00)、

REQUEST_SENSE0x03)、

WRITE_100x2a)、

VERIFY0x2f

3FAT文件系统结构。我的程序用的是FAT16(因为盘的容量小)。做出的U盘的逻辑空间必须按照FAT文件系统的要求依次存放MBRDBR)区、FAT区(两张FAT表)、Directory区、Data区,具体空间分配如下:

 sector

 Block/Page

 Length

 Content

 0

 0,0

 512Bytes

 DBR=BPB + Excutable Code + 55AAH

 1-32

 1,0-1,31

16k

 FAT table

 33-64

 2,0-2,31

16k

 FAT table(backup)

 65-96

 3,0-3,31

 16k

 Directory

97-MAX

 4,0-MAX

 

 DATA

 今天先记录这些,后面有时间再写哦。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孜孜在学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值