larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2883回复:22

斑竹大大,请问linux下的一个问题,急

楼主#
更多 发布于:2004-02-23 12:28
斑竹大大,在linux下,使用系统的u盘驱动时,我的ap如何直接向usb设备发协议命令,或u盘的usb设备节点是什么,怎么取得,或者您给出相关资料地点
larry
arthurcao
驱动小牛
驱动小牛
  • 注册日期2003-10-12
  • 最后登录2012-07-08
  • 粉丝0
  • 关注0
  • 积分92分
  • 威望20点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-06 21:12
有研究这个的么联系一下.
arthurcao喜欢开源。
arthurcao
驱动小牛
驱动小牛
  • 注册日期2003-10-12
  • 最后登录2012-07-08
  • 粉丝0
  • 关注0
  • 积分92分
  • 威望20点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-06 20:57
还有人做么,给个想U盘写一个文件的例子可以么?
arthurcao喜欢开源。
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-14 22:18
没有有这方面经验的大大吗?
larry
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-12 09:43
dindin
larry
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-10 15:25
可不可以,请知道的大大给个信吧
larry
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-09 17:22
ioctl的cmd用什么,我只是要用到读或写数据的功能
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-03-09 11:37
这个要用ioctl了吧
你可以这样试试:
ioctl("/dev/sda1",cmd,你要传的参数)


[编辑 -  3/9/04 by  flycat0101]
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-09 11:26
如果我的u盘里有个文件1.dat,我mount /dev/sda1 /usb,再fopen("/usb/1.dat",....)那我不是对这个文件进行读写了吗?我在usb的firmware里设置了我自己的协议来执行特殊用途,ap想通过bulk传输来把这个协议数据发下来给usb firmware,达到通知usb firmware执行特殊命令的目的,望不吝赐教
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-03-09 11:17
你是说我
mount /dev/sda1 /usb
然后fopen("/usb/filename",...)
可是filename 是什么,不是很明白

你在windows下或者是linux下对一般文件操作过没有?和那个一摸一样的
filename可以是已经存在的文件,也可以是不存在的文件,如果是不存在的文件那么在参数中就要指定它创建一个,不然会出错返回的。
在linux下,所有的设备都是当作文件进行操作的,所以,文件操作的命令几乎都能用,格式是一摸一样的。相对windows来说更统一

[编辑 -  3/9/04 by  flycat0101]
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-09 11:11
你是说我
mount /dev/sda1 /usb
然后fopen("/usb/filename",...)
可是filename 是什么,不是很明白
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2004-03-09 11:08
可是我不知道怎么和驱动联系,我用的是系统自带的u盘驱动,我怎么写呢,使用什么节点来fopen呢,是不是我应该自己写个u盘的驱动才能做到这一部

比如你把/dev/sda1 mount到了/usb中
那么你就open("/usb/文件名",参数)
然后read、write

你的明白?
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-03-09 11:03
可是我不知道怎么和驱动联系,我用的是系统自带的u盘驱动,我怎么写呢,使用什么节点来fopen呢,是不是我应该自己写个u盘的驱动才能做到这一部
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2004-03-09 10:59
照你的说法,你只是要实现数据的传输而已
那么你不用关心使用什么协议以及使用那种方式传输,你只用把数据写下去就行了,这些工作由驱动程序来做

在你mount你的U盘后,U盘就像是你的系统硬盘上的文件一样了
对这些文件怎么操作就怎么操作在U盘上
就像你不用关心硬盘驱动是怎么把数据写道硬盘一样,你也不用不关心u盘驱动是怎么把数据写到U盘一样。U盘是作为一个块设备进行操作了(因为把它当作了scsi设备)
open一个文件,然后对它进行read、write,完了后close就行了

[编辑 -  3/9/04 by  flycat0101]
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-03-09 10:55
我想直接发一些协议命令给usb设备,比如象在windows下,通过usb的驱动,来作bulk传输
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2004-03-09 10:48

你说的那些步骤我都可以了,我通过fopen("/dev/sda1")后,fread已经可以读出u盘的扇区数据了。但是我想对usb设备部分直接发送命令,不知有什么办法没有


你要对什么发送什么命令?
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-03-09 10:46
谢谢flycat0101的回复。
你说的那些步骤我都可以了,我通过fopen("/dev/sda1")后,fread已经可以读出u盘的扇区数据了。但是我想对usb设备部分直接发送命令,不知有什么办法没有
larry
flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2004-03-09 10:32
首先你要确认你的U已经被linux系统认出来
这个可以查看/proc/devices和/proc/scsi下是否有usb-storage-0出现,如果有的话,一般来说就是已经认出来了
还有在检测partition table时如果出现:unknown partition table而不是sda1或者sdb1的话,不能mount上的
如果这些都是正确的,接下来你就要看你的/dev下面是否已经建立了sda1或sdb1的节点,如果没有这要你自己使用mknod建立
建立好节点后,使用dd命令能够从U盘中读出数据了。

接下来的工作就是mount这个/dev/sda1了,再下来就是一般的文件操作了。
我思,故我在
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-03-09 10:21
顶一顶
larry
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-03-08 15:28
各位大大,是不是这样是不行的,做不到的,怎么没人出声啊,提点一下吧
larry
上一页
游客

返回顶部