Android 中的应用程序未检测到内核驱动程序

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

我正在使用 RK3568 的开发板上编译 Android 11,一切正常。我有一个在板上预先配置的加速度计传感器,并且按预期运行;我可以从传感器测试应用程序中看到它。现在,我正在尝试添加一个光传感器。驱动程序编译并加载成功,我可以通过 dmesg 查看日志:

[    5.295697] light_stk3410 3-0048: sensor_register_device: ls_stk3410, id = 70
[    5.295731] i2c i2c-3: sensor_probe: ls_stk3410,000000005ff24252
[    5.295769] light_stk3410 3-0048: sensor_chip_init:ls_stk3410:devid=0x0,ops=0x00000000f42f982d
[    5.295779] stk3410 init
[    5.295781] stk3410 active
[    5.296191] light_stk3410 3-0048: sensor_irq_init:use polling,delay=30 ms
[    5.296326] light_stk3410 3-0048: sensor_misc_device_register:miscdevice: lightsensor
[    5.296341] light_stk3410 3-0048: sensor_probe:initialized ok,sensor name:ls_stk3410,type:5,id=70\x0a

但是,当我运行传感器测试应用程序时,它说我没有安装光传感器。我怀疑我需要添加某种定义或通知 Android 存在光传感器,而不仅仅是驱动程序级别。有人可以帮我吗?

以下是我所做的所有可以正常运行的修改;我已经配置了文件,告诉开发板传感器安装在 i2c 端口“kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi”上:

ls_stk3410: light@48 {
        compatible = "ls_stk3410";
        status = "okay";
        reg = <0x48>;
        type = <SENSOR_TYPE_LIGHT>;
        irq_enable = <0>;
        als_threshold_high = <100>;
        als_threshold_low = <10>;
        als_ctrl_gain = <2>; /* 0:x1 1:x4 2:x16 3:x64 */
        poll_delay_ms = <100>;
};

我也在“device/rockchip/common/BoardConfig.mk”中启用了它:

BOARD_LIGHT_SENSOR_SUPPORT ?= true

我尝试了静态和动态驱动程序链接(就像我对加速度计所做的那样),将此行添加到 BoardConfig.mk 的末尾以指定加载它:

BOARD_VENDOR_KERNEL_MODULES +=
kernel/drivers/input/sensors/accel/sc7a20.ko \
kernel/drivers/input/sensors/lsensor/ls_stk3410.ko

并添加到init.rc:

on early-init
    exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d \
        /vendor/lib/modules sc7a20.ko /vendor/lib/modules ls_stk3410.ko

无论我使用静态还是动态链接,驱动程序加载都很好,但我只能在应用程序中看到加速计。

我需要知道的是为什么模块看起来工作正常,就像加速度计一样,但应用程序看不到它。我需要修改其他文件吗?

android linux-kernel driver android-source
1个回答
0
投票

你能告诉我你是如何在 Android 源代码中添加加速度传感器的吗?我还想将传感器添加到源代码中,然后构建Android

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