首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AOSP中添加自定义传感器

在AOSP中添加自定义传感器
EN

Stack Overflow用户
提问于 2021-05-28 05:48:18
回答 1查看 497关注 0票数 1

我想在我的AOSP源代码中添加LSM6DS3传感器驱动程序。我正在使用SC600T设备。

  1. 我已经将lsm6ds3添加到location /SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9/drivers/iio/imu/st_lsm6ds3,其中包含MakefileKconfig文件。
  2. 将以下行添加到/../../iio/imu/Kconfig文件中: 源“驱动程序/iio/imu/st_lsm6ds3/Kconfig”
  3. 添加到/../../iio/imu/Makefile下面的行。 += st_lsm6ds3/
  4. /SC600T/../../iio/imu/st_lsm6ds3/MakefileSPDX的内容-许可证-标识符:GPL-2.0-只有st_lsm6dsx-y := st_lsm6dsx_core.o st_lsm6dsx_buffer.o \ st_lsm6dsx_shub.o obj-$(CONFIG_IIO_ST_LSM6DSX) += st_lsm6dsx.o obj-$(CONFIG_IIO_ST_LSM6DSX_I2C) += st_lsm6dsx_i2c.o obj-$(CONFIG_IIO_ST_LSM6DSX_SPI) += st_lsm6dsx_spi.o obj-$(CONFIG_IIO_ST_LSM6DSX_I3C) += st_lsm6dsx_i3c.o
  5. 我还在设备树文件中添加了lsm6ds3节点: &i2c_2 {状态= "ok";#地址-单元格= <0x1>;#size-cell= <0x0>;lsm6ds3@6b {兼容= "st,lsm6ds3";reg = <0x6b>;中断-父级= <&tlmm>;中断-gpios= <&tlmm 45 0x2008>;中断= <45 0x02>;};

我把LSM6DS3加速度传感器连接在SENSOR_I2C_SCL (针号131)和SENSOR_I2C_SDA (针号132号)上。

在此之后,我成功地编译了源代码、闪存引导和目标设备上的dtbo (SC600T)。

当我试图检查传感器数据使用adb shell >> /sys/bus/devices/i2C/devices节点是可用的,lsm6ds3地址节点,即6b也是可用的。但是lsm6ds3传感器没有被探测到。在这里输入图像描述

在这里输入图像描述

然后,我将在msm8953_defconfig文件中添加以下行。

  1. 在msm8953_defconfig fie中添加了以下行: CONFIG_IIO_ST_LSM6DSX=y CONFIG_IIO_ST_LSM6DSX_I2C=y CONFIG_IIO_ST_LSM6DSX_SPI=y CONFIG_IIO_ST_LSM6DSX_I3C=y

在编译源代码时添加此文件后,出现以下错误:

代码语言:javascript
复制
[  2% 309/12824] Building kernel...
FAILED: out/target/product/msm8953_64/obj/kernel/msm-4.9/arch/arm64/boot/Image.gz-dtb 
/bin/bash -c "(rm -rf out/target/product/msm8953_64/obj/kernel/msm-4.9/arch/arm64/boot/dts ) && (make -j3 -C kernel/msm-4.9 O=../../out/target/product/msm8953_64/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- KCFLAGS=-mno-android ) && (make -j3 -C kernel/msm-4.9 O=../../out/target/product/msm8953_64/obj/kernel/msm-4.9 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- KCFLAGS=-mno-android modules ) && (make -j3 -C kernel/msm-4.9 O=../../out/target/product/msm8953_64/obj/kernel/msm-4.9 INSTALL_MOD_PATH=../../../dlkm INSTALL_MOD_STRIP=1 DTC_EXT=dtc CONFIG_BUILD_ARM64_DT_OVERLAY=y ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- modules_install ) && (mdpath=\`find out/target/product/msm8953_64/dlkm/lib/modules -type f -name modules.dep\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; ko=\`find \$mpath/kernel -type f -name *.ko\`; for i in \$ko; do mv \$i out/target/product/msm8953_64/dlkm/lib/modules/; done; fi ) && (mdpath=\`find out/target/product/msm8953_64/dlkm/lib/modules -type f -name modules.dep\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; rm -rf \$mpath; fi )"
make: Entering directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9'
make[1]: Entering directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/out/target/product/msm8953_64/obj/kernel/msm-4.9'
  GEN     ./Makefile
scripts/kconfig/conf  --silentoldconfig Kconfig
make[2]: Leaving directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/out/target/product/msm8953_64/obj/kernel/msm-4.9'
make[1]: Entering directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/out/target/product/msm8953_64/obj/kernel/msm-4.9'
  CHK     include/config/kernel.release
  GEN     ./Makefile
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  Using /media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9 as source for kernel
  /media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9 is not clean, please run 'make mrproper'
  in the '/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9' directory.
make[2]: *** [prepare3] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/out/target/product/msm8953_64/obj/kernel/msm-4.9'
make: *** [sub-make] Error 2
make: Leaving directory `/media/ubuntu/Vezo_360/SC600T/SC60_SC600_Android9.0.0_kernel4.9_r029/kernel/msm-4.9'
[  2% 312/12824] target  C: libdsutils <= vendor/qcom/proprietary/data/dsutils/src/ds_util.c
vendor/qcom/proprietary/data/dsutils/src/ds_util.c:719:7: warning: unused variable 'adb_lvl' [-Wunused-variable]
  int adb_lvl = 0;
      ^
vendor/qcom/proprietary/data/dsutils/src/ds_util.c:2357:5: warning: unused function 'ds_can_exec' [-Wunused-function]
int ds_can_exec
    ^
2 warnings generated.
[  2% 314/12824] target  C++: KmInstallKeybox <= ven...ecuremsm/keymaster_install_toolbox/InstallKeybox.cpp
ninja: build stopped: subcommand failed.
20:36:27 ninja failed with: exit status 1

#### failed to build some targets (42 seconds) ####

在AOSP中添加任何自定义传感器,这些步骤是否都是强制性的?为什么lsm6ds3传感器不被探测?我需要检查硬件方面的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2021-06-01 09:18:57

Quectel SC600设备上的传感器通过所谓的ADSP,即封闭源。在此系统下,传感器通过vendor/qcom/proprietary/sensors/dsps/reg_defaults/sensor_def_qcomdev.conf文件进行配置。

有一组兼容的传感器可以与ADSP一起工作。你必须向你的Quectel代表询问。否则,你必须要求他们集成你想要的传感器,这当然要求太多了,所以认为这是不可能的(除非高通给你ADSP源代码,我不认为它会发生)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67733501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档