rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2794回复:15

windows下对U盘进行操作,发送给U盘控制器的命令的疑问?

楼主#
更多 发布于:2003-06-02 18:54

采用FLASH作为存储介质。
所有的删除,修改,改文件名,复制操作 是不是全都被系统转换成读和写两种命令?
则应给出相应的目的地址。我想请教:这个地址以什么样的形式给出,是直接的逻辑块地址还是别的什么?比如我想修改一个文件名字,在PC机上直接操作,反映到U盘的控制器的命令就是重写目录区的内容?传到控制器的是目录区所在的逻辑块地址和要重新写入的页面内容?

最新喜欢:

afei_whafei_w...
just do it
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-03 10:07
请教成功做成U盘的行家,固件中如何处理?
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-03 11:56
过程是这样的,主机要求设备重写目录区,主机发送的所有地址都是逻辑地址,这个地址需要固件进行转换!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-03 15:15
感谢NewTech,
你说的地址转换是Logical Block Address/0x20
和LBA%0x20得到块地址和页地址?
但是根据FLASH的资料,最终读写数据时,要发送的地址还是
16位的地址啊。我觉得还是那个LBA,为什么要转换掉
just do it
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-03 18:29
Logical Block Address是逻辑地址,如果你的扇区大小是512,一簇是32扇区,那么Logical Block Address就等同于flash的page,也就是你说的“16位地址”。如果一簇的大小不是32扇区,就要相应的转换。
虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-03 21:22
Logical Block Address是逻辑地址,如果你的扇区大小是512,一簇是32扇区,那么Logical Block Address就等同于flash的page,也就是你说的“16位地址”。如果一簇的大小不是32扇区,就要相应的转换。

你是说LBA与簇的大小有关?比如说我定义簇为8个扇区。
那么Block =LBA/8
page=LBA%8
最后要发送的“16位地址”=Block<<5|page
是这样的换算关系?
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-04 02:30
你们说得都不对,实际上逻辑地址就是LBA,但是LBA跟实际的物理地址并不是一一对应的,比如说逻辑地址0x20,有可能对应的物理地址是0x1000,并且一个zone的逻辑地址是1000块,而一个zone的物理块数是1024块,有些是用来交换的,或者是标记为坏块。例如你见过u盘有坏块吗,实际上是有的,但是被屏蔽掉了!
sky412
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2013-03-07
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-04 09:01
rainysky1224,很抱歉给了你错误的提示!
NewTech,你所说的zone是什么?不懂?那么具体两者的转换关系特定的公式有吗?
虽然我比较烦,但是我真不懂!
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-04 13:53
 :),
共同学习,共同进步!
zone应该是分区吧。
NewTech,那逻辑地址和物理地址的转换,是不是纯粹有个人决定。
其目的仅是为了打乱文件的物理存储顺序,起保护作用?
逻辑地址是指块地址?那么一块是32个页面。PC机发出的逻辑
地址,岂不是只能定位到块,而不是页面?
当往Flash里面写数据的时候,所发出的地址是物理页地址吧
(参考一个固件程序)


just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-05 12:13
1、zone是人为的划分的逻辑区与物理区对应的大小
2、逻辑地址和物理地址的转换,是为了刷新的时候,重新找个快标记为当前的逻辑地址
3、逻辑地址不完全是指块地址,因为现在有两种格式:MSDOS格式、和SMARTMEDIA格式?
4、当往Flash里面写数据的时候,所发出的地址是逻辑地址
rainysky1224
驱动牛犊
驱动牛犊
  • 注册日期2003-02-16
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-08 14:02
厉害!
NewTech,不愧为资深会员。
just do it
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-09 02:13
那里那里!肤浅的很哪!
Jim_Witte
驱动牛犊
驱动牛犊
  • 注册日期2003-01-06
  • 最后登录2003-10-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-09 11:19
NEWTECH老大:你说的LOW FORMAT 要做哪些事?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-10 01:02
low level format实际上是相对windows的格式化而言的,就是将全部的flash擦除并且校验一遍并分区!
yuhang85
驱动牛犊
驱动牛犊
  • 注册日期2010-01-21
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2010-05-10 09:47
回 11楼(NewTech) 的帖子
您好:NewTech 呵呵,有一个问题想请教,你的意思是说主机发来的Read  或者Write 里面的逻辑块地址就是对应的一个逻辑起始扇区,然后长度是扇区的个数。是这样的吗? 另外我们的Flash,每块和 每个页的大小都是不一样的,我们需要把这个逻辑块地址也就是某一个起始扇区的地址转换成对应的Flash上面的某个块内某个页,然后按512B(扇区)的单位来读写。是这样的吗??期待您的回复 谢谢
Come on!
jinpaiyuangui
驱动牛犊
驱动牛犊
  • 注册日期2009-08-31
  • 最后登录2011-05-28
  • 粉丝0
  • 关注0
  • 积分78分
  • 威望601点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2010-05-10 19:31
你理解的很对
有一点有误,对FLASH的写操作是以该FLASH的页为单位进行的,不是固定的512B
游客

返回顶部