无法使用官方驱动程序从嵌入式Linux上的IR传感器获取数据

问题描述 投票:0回答:1

我在nanopi NEO空气板上运行一个linux映像(由buildroot和制造商提供的4.11.2内核制作),IR传感器直接插在IR引脚上。我想使用传感器从IR遥控器获取数据。

我按照程序找到here,使用相同的驱动程序,得到相同的结果,但我无法从/dev/input/eventX获取任何数据,也无法让我的遥控器出现在/proc/bus/input/devices(我尝试在插入驱动程序时使用遥控器发送数据,或者在内置驱动程序时启动,但它显然不起作用,我没有找到太多关于此的信息)。

我也试过lirc和evtest / irrecord,但我仍然无法得到任何数据,我相信问题出在其他地方。

我用示波器测试了传感器和遥控器,所以我知道传感器正在从遥控器获取帧。我也很确定这不是驾驶员方面的协议不匹配。

所以我有两个问题:

  • 这里的问题在哪里,当我运行cat /dev/input/eventX时为什么我什么都得不到?
  • 我的遥控器应该在/proc/bus/input/devices显示,是否有配对程序,我应该知道?

如果这些都是微不足道的问题(我以前从未在IR工作过),请原谅我并提前感谢你。

EDIT

我设法让我的遥控器使用制造商提供的旧图像之一(内核3.4.39-h3),我注意到:

  • 我正在使用的驱动程序不起作用(它永远不会进入读取FIFO的中断函数,并且与FIFO相关的物理地址始终为0)
  • 旧映像的驱动程序在其init函数(硬编码)中注册以下输入设备,然后我使用该函数从远程获取数据(使用cat /dev/input/event1):
    pi@NanoPi-NEO-Air:~$ cat /proc/bus/input/devices
    ...    
    I: Bus=0019 Vendor=0001 Product=0001 Version=0100
    N: Name="sunxi-ir"
    P: Phys=RemoteIR/input1
    S: Sysfs=/devices/virtual/input/input1
    U: Uniq=
    H: Handlers=sysrq kbd event1 cpufreq_interactive 
    B: PROP=0
    B: EV=100003
    B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe

所以现在我想知道我是否也应该在我正在使用的驱动程序中注册该设备,如果是这样,我应该怎么做?

linux linux-device-driver embedded-linux infrared nanopi
1个回答
0
投票

我的一位同事解决了它,问题出在dts上。 在sun8i-h3-nanopi-neo-air.dts中,只需像这样激活IR:

&ir {
    status = "okay";
};

还不够,还必须重新定义IR的引脚:

​&ir {
​    pinctrl-names = "default";
​    pinctrl-0 = <&ir_pins_a>;
​    status = "okay";
​};

希望这会对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.