注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习——USB驱动编写十CYPRESS86013A驱动2  

2013-09-18 10:02:45|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

LINUX驱动学习——USB驱动编写十CYPRESS86013A驱动2

 

最近把驱动从WIN下转到LINUX,出现了一个小问题,测试好的程序在启动时,报段错误。在LINUX觉得这个挺莫名其妙的,总是不断的报段错误,现在有几个人还知道段啊。虽说牛人很多,但绝大多数都不知道了。可能在WIN下开发多,还是觉得微软的VS好使。

查了一下午代码,结果发现没有什么问题。同事提醒说是不 权限的原因,在机器上:

Ls –all  /dev/bus/usb

Ls –all   /dev/bus/usb/001

在上面的两行命令中,第一行是看看USB下面挂接了多少设备,然后根据你的PIDVID来确定你的USB设备挂接到了哪个具体的设备端口符上。再执行第二行代码,第二行代码最后的数字代表你第一行执行时看到的设备端口符号。

然后会出现类似于下面的:

drwxr-xr-x 4 root root  80  9 18 08:42 .

drwxr-xr-x 3 root root  60  9 18 08:42 ..

drwxr-xr-x 2 root root  60  9 18 08:42 001

drwxr-xr-x 2 root root 100  9 18 08:42 002

000@ubuntu:~$ ls -all /dev/bus/usb/001

总用量 0

drwxr-xr-x 2 root root     60  9 18 08:42 .

drwxr-xr-x 4 root root     80  9 18 08:42 ..

crw-rw-r-- 1 root root 189, 0  9 18 08:42 001

000@ubuntu:~$ ls -all /dev/bus/usb/002

总用量 0

drwxr-xr-x 2 root root      100  9 18 08:42 .

drwxr-xr-x 4 root root       80  9 18 08:42 ..

crw-rw-r-- 1 root root 189, 128  9 18 08:42 001

crw-rw-r-- 1 root root 189, 129  9 18 08:42 002

crw-rw-r-- 1 root root 189, 130  9 18 08:42 003

000@ubuntu:~$ ls -all /dev/bus/usb/003

ls: 无法访问/dev/bus/usb/003: 没有那个文件或目录

大家看,确实是设备都属于ROOT用户权限,没办法,你可以直接使用SUDO来执行,也可以直接修改它的权限属性:

   sudo chmod 666 /dev/bus/usb/001/00*

sudo chown user /dev/bus/usb/001/00*

sudo chogrp user /dev/bus/usb/001/00*

最后的数字,代表你端口下(USB下的数字)的数字符号。

另外还有一种情况,如果设备的端口是随机分配的,每次都变化,那么可以使用下面的方法:

以下参考:http://blog.sina.com.cn/s/blog_643af43101015t98.html

    (1) 首先用lsusb命令查看厂家编码和产品编码

Bus 003 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard

Bus 001 Device 007: ID 0403:cb48 Future Technology Devices International, Ltd

Bus 001 Device 006: ID 0461:4d15 Primax Electronics, Ltd Dell Optical Mouse

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

其中ID后面的就是我们需要的,以第一行为例,产品编码是2003,厂家代码是413c

然后编辑/etc/udev/rules.d/70-persistent-usb.rules (这个文件可能不存在,可以自己创建。最开始的70可以改,根据自己电脑上的其他文件一致即可),添加以下文字:

SYSFS{idProduct}=="2003",SYSFS{idVendor}=="413c",MODE="666",OWNER=“user",GROUP="user"

保存后退出。 此文件需要sudoer privilege.

重新插入usb设备,并查看用户组和所属用户:

ls -all /dev/bus/usb/001

crw-rw-r--  1 user user 189, 0 2012-04-29 19:49 001

crw-rw-r--  1 root root 189, 1 2012-04-29 19:49 002

这样usb设备001就创建在user的用户和用户组里了。

 

从新试验读写功能,用户将在普通权限下读写该usb设备。

 

因为在以前使用一些LINUX中,大量的直接操作ROOT用户,所以这种事情遇到的很少,用UBUNTU的经验就是,经常遇到权限问题。所以大家在遇到一些操作设备的文件无法成功的情况时,应该优先考虑一下权限的问题,一条命令就可以了。省得多费不少的时间。

时间就是生命,时间就是金钱。爱惜生命,努力赚钱。

  评论这张
 
阅读(679)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017