阅读:1244回复:8
请帮忙!
各位大侠,小弟我现在把文件系统看完了,scsi也看完了,现在不知道怎么进行下一步的工作!主要是怎么在flash上建立文件系统。
因为对于文件的读写操作,固件不会怎么关系,只需要响应read和write命令就可以了,但是对于文件系统,是不是一开始就得建立好!按照我的理解,首先把响应相应得scsi命令的固件写好,然后用工具在flash上建立MBR,DBR,FAT,DIR这几个区域,然后在把flash加到系统中,不知道是不是这样一个步骤? 请大哥们指点一下,要是没有太多时间回贴,请给我个文档看看也可! 谢谢!!! |
|
沙发#
发布于:2004-05-12 09:09
还有,小弟抓了u盘的几个数据,不知道为什么从各个命令的返回数据中u盘块的数量却不一致,不知道是为什么,请指教!
1.首先是Read Format Capacities命令中返回的数据: 13 DO 55 53 42 43 - e8 52 c5 86 fc 00 00 00 - 80 00 0a 23 00 00 00 00 - 00 00 00 fc 00 00 00 00 - 00 00 00 13 DI 00 00 00 08 - 00 10 00 00 03 00 02 00 13 DI 55 53 42 53 - e8 52 c5 86 f0 00 00 00 - 00 根据UFI协议,从这个地方看出,NUMBER OF BLOCK = 00 10 00 00 2 再看看Read capacity命令中返回的数据 13 DO 55 53 42 43 - c8 8c f5 83 08 00 00 00 - 80 00 0a 25 00 00 00 00 - 00 00 00 00 00 00 00 00 - 00 00 00 13 DI 00 00 fb ff - 00 00 02 00 13 DI 55 53 42 53 - c8 8c f5 83 00 00 00 00 - 00 从这个地方可以看出,last logical block address=00 00 fb ff 3 还有DBR中的数据表明分区的中扇区数是 a0 - fb eb 3c 90 4d - 53 44 4f 53 35 2e 30 00 - 02 01 01 00 02 00 02 a0 - fb f8 fa 3f 00 ff 00 - 20 00 00 00 我想知道,为什么这几个地方的块数都不一样呢 |
|
板凳#
发布于:2004-05-11 14:03
而且连MBR,DBR等占用哪些块都由主机决定了?MBR占用第0块,DBR占用MBR.PT[0].RelativeSectors的块,然后是FAT占用DBR的起始块号+BPB_WReservedSce(保留扇区数)的块,然后是FDT,然后是DATA区,这些位置都是由主机决定了?
|
|
地板#
发布于:2004-05-11 13:57
那照这样看来,固件不需要给flash分配MBR,DBR。。。等区域,这些区域的分配和填充完全是pc的事情了,固件只用响应write和read等几个命令了,是不是这样呢?
如果是这样的话,现在我也不需要在flash上自己建立文件系统,而只要响应主机的write和read等命令了? |
|
地下室#
发布于:2004-05-11 13:06
不用状态位,u盘有没有格式化,你是通过读块0的来判断的。一般块0的第一个字节为0xE9或0xE8那么表示u盘已经格式化了。
u盘的每次插入都要执行read format capacity 和read capacity命令,在处理这两个命令时你可以读u盘的块0来判断u盘是否格式化,然后根据结果来发送相应的应答。 |
|
5楼#
发布于:2004-05-11 12:44
还有一点疑问,就是主机是通过read format capacity和read capacity来知道u盘是否被格式化了的,那么在u盘的固件中,是不是还有一个状态位来指示u盘是否被格式化,那么当u盘被格式化后,这个状态位应该被改变,那么这个状态位应该怎么存储呢?因为u盘可以被拔出,就会没有电,它的内存的数据也会消失,是不是,那这个问题应该怎么解决呢?
|
|
6楼#
发布于:2004-05-11 11:02
刚才去试了一下,果然是不用先格式化的。
在u盘的建立过程中,主机首先要请求read format capacity和read capacity这两个命令,设备端会在应答中告诉主机u盘是否格式化,u盘的容量是多大(有多少个块),每个块的大小(一般是512)。如果是已经格式化的话,我们就不讨论了。如果没有格式化,在pc上显示一个u盘的盘符,当你去访问的时候,会告诉你u盘没有格式化,问你是否要格式化u盘,选择格式化,主机会发送一系列的信息去格式化u盘,这些信息都是通过write10命令来实现的,信息的内容主要是MBR ,PBP,FATA等格式化u盘必须的信息,这些信息不需要你去组织,主机(也就是pc)根据你在read format capacity中发送来的信息,以及你在主机的格式化控制面板中选择的信息来形成上述的MBR,PBP,FAT等信息。 我想你还是自己做一下,然后用BUSHOUND抓抓包看看,就比较容易理解了。 |
|
7楼#
发布于:2004-05-11 10:12
那我想问一下,在格式化时会划分MBR,DBR,FAT,FDT,DATA这些区域吗?按我的理解,好像这些是u盘在第一次运行时就已经做好了,format只是修改FAT,FDT,DATA这些区域的内容,而没有改MBR,DBR吧??
|
|
8楼#
发布于:2004-05-11 09:48
我在做的时候时先格式化了一个磁盘,不过我认为不需要预先建立一个文件系统。在read capacity和read format capacity命令中会要求你返回u盘是否格式化,以及u盘的容量,块的大小等信息。host会根据这些信息格式化你的u盘。
以上是我的猜测,我去试验一下看看。建议你可以先动手做做看。 |
|