请问有做过U盘的高手,write10(scsi_2)应该怎样写好?

[复制链接]
2180|1
 楼主| 小小电子 发表于 2007-5-3 22:22 | 显示全部楼层 |阅读模式
我用的是128M的flash,由于单片机的数据存储器容量有限,所以我有4次读写完成1 page 的操作.下面这样写可以吗?
void Write10(void)

  unsigned long int  ByteCount;
  unsigned int Transfer_Length;
  unsigned int address;
  unsigned char rank;
  unsigned long Logical_Block_Address;
  Logical_Block_Address=cbw.CBWCB[2]*0x1000000;
  Logical_Block_Address+=cbw.CBWCB[3]*0x10000;
  Logical_Block_Address+=cbw.CBWCB[4]*0x100;
  Logical_Block_Address+=cbw.CBWCB[5];
  Transfer_Length=cbw.CBWCB[7]*256+cbw.CBWCB[8];//the number of page(block).
  while(Transfer_Length--)
  {
   for(rank=1;rank<=4;rank++)
   {
      ByteCount=512;address=0;
      while(ByteCount>MAX_BULK_DATA_SIZE)
      {
        read_endpoint_buff(1,MAX_BULK_DATA_SIZE,&buffer[address]);
     ByteCount-=MAX_BULK_DATA_SIZE;
        address+=MAX_BULK_DATA_SIZE;
     }
    read_endpoint_buff(1,ByteCount,&buffer[address]);
    Flash_page_program(rank,Logical_Block_Address,&buffer);
    }
   Flash_reflash();
   Logical_Block_Address++;
    }
  Return_CSW(0,SUCCESS);
}


262063258 发表于 2007-5-4 19:07 | 显示全部楼层

怎么没人回复啊!!!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

181

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部