计算机系统应用教程网站

网站首页 > 技术文章 正文

Android平台移植Sensor Hub的方法丨Android Kernel和Hal开发案例

btikc 2024-09-09 01:38:41 技术文章 17 ℃ 0 评论

欢迎关注燚智能头条号↗

燚智能硬件开发网

用简单的语言,讲复杂的技术!

本文以高通骁龙2100(MSM8909W)Android可穿戴平台为例,讲解驱动层中间层移植Sensor Hub的方法

1、添加驱动代码(Kernel)

1、驱动代码是有sensor原厂提供的, 我们只需要将其driver code copy /kernel/drivers/char/目录下,修改相关makefile文件,使平台编译系统能够编译到frizz_driver。

2、配置DTSI

&i2c_1 {

status = "ok";

mcc@1c { /* Slave driver and slave Address */

compatible = "mcc,frizz";

reg = <0x1c>;

interrupt-parent = <&msm_gpio>;

interrupts = <28 0x20>;

vio-supply = <&pm8916_l6>;

mcc,irq-gpio = <&msm_gpio 28 0x0>;

mcc,gpio_rstn =<&msm_gpio 33 0x0>;

mcc,low-power-gpio = <&msm_gpio 38 0x0>;

};

};

2、添加hal层代码

a. 添加设备权限:高通平台的设备权限添加是在init.target.rc中,添加内容如下:

chown system system /dev/frizz

chmod 0664 /dev/frizz

在调试 /dev/frizz的权限设置为0777避免因权限不对,而导致设备节点访问失败。

b. 添加frizz hal 层代码到 src/LINUX/android/hardware/目录下,系统即可编译到,frizz 提供的hal层代码 mk写好了编译规则,但在mk文件中需要将条件语句去掉, 本次移植的平台是高通的MSM8909w。

C、去掉高通sensor部分关于sensor的代码:

d、执行下面的命令进行编译HAL层:

$ cd

$ source build/envsetup.sh

$ lunch xxx <-- According to the specific platform.

$ mmm -B hardware/frizz_hal

编译后会在out目录下systemvendorlibhw 文件中生成名字为sensors.msm8909的so库。

3、添加frizz_jni代码

将frizz jni source code文件夹拷贝到 /packages/apps/目录下编译,编译方式如下:$ lunch xxxx <=== According to the specific platform.

$ mmm -B /packages/app/frizz_jni

编译后会在out/system/lib/目录下生成“libFrizzManager.so”so库。

4、添加安全机制权限

5、代码移植完毕,开始测试

a、在手机的/data/目录下创建frizz文件夹, 将from_ayame.bin文件push到手机的/data/frizz/目录,该固件是由sensor HUB原厂提供的。

b、将sensors.msm8909.so push到设备的/system/vendor/lib/hw/目录。

将libFrizzManager.so push 到/system/lib/目录下。

c、adb install SensorList.apk 安装sensor测试APK,查看各个sensor是否有数据输出。


欢迎关注燚智能头条号↗

燚智能周教授,智能硬件开发实战派

精彩内容回顾

Android摄像头移植方法,含大量代码,值得收藏!

Android Things和Android区别很大,软件工程师需要了解!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表