packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2167回复:18

SL811HS的U盘接口的问题,向各位请教

楼主#
更多 发布于:2004-03-19 09:41
请问各位
我在作SL811HS的U盘接口的时候买了一个开发板,是基于单片机的。
其中有
typedef struct _COMMAND_BLOCK_WRAPPER{
    INT32   dCBW_Signature;
    INT32   dCBW_Tag;
    INT32   dCBW_DataXferLen;
    INT8    bCBW_Flag;
    INT8    bCBW_LUN;
    INT8    bCBW_CDBLen;
    CDB_RBC cdbRBC;
} CBW, *PCBW;
在mass_storage_bo中也的确有这样的要求,也就是CBW包必须精确为31BYTE,上面的CDB_RBC为16字节,

所以上面包的大小也就是4+4+4+1+1+1+16,共31字节
那么我现在移植到DSP5402的时候就有这样的问题:在单片机中,INT32是四个BYTE,但是DSP系统还要考

虑与8019的配合,所以只能给所有BYTE级分配WORD级空间,也就是一个BYTE占用16位,高八位舍弃不用,

但是协议要求All CBW transfers shall be ordered with the LSB (byte 0) first (little endian).

比如说dCBW_Signature=0x43425355,要求分四次每次一个BYTE的通过总线,(0x43,0x42,0x53,0x55)这

样才会被认为是接收到为CBW包,我怎么样改造这个结构体,让它能在我现在的系统中跑起来?

还有一个问题,FAT16子目录是怎么样实现的?
在根目录中创建目录的时候,也象文件一样创建?分配空间的时候也会至少分配一簇?
它的DIR信息中的STARTCLUSTER存储的是什么内容?

请各位解答,谢谢~!

[编辑 -  3/19/04 by  packy_naok]

最新喜欢:

purple.sunpurple...
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-19 09:45
本人在线等
qq:46831682
希望能与各位交流
谢谢……
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-19 09:47
他是cbw的包体结构了 一个个发出去就是了
至于f16跟简单 我最进想搞ntfs有兴趣吗?
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-19 09:47
如果需要问我
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-19 09:49
不过是一些小东东 我5搞定了811 不过我觉得f16太简单没搞了
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-19 09:56
引用:他是cbw的包体结构了 一个个发出去就是了
至于f16跟简单 我最进想搞ntfs有兴趣吗?


现在是要改造结构体,使它在后面SPC_TestUnit()
SPC_LockMedia()
SPC_RequestSense()
SPC_TestUnit()
RBC_ReadCapacity()
等等中都可以直接用的啊?
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-19 09:58
楼上的可以加我QQ或者
packy_naok@msn.com吗?
(最好是QQ,我们公司MSN老是掉线)
这样说不太清啊
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-03-19 10:00
我相信所有文件格式是相通的
FAT16能做,别的都可以做
我最近下班以后就在看LINUX源码情景分析中的文件系统那章
觉得原理上不过如此
楼上的要做NTFS可以啊,探讨一下,看看有没有机会一起做啊?
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-19 10:05
改成
typedef struct _COMMAND_BLOCK_WRAPPER{
u8 dCBW_Signature[4];
u8 dCBW_Tag[4];
u8 dCBW_DataXferLen[4];
u8 bCBW_Flag;
u8 bCBW_LUN;
u8 bCBW_CDBLen;
CDB_RBC cdbRBC;
} CBW, *PCBW;
????

那么我在后面引用的时候,特别是在dCBW_Signature中#define的时候如何做呢?
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-03-19 10:07
因为涉及到
#define CBW_SIGNATURE   0x55534243
以后
TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE
的话,会报错的啊……
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-19 10:15
怎么没有人回了呀?
我好急啊……
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-19 10:19
wait......................
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-03-19 10:28
wait
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-03-19 10:28
我说一下吧 我没qq
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-03-19 10:29
不能直接用 因为你的排序 不一定一样 要分析
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-03-19 10:31
呵呵 没有永恒的问题 哈哈
努力把 兄弟
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-03-19 10:33
typedef struct _COMMAND_BLOCK_WRAPPER{
u8 dCBW_Signature[4];
u8 dCBW_Tag[4];
u8 dCBW_DataXferLen[4];
u8 bCBW_Flag;
u8 bCBW_LUN;
u8 bCBW_CDBLen;
CDB_RBC cdbRBC;
} CBW, *PCBW;


顺序不一样可以调整上面三个的相应BYTE顺序啊?
另外u8 dCBW_DataXferLen[4];
可以考虑改为u32 u8 dCBW_DataXferLen[2];
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-03-19 11:09
还是我自己搞定了
我把前面三个都定义成有四个U8(实际上是16)成员的结构体
通过结构体赋值就行了
就是比较麻烦而已
packy_naok
驱动牛犊
驱动牛犊
  • 注册日期2003-08-18
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-03-19 11:12
还是要谢谢SUNSHANGXIN的热心
要合作的话可以MAIL交流……
游客

返回顶部