20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙

20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙

2025/7/30 23:56

缘起:当你将 市售/商业 开发板的全部功能/模块,全部适配一遍。

就相当于你做好/完成了一个项目了!

当然,与真实项目的唯一差别就是:开发板的硬件都是经过别人精心调试/适配过的。硬件肯定没有问题的。

你做的板子,创新的部分是有可能跑不通的呀!^_

本文做一个简单的部分,适配NXP的WIFI/BT模块88W8987A【device目录的rk3576_u选项】

也就是使用 飞凌OK3576-C开发板 自带的原厂的Android14,看/确认 rk3576_u 选项有没有 WIFI/BT相关的部分。

确认是有的!

【不过BT蓝牙还没有通,原因待查!】

【本文不涉及到:DTS部分、driver驱动、Android部分。】

https://blog.csdn.net/qq_40311939/article/details/140684794

Android下移植WiFi和BT(SDIO接口)

【付费】

https://blog.csdn.net/weixin_71997855/article/details/129593219

视源aic800wifi/bt调试

由于CSDN上面找不到88W8987A模块的相关文档。

根据上述的博文比对飞凌的相关路径的文件的差异。

很容易/根据经验/艰难得知:

include (BUILD_SHARED_LIBRARY) ifeq ((TARGET_PRODUCT), ok3576_c)
include $(LOCAL_PATH)/conf/forlinx/ok3576/Android.mk
endif

修改为:

include (BUILD_SHARED_LIBRARY) ifeq ((TARGET_PRODUCT), rk3576_u)
include $(LOCAL_PATH)/conf/forlinx/ok3576/Android.mk
endif

Y:\OK3576-android-source\hardware\nxp\libbt\Android.mk

Y:\rk3576-android14.0-20250217\hardware\nxp\libbt\Android.mk

Y:\OK3576-android-source\hardware\nxp\libbt\Android.mk

Copyright 2012 The Android Open Source Project

Portions copyright 2012-2013, 2015, 2018-2021 NXP

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

ifneq ($(BOARD_HAVE_BLUETOOTH_NXP),)

LOCAL_PATH := $(call my-dir)

BOARD_UART_DOWNLOAD_FW := true

v2 is for 8887-FP101, and v3 is for other chips.

BOARD_UART_FW_LOADER_VERSION = v3

libbt-vendor.so

include $(CLEAR_VARS)

ifeq ((shell expr (PLATFORM_VERSION) "==" Tiramisu),1)

BDROID_DIR := $(TOP_DIR)packages/modules/Bluetooth/system

else

ifeq ((shell expr (PLATFORM_SDK_VERSION) "<=" 32),1)

BDROID_DIR := $(TOP_DIR)system/bt

else

BDROID_DIR := $(TOP_DIR)packages/modules/Bluetooth/system

endif

endif

LOCAL_C_INCLUDES += \

$(LOCAL_PATH)/conf/nxp/ \

$(TOP_DIR)hardware/interfaces/bluetooth/1.0/default

LOCAL_SRC_FILES := \

bt_vendor_nxp.c \

fw_loader_io.c \

hardware_nxp.c

VHAL_LOG_LEVEL decides maximum log level supported at compile time between 0-5.

LOCAL_CFLAGS += -DVHAL_LOG_LEVEL=5

LOCAL_CFLAGS += -Wsign-compare

ifneq ($(BOARD_UART_DOWNLOAD_FW), false)

LOCAL_CFLAGS += -DUART_DOWNLOAD_FW

ifneq ($(BOARD_UART_FW_LOADER_VERSION), v2)

LOCAL_SRC_FILES += \

fw_loader_uart.c

else

LOCAL_CFLAGS += -DFW_LOADER_V2

LOCAL_SRC_FILES += \

fw_loader_uart_v2.c

endif

endif

LOCAL_SHARED_LIBRARIES := \

libcutils \

liblog \

libprotobuf-cpp-lite \

libbase \

libchrome

LOCAL_MODULE := libbt-vendor

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_OWNER := nxp

LOCAL_MULTILIB := both

LOCAL_PROPRIETARY_MODULE := true

include (BUILD_SHARED_LIBRARY) ifeq ((TARGET_PRODUCT), rk3576_u)
include $(LOCAL_PATH)/conf/forlinx/ok3576/Android.mk
endif

ifeq ($(TARGET_PRODUCT), evk_8mp)

include $(LOCAL_PATH)/conf/nxp/evk_8mp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mq)

include $(LOCAL_PATH)/conf/nxp/evk_8mq/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mn)

include $(LOCAL_PATH)/conf/nxp/evk_8mn/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mm)

include $(LOCAL_PATH)/conf/nxp/evk_8mm/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8ulp)

include $(LOCAL_PATH)/conf/nxp/evk_8ulp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), watch_8ulp)

include $(LOCAL_PATH)/conf/nxp/watch_8ulp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_93)

include $(LOCAL_PATH)/conf/nxp/evk_93/Android.mk

endif

ifeq ((TARGET_PRODUCT),(filter $(TARGET_PRODUCT),mek_8q mek_8q_car mek_8q_car2))

include $(LOCAL_PATH)/conf/nxp/mek_8q/Android.mk

endif

endif # BOARD_HAVE_BLUETOOTH_NXP

Y:\rk3576-android14.0-20250217\hardware\nxp\libbt\Android.mk

Copyright 2012 The Android Open Source Project

Portions copyright 2012-2013, 2015, 2018-2021 NXP

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

ifneq ($(BOARD_HAVE_BLUETOOTH_NXP),)

LOCAL_PATH := $(call my-dir)

BOARD_UART_DOWNLOAD_FW := true

v2 is for 8887-FP101, and v3 is for other chips.

BOARD_UART_FW_LOADER_VERSION = v3

libbt-vendor.so

include $(CLEAR_VARS)

ifeq ((shell expr (PLATFORM_VERSION) "==" Tiramisu),1)

BDROID_DIR := $(TOP_DIR)packages/modules/Bluetooth/system

else

ifeq ((shell expr (PLATFORM_SDK_VERSION) "<=" 32),1)

BDROID_DIR := $(TOP_DIR)system/bt

else

BDROID_DIR := $(TOP_DIR)packages/modules/Bluetooth/system

endif

endif

LOCAL_C_INCLUDES += \

$(LOCAL_PATH)/conf/nxp/ \

$(TOP_DIR)hardware/interfaces/bluetooth/1.0/default

LOCAL_SRC_FILES := \

bt_vendor_nxp.c \

fw_loader_io.c \

hardware_nxp.c

VHAL_LOG_LEVEL decides maximum log level supported at compile time between 0-5.

LOCAL_CFLAGS += -DVHAL_LOG_LEVEL=5

LOCAL_CFLAGS += -Wsign-compare

ifneq ($(BOARD_UART_DOWNLOAD_FW), false)

LOCAL_CFLAGS += -DUART_DOWNLOAD_FW

ifneq ($(BOARD_UART_FW_LOADER_VERSION), v2)

LOCAL_SRC_FILES += \

fw_loader_uart.c

else

LOCAL_CFLAGS += -DFW_LOADER_V2

LOCAL_SRC_FILES += \

fw_loader_uart_v2.c

endif

endif

LOCAL_SHARED_LIBRARIES := \

libcutils \

liblog \

libprotobuf-cpp-lite \

libbase \

libchrome

LOCAL_MODULE := libbt-vendor

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_OWNER := nxp

LOCAL_MULTILIB := both

LOCAL_PROPRIETARY_MODULE := true

include (BUILD_SHARED_LIBRARY) ifeq ((TARGET_PRODUCT), ok3576_c)
include $(LOCAL_PATH)/conf/forlinx/ok3576/Android.mk
endif

ifeq ($(TARGET_PRODUCT), evk_8mp)

include $(LOCAL_PATH)/conf/nxp/evk_8mp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mq)

include $(LOCAL_PATH)/conf/nxp/evk_8mq/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mn)

include $(LOCAL_PATH)/conf/nxp/evk_8mn/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8mm)

include $(LOCAL_PATH)/conf/nxp/evk_8mm/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_8ulp)

include $(LOCAL_PATH)/conf/nxp/evk_8ulp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), watch_8ulp)

include $(LOCAL_PATH)/conf/nxp/watch_8ulp/Android.mk

endif

ifeq ($(TARGET_PRODUCT), evk_93)

include $(LOCAL_PATH)/conf/nxp/evk_93/Android.mk

endif

ifeq ((TARGET_PRODUCT),(filter $(TARGET_PRODUCT),mek_8q mek_8q_car mek_8q_car2))

include $(LOCAL_PATH)/conf/nxp/mek_8q/Android.mk

endif

endif # BOARD_HAVE_BLUETOOTH_NXP

相关推荐
小灰灰搞电子3 小时前
Rust Attribute(属性标记)完整整理
开发语言·后端·rust
tedcloud1234 小时前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
xx~t4 小时前
嵌入式——51单片机3
linux·c语言·嵌入式硬件·51单片机
Tairitsu_H4 小时前
[C++] C++11 Lambda与包装器深度解析
开发语言·c++·c++11·lambda·包装器
傲世仙尊4 小时前
从磁盘硬件到Ext文件系统-Linux磁盘级文件系统学习笔记
linux·运维·服务器·开发语言·c++
小羊没烦恼!4 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
黑马程序员毕设5 小时前
基于微信小程序的节目活动报名与管理系统设计与实现
java·开发语言·spring boot·后端·电脑
山下梅子酒2255 小时前
洛谷-入门-B2042
c语言
sunshine22 girl5 小时前
Java学习 java原理
java·开发语言·学习
ysu_03145 小时前
08-二叉树遍历:四种方式详解
c语言·数据结构·算法·leetcode