欢迎关注燚智能头条号↗
燚智能硬件开发网
用简单的语言,讲复杂的技术!
本文以高通骁龙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是否有数据输出。
欢迎关注燚智能头条号↗
燚智能周教授,智能硬件开发实战派
精彩内容回顾
本文暂时没有评论,来添加一个吧(●'◡'●)