ST传感器芯片HAL按官方文档移植后,测试一直掉不起来,加的日志没出来。经过分析,是系统自带了一个HAL,影响的。

按照官方文档,移植HAL后,在/device/<vendor\>/<board\>/device.mk*路径增加PRODUCT_PACKAGES += sensors.{TARGET_BOARD_PLATFORM}。生成的sensors.{TARGET_BOARD_PLATFORM}.so会被在刷系统的时候安装到目标机器的/system/vendor/lib/hw/位置。

我进入到目标机器的hw目录下查看,发现有两个sensors.*.so,另一个应该是系统源码自带的。源码搜索后,发现在hardware/rockchip/sensor/st/Android.mk有配置如下图。该配置会生成一个sensors.$(TARGET_BOARD_HARDWARE).so文件,且安装到目标机器hw目录下。

LOCAL_MODULE := sensors.$(TARGET_BOARD_HARDWARE)
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw

在sensor的HAL逻辑中,打开so是有检索顺序的:

第一顺序:sensors.$(TARGET_BOARD_HARDWARE).so

第二顺序:sensors.{TARGET_BOARD_PLATFORM}.so

第三顺序:sensors.default.so

考虑到迅速实现,我直接在hardware/rockchip/sensor/st/Android.mk中的文件名后面加字符串,让该so名字改变,不影响我们的目标文件调用就行。修改后如下图:

【android12-linux-5.1】【ST芯片】HAL移植后没调起来-LMLPHP

修改完成后,直接编译刷机就行。完成后,开机就能看到我们移植的HAL中添加的日志了,说明移植的HAL已经默认被系统调起来了。

新人入行,经验分享,如有所误,欢迎指出~

 版权归属:深圳市琪智科技有限公司-花花

08-26 08:22