主题 : 问个leds驱动的问题~~【已解决】 复制链接 | 浏览器收藏 | 打印
大笑笑大
级别: 骑士
UID: 25314
精华: 8
发帖: 184
金钱: 1320 两
威望: 264 点
综合积分: 528 分
注册时间: 2010-07-22
最后登录: 2014-10-11
楼主  发表于: 2011-07-26 16:07

 问个leds驱动的问题~~【已解决】

在led的驱动下面有这么一个函数
static int sbc2440_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned int cmd,
unsigned long arg)
{
switch(cmd) {
case 0:
case 1:
if (arg > 4) {
return -EINVAL;
}
s3c2410_gpio_setpin(led_table[arg], !cmd);
return 0;
default:
return -EINVAL;
}
}
我在上面的程序增加一个case 2:
static int sbc2440_leds_ioctl(
struct inode *inode,
struct file *file,
unsigned int cmd,
unsigned long arg)
{
switch(cmd) {
case 0:
case 1:
if (arg > 4) {
return -EINVAL;
}
s3c2410_gpio_setpin(led_table[arg], !cmd);
break;
case 2:
for(int i=0;i<3;i++)
s3c2410_gpio_setpin(led_table, 0);//all off/on
break;
default:
break;

}
printk (DEVICE_NAME"\cmd=%d\n",cmd);
}
在应用程序里面用IOCTL控制
使用
ioctl(fd,1,0);
ioctl(fd,0,0);可以控制LED并输出cmd的值
使用
ioctl(fd,2,0);控制不了led也没有输出cmd的值出来。
是否可以这样做?谢谢
[ 此帖被xphyym在2011-07-27 10:15重新编辑 ]
级别: 侠客
UID: 36941
精华: 0
发帖: 102
金钱: 510 两
威望: 102 点
综合积分: 204 分
注册时间: 2011-01-24
最后登录: 2018-02-08
1楼  发表于: 2011-07-26 18:42
   2 这个 数值 是系统使用了的值 用户使用 不可以!!
大笑笑大
级别: 骑士
UID: 25314
精华: 8
发帖: 184
金钱: 1320 两
威望: 264 点
综合积分: 528 分
注册时间: 2010-07-22
最后登录: 2014-10-11
2楼  发表于: 2011-07-26 20:08

 回 1楼(728196) 的帖子

谢谢这位大侠,能否提供点相关的学习资料或网址,我今天baidu了下都没有解决问题,
若2为系统使用数值,用户可用数值范围为多少?
明天早上用其他数值试试。
大笑笑大
级别: 骑士
UID: 25314
精华: 8
发帖: 184
金钱: 1320 两
威望: 264 点
综合积分: 528 分
注册时间: 2010-07-22
最后登录: 2014-10-11
3楼  发表于: 2011-07-27 10:15
yes,用其他数字可以检测到,谢谢