阅读:1712回复:5
请教write_10(写U盘)问题,急!
我在用sl811读写u盘,读已经做好了,写的时候,遇到如下问题,请各位大虾为小弟把脉诊断一下。
写flash的时候应该要求一次写一个扇区(512个字节),如果我连续发送512个字节的话,收到的状态是01。我想这是USB_mass_storage_bo规定每传输6(frank的报告中说是7次)次数据要返回一次CSW的原因吧。但我改成如下程序后,发送384字节后不能收到CSW(发送448个也一样),请各位大虾帮忙看看,指点指点小弟。万分感谢! char write_10(INT32 lba,INT8 len,INT8 *pBuffer) { char i; for(i=1;i<16;i++) Bulk_CBW.bCBW_CB=0; INT16 write_lba; Bulk_CBW.dCBW_Signature=CBW_SIGNATURE; Bulk_CBW.dCBW_Tag=0x68ac68ac; Bulk_CBW.dCBW_DataXferLen=512; Bulk_CBW.bCBW_Flag=0x0; Bulk_CBW.bCBW_LUN=0; Bulk_CBW.bCBW_CDBLen=10; ///////////////////////////////////// Bulk_CBW.bCBW_CB[0]=0x2a; write_lba=lba; for(i=5;i>1;i--) //小端系统 { Bulk_CBW.bCBW_CB=(INT8)(write_lba&0xff); rite_lba=write_lba>>8; } //小端系统 Bulk_CBW.bCBW_CB[8]=len; ////////////////////////////////////// if(!epBulkSend((INT8 *)&Bulk_CBW,0x1f)) return FALSE; if(!epBulkSend(pBuffer,384)) //64*6 return FALSE; if(!epBulkRcv((INT8 *)&TPBulk_CSW,13)) return FALSE; if(!epBulkSend(pBuffer,128)) return FALSE; //DelayMs(10); if(!epBulkRcv((INT8 *)&TPBulk_CSW,13)) return FALSE; ///////////////////////////// return TRUE; } |
|
沙发#
发布于:2004-07-18 10:12
char write_10(INT32 lba,INT8 len,INT8 *pBuffer)
{ char i; for(i=1;i<16;i++) Bulk_CBW.bCBW_CB=0; INT16 write_lba; Bulk_CBW.dCBW_Signature=CBW_SIGNATURE; Bulk_CBW.dCBW_Tag=0x68ac68ac; Bulk_CBW.dCBW_DataXferLen=512; Bulk_CBW.bCBW_Flag=0x0; Bulk_CBW.bCBW_LUN=0; Bulk_CBW.bCBW_CDBLen=10; ///////////////////////////////////// Bulk_CBW.bCBW_CB[0]=0x2a; write_lba=lba; for(i=5;i>1;i--) //小端系统 { Bulk_CBW.bCBW_CB=(INT8)(write_lba&0xff); rite_lba=write_lba>>8; } //小端系统 Bulk_CBW.bCBW_CB[8]=len; ////////////////////////////////////// if(!epBulkSend((INT8 *)&Bulk_CBW,0x1f)) return FALSE; if(!epBulkSend(pBuffer,384)) //64*6 return FALSE; if(!epBulkRcv((INT8 *)&TPBulk_CSW,13)) return FALSE; if(!epBulkSend(pBuffer,128)) return FALSE; //DelayMs(10); if(!epBulkRcv((INT8 *)&TPBulk_CSW,13)) return FALSE; ///////////////////////////// return TRUE; } |
|
板凳#
发布于:2004-08-01 13:05
问题解决了吗?
|
|
地板#
发布于:2004-08-01 13:14
我的和你差不多,我是用51+CH371读写U盘,目前我还什么都不知道,请问你是在深圳吗?如果是的话我想请教一些问题,或者电话方便吗?我愿意付报酬,因为这个是我参加工作以来第一个任务,我不想做砸。但是同样因为是第一次工作,我给的报酬不会很高,(800元左右)。本人女子,相信不会对人有伤害力。
|
|
|
地下室#
发布于:2004-08-01 13:16
我的QQ是170153870,有可以帮忙的人请和我联系
|
|
|
5楼#
发布于:2004-08-03 15:20
>>我想这是USB_mass_storage_bo规定每传输6(frank的报告中说是7次)次数据要返回一次CSW的原因吧。
请问哪一行有写? |
|