阅读:2167回复:18
SL811HS的U盘接口的问题,向各位请教
请问各位
我在作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... |
沙发#
发布于:2004-03-19 09:45
本人在线等
qq:46831682 希望能与各位交流 谢谢…… |
|
板凳#
发布于:2004-03-19 09:47
他是cbw的包体结构了 一个个发出去就是了
至于f16跟简单 我最进想搞ntfs有兴趣吗? |
|
|
地板#
发布于:2004-03-19 09:47
如果需要问我
|
|
|
地下室#
发布于:2004-03-19 09:49
不过是一些小东东 我5搞定了811 不过我觉得f16太简单没搞了
|
|
|
5楼#
发布于:2004-03-19 09:56
引用:他是cbw的包体结构了 一个个发出去就是了
至于f16跟简单 我最进想搞ntfs有兴趣吗? 现在是要改造结构体,使它在后面SPC_TestUnit() SPC_LockMedia() SPC_RequestSense() SPC_TestUnit() RBC_ReadCapacity() 等等中都可以直接用的啊? |
|
6楼#
发布于:2004-03-19 09:58
楼上的可以加我QQ或者
packy_naok@msn.com吗? (最好是QQ,我们公司MSN老是掉线) 这样说不太清啊 |
|
7楼#
发布于:2004-03-19 10:00
我相信所有文件格式是相通的
FAT16能做,别的都可以做 我最近下班以后就在看LINUX源码情景分析中的文件系统那章 觉得原理上不过如此 楼上的要做NTFS可以啊,探讨一下,看看有没有机会一起做啊? |
|
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的时候如何做呢? |
|
9楼#
发布于:2004-03-19 10:07
因为涉及到
#define CBW_SIGNATURE 0x55534243 以后 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE 的话,会报错的啊…… |
|
10楼#
发布于:2004-03-19 10:15
怎么没有人回了呀?
我好急啊…… |
|
11楼#
发布于:2004-03-19 10:19
wait......................
|
|
12楼#
发布于:2004-03-19 10:28
wait
|
|
13楼#
发布于:2004-03-19 10:28
我说一下吧 我没qq
|
|
|
14楼#
发布于:2004-03-19 10:29
不能直接用 因为你的排序 不一定一样 要分析
|
|
|
15楼#
发布于:2004-03-19 10:31
呵呵 没有永恒的问题 哈哈
努力把 兄弟 |
|
|
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]; |
|
17楼#
发布于:2004-03-19 11:09
还是我自己搞定了
我把前面三个都定义成有四个U8(实际上是16)成员的结构体 通过结构体赋值就行了 就是比较麻烦而已 |
|
18楼#
发布于:2004-03-19 11:12
还是要谢谢SUNSHANGXIN的热心
要合作的话可以MAIL交流…… |
|