yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5851回复:24

今天我的优盘调试成功,谈谈感想

楼主#
更多 发布于:2005-04-07 16:29
今天我的优盘调试成功,有点感想和大家分享
我选用avr系列的 atmega162单片机原因是速度快,有外部扩展接口
使用方便一些,1K RAM。 缺点是价格偏高,资料全是E文(头大的很,好在与其他avr机型差别不大)。usb是pdiusbd12,单片机时钟是d12输出8M,Flash是k9f5608,32M,这些搭配完全是为了速度。信我一句话千万别用51了(慢),协议scsi2,Bluk_only,别的协议都试过,不行。
有3点要注意:
1。中断用电平触发
2。Write10命令时由于D12是双缓冲所以要等128Byte全满才读(在此
处我是大费周折)。
3。用512Byte当缓存
好了。我的优盘速度非常快似乎比我买的还快,读、写、格式化一切正常。

有句话与大家共勉:
    事物是由问题组成的,没有问题不能被解决  ---- 我
希望大家成功!!!!!!!!!!!!!!!!!!                          

hanlei
驱动牛犊
驱动牛犊
  • 注册日期2005-03-28
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-07 17:30
做USB驱动必须要单片机或开发卡吗?
它们起什么作用?
谢谢!
我的操作系统: windows 2003 server 我的编译器 Visual Studio.NET 2003 DDK: windows 2003 DDK DriverStudio v3.2
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-08 09:33
当然,不然你驱动谁呀,
我叫它们目标板这样可能更清楚点
我做驱动直接用DDK这样一切都在你的掌握中,DriverStudio我想更象VB,学起来容易,用起来难,感觉不好(一家之言,只供参考)
驱动程序本身是为硬件服务的。 单片机系统只是硬件之一,不一定用到。
hanlei
驱动牛犊
驱动牛犊
  • 注册日期2005-03-28
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-08 09:41
一个USB移动磁盘包含一个单片机加一个Flash对吗?
我怎样知道我的移动磁盘的这些相关参数?
谢谢!
我的操作系统: windows 2003 server 我的编译器 Visual Studio.NET 2003 DDK: windows 2003 DDK DriverStudio v3.2
yonganxie
驱动牛犊
驱动牛犊
  • 注册日期2002-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分88分
  • 威望13点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-08 12:46
当pc能够正确读到描述符后,pc是根据什么去匹配window2000的标准mass storage 驱动?自动装上驱动(microsoft提供的),谢谢
fhx
fhx
驱动牛犊
驱动牛犊
  • 注册日期2002-07-30
  • 最后登录2009-12-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-08 14:04
能否把SCSI协议部分原码共享,我正在研究协议
liub950511
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-08 15:04
我的读取优盘有问题
sd_mod
scsi_mod
usbcore
sl811.o
usb_storage
等模块均insmod成功。插上优盘,提示是no partition table
但是在linux下面一起正常
不知哪里设置缺了?高手指点下啊,郁闷一下午了
krise
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2005-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-08 15:45
为什么一定要写满128个才能读呢?如果我每次只读64个字节,那么是不是仍需要写满128个才能读对???
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-08 17:15
文件系统是按簇分配空间的,也就是说至少要写512Byte,
D12的双缓冲的第2缓冲有时读出不一定是64字节这样在写
页时,记数会混乱有时超出512,有时少于512,如果你硬
要这样处理的话,会增加难度,缓存不好设置,所以我用
每128字节读。

对于源码,现在我还在调试,对不起等等吧
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-08 17:21
系统是根据你提供的设备描述符中的VIP、DIP和接口描述符中的
类、子类、协议类型来确定驱动程序的、
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-04-08 17:35
对于6楼,我想你需要在固件程序中加入一个格式化函数,等调试完成把这个函数屏蔽掉。让windows在format一遍

格式化函数要按你的容量来自己做

不过我没有遇到你的问题,按理说应该提示你磁盘没有格式化
也可能是你 Read_capacity、Read_format_capacity、mode_sense
返回有问题、可用BusHound抓一个好的u盘看一下好好设置,问题
应该很好解决
xiaoxiaohe
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2008-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-08 19:42
请问楼主,您做过移动硬盘方面的开发吗?
我作的U盘好使了!
但是作移动硬盘一直没有成功啊!
希望能和您交流!
mail:helei99@163.com
QQ:18022238
说明:移动硬盘
谢谢!
热爱硬件设计,热爱驱动开发!!! 希望和大家一起成长!! QQ:18022238
supersxj
驱动牛犊
驱动牛犊
  • 注册日期2002-11-22
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-04-09 23:04
楼主能不能给一下mode sense这条命令的应答,我U盘这条命令应答总是有些问题,请说一下如何应答,或者贴一下Bus Hound捕捉的文件,我想看一下,多谢

[编辑 -  4/9/05 by  supersxj]
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-04-11 09:32
mode sense 应答:
3,0,0,0 或 3,0,0x80,0二者的区别是第一个没有写保护,第二个有写保护
yonganxie
驱动牛犊
驱动牛犊
  • 注册日期2002-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分88分
  • 威望13点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-04-15 16:45
设备枚举成功,并且在设备管理器中能够看到我的USB设备,主机发了inquiry命令,我也成功的回了数据,但是为何不能够看到盘符呢?中间还要做起他的工作吗?主机也发了mode sense和read capacity,read sect 0,我都正确的回了相关的数据,但是还是没有看到盘符,接着主机就不命令了,不知道为何?我的文件系统的MBR没有启动功能也没有partition entry的那种。
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-04-16 17:29
看看host是否发出 Read format capacity (0x23)命令,
如果有返回相应数据
我的32M是:
#define CAPACITY_LIST_LENGTH sizeof(CAPACITYLIST_HEAD)+sizeof(CM_FORMAT_CAPACITY_DATA)
const CAPACITYLIST_HEAD CapacitylistHead={
   0,0,0,//unsigned char Reserved0[3];
   sizeof(CM_FORMAT_CAPACITY_DATA) //unsigned char CapacityLength;
};
const CM_FORMAT_CAPACITY_DATA CMFormatCapacityData={
   0,0x10,0,0,//unsigned char LogicalBlockAddress[4];
   3, //unsigned      DescriptorCode                  :2;
   0, //unsigned      Reserved0                       :6;
   0,2,0 //unsigned char LogicalLength[3];
};
按CAPACITY_LIST_LENGTH 长度返回
如果还不行 看看你的格式化是否有问题;
不过我的盘符没格式化很容易就出来了,很可能是你返回的
前几个命令有问题,好好查一查。
yonganxie
驱动牛犊
驱动牛犊
  • 注册日期2002-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分88分
  • 威望13点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-04-18 11:15
多谢了,我的flash上的文件系统时没有MBR的那种,你能否把你抓下来的数据给我看看?yonganxie@sohu.com,我不知道windows能够认出这种文件系统否?我们以前自己开发的是对这种文件系统兼容的。
yuxk2001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-07
  • 最后登录2009-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-04-20 15:10
我已经把源码贴到‘源代码与分析’栏目中
请各位好好享用吧,
如果发现问题,一定要回复,这样才能共同进步
keta0123
驱动牛犊
驱动牛犊
  • 注册日期2005-04-07
  • 最后登录2005-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-04-21 14:30
有源代码与分析这个栏目吗?
hantian_2005
驱动牛犊
驱动牛犊
  • 注册日期2005-02-14
  • 最后登录2006-12-21
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-04-21 16:29
不知咋回事 就是下不了
上一页
游客

返回顶部