当前位置: 首页 > backend >正文

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


http://www.xdnf.cn/news/16800.html

相关文章:

  • 【深度学习新浪潮】什么是专业科研智能体?
  • python:如何调节机器学习算法的鲁棒性,以支持向量机SVM为例,让伙伴们看的更明白
  • Kubernetes 构建高可用、高性能 Redis 集群实战指南
  • AI应用标准详解:A2A MCP AG-UI
  • MySQL 运算符
  • WebForms 简介
  • 人类学家与建筑师:区分UX研究和项目管理的需求分析
  • 【云计算】云主机的亲和性策略(三):云主机 宿主机
  • Redis--day1--初识Redis
  • 第三十五章:让AI绘画“动”起来:第一个AI视频诞生-AnimateDiff的时间卷积结构深度解析
  • 初识 网络原理
  • 中科院开源HYPIR图像复原大模型:1.7秒,老照片变8K画质
  • 【数传电台P900配置指南:点对点、中继与一对多通讯详解】
  • 【高等数学】第七章 微分方程——第六节 高阶线性微分方程
  • 无图形界面的CentOS 7网络如何配置
  • 【Flutter】双路视频播放方案
  • 第k小整数(快排)
  • 遥控器信号捕获
  • Trice移植(Start with Trice)
  • CS231n2017-Lecture9经典CNN架构笔记
  • Java学习-运算符
  • Git 进阶使用
  • 算法篇----位运算
  • 【Mysql】字段隐式转换对where条件和join关联条件的影响
  • Oracle EBS 缺少adcfgclone.pl文件
  • 链接脚本中. = ALIGN(4);的作用?
  • 北斗变形监测在地质灾害监测中的应用
  • 浅谈低代码平台涉及的一些技术选型
  • AI Agent 视角:可执行程序的二进制格式,是一场「结构化语言」与「智能解析」的双向奔赴
  • UE5多人MOBA+GAS 番外篇:同时造成多种类型伤害,以各种属性值的百分比来应用伤害(版本二)