Firefly开源社区

标题: 有關ioctl [打印本页]

作者: sunwingman    时间: 2015-8-11 18:27
标题: 有關ioctl
本帖最后由 sunwingman 于 2015-8-12 08:52 编辑

有关LED以及PWM的控制
发现在rk3288上面的源码
都没有实作ioctl
这样user space和kernel space如何沟通?

所以假如我需要写一个app去操控
是不是需要自己去实作一个ioctl
还是有其他方法?

因为刚接触嵌入式这块, 还有很多不熟
所以请教各位前辈, 感谢!!


作者: carlinluo    时间: 2015-8-12 09:47
1.通过读写文件节点和驱动沟通
2.通过JNI调用驱动

最新在写这方面的代码当练手APP

Screenshot_2015-08-11-16-45-49.jpeg (119.45 KB, 下载次数: 84)

Screenshot_2015-08-11-16-45-49.jpeg

Screenshot_2015-08-11-16-45-58.jpeg (131.18 KB, 下载次数: 94)

Screenshot_2015-08-11-16-45-58.jpeg

Screenshot_2015-08-11-16-46-09.jpeg (199.92 KB, 下载次数: 98)

Screenshot_2015-08-11-16-46-09.jpeg

作者: sunwingman    时间: 2015-8-12 10:37
本帖最后由 sunwingman 于 2015-8-12 10:40 编辑

感谢carlinluo回覆

之前碰过友善之臂的板子
在kernel的LED driver有实作一个ioctl的function, 代码如下

  1. static long leds_ioctl(struct file *filp, unsigned int cmd,
  2.                 unsigned long arg)
  3. {
  4.         switch(cmd) {
  5.                 case 0:
  6.                 case 1:
  7.                         if (arg > LED_NUM) {
  8.                                 return -EINVAL;
  9.                         }

  10.                         gpio_set_value(led_gpios[arg], !cmd);
  11.                         //printk(DEVICE_NAME": %d %d\n", arg, cmd);
  12.                         break;

  13.                 default:
  14.                         return -EINVAL;
  15.         }

  16.         return 0;
  17. }
复制代码


但是在rk3288的LED driver里面没看到ioctl
所以才想请问各位前辈是不是要自己加入ioctl这个function?

可以请问carlinluo也是自己实作一个ioctl吗?JNI那边我知道怎么调用, 不过也是要透过ioctl才能跟kernel space去做沟通, 是吧?



作者: carlinluo    时间: 2015-8-12 11:30
sunwingman 发表于 2015-8-12 10:37
感谢carlinluo回覆

之前碰过友善之臂的板子

可以参考camera的驱动,里面有用到ioctr
作者: carlinluo    时间: 2015-8-12 11:36
其实驱动都是差不多的,移植下就可以用




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1