Отладка модуля rk3288 6222b (rtl8822cs) -- Bluetooth

Задача: пересадить модуль Bluetooth настроенный с помощью rtl8822cs на rk3288 android7.1

Идея: получите драйвер Bluetooth производителя и ознакомьтесь с этапами миграции драйвера внутри (Примечание: следует отметить, что если последний драйвер соответствует коду jni в приложении Bluetooth, конфигурации в .rc и .mk, упомянутых в документе, rk уже настроен в исходном SDK, нужно только проверить, не конфликтует ли он с Broadcom, большую часть которого модифицировать не нужно)

Печать драйвера отладки:
Драйвер rfkill ядра: [BT_RFKILL] соответствует kernel/net/rfkill/rfkill-bt.c (драйвер, который настраивает порт Bluetooth gpio)
Драйвер rtkbt: в logcat

Модификация платформы rk:
есть два файла .mk, относящиеся к Bluetooth, которые требуют внимания в /device. Конкретный сценарий модификации описан в
устройстве/rockchip/rk3288/wifi_bt.mk
device/rockchip/common/wifi_bt_common.mk
build/core/product Приложение Bluetooth .mk
находится в каталоге
packages/apps/Bluetooth
(следует отметить, что при просмотре кода приложения обнаруживается, что тип Bluetooth получается с помощью функции в коде Wi-Fi, то есть Wi-Fi необходимо сначала настроить, прежде чем Bluetooth сможет его правильно получить)

Сначала настройте dts по подсказкам в документе.В основном он соответствует пинам в драйвере rfkill.Если настройка правильная, проблем не будет.
Через команду в системе можно проверить, можно ли управлять выводом bt_reg_on

echo 1 > /sys/class/rfkill/rfkill0/state
echo 0 > /sys/class/rfkill/rfkill0/state

Дальше настройка в системе

устройство/rockchip/rk3288/wifi_bt.mk

-BOARD_CONNECTIVITY_VENDOR := Broadcom
-BOARD_CONNECTIVITY_MODULE := ap6xxx
+BOARD_CONNECTIVITY_VENDOR := RealTek
+BOARD_CONNECTIVITY_MODULE := rtl8822cs

build/core/product.mk (упоминается в документации по миграции драйверов)

_product_stash_var_list += \
+BOARD_HAVE_BLUETOOTH_RTK \

packages/apps/Bluetooth/res/values/config.xml (измените по ситуации, иногда будут проблемы, иногда если не работает, нужно изменить и попробовать)

-<bool name="profile_supported_rtkbt">false</bool>
+<bool name="profile_supported_rtkbt">true</bool>

Драйвер rtkbt платформы rk размещается в аппаратном обеспечении/realtek.При
замене его на драйвер rtkbt, предоставленный производителем,
следует уделить особое внимание: посмотреть, действительно ли его необходимо заменить, поскольку последний код драйвера может не соответствовать Код верхнего уровня системы. Я использовал драйвер rtkbt производителя. Последний приведенный код имеет проблему с невозможностью загрузки библиотек и модулей. Есть подозрение, что имя функции файла c в драйвере было изменено, и соответствующее функция не может быть найдена в jni, что приводит к сбою.
Решение: используйте старую версию драйвера, добавьте файлы прошивки и конфигурации, соответствующие rtl8822cs, и успешно решите проблему.

При адаптации модуля Bluetooth очень важно загрузить правильные файлы прошивки и конфигурации. (Конкретно в драйвере rtkbt)
Способ модификации:

diff --git a/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/bt_vendor_rtk.c b/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/bt_vendor_rtk.c
index d42a995e32..8d5b3d3c3b 100755
--- a/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/bt_vendor_rtk.c
+++ b/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/bt_vendor_rtk.c
@@ -26,7 +26,7 @@
 
 #undef NDEBUG
 #define LOG_TAG "bt_vendor_uart"
-#define RTKBT_RELEASE_NAME "20170109_TV_ANDROID_7.x"
+#define RTKBT_RELEASE_NAME "20190717_BT_ANDROID_7.0"
 #include <utils/Log.h>
 #include "bt_vendor_rtk.h"
 #include "upio.h"
diff --git a/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/hardware.c b/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/hardware.c
index e9c47bfb03..6174d0003e 100755
--- a/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/hardware.c
+++ b/hardware/realtek/rtkbt/code/libbt-vendor/uart/src/hardware.c
@@ -27,7 +27,7 @@
  ******************************************************************************/
 
 #define LOG_TAG "bt_hwcfg"
-#define RTKBT_RELEASE_NAME "20170109_TV_ANDROID_7.x"
+#define RTKBT_RELEASE_NAME "20190717_BT_ANDROID_7.0"
 
 #include <utils/Log.h>
 #include <sys/types.h>
@@ -55,7 +55,7 @@
 /******************************************************************************
 **  Constants &  Macros
 ******************************************************************************/
-#define RTK_VERSION "4.1.1"
+#define RTK_VERSION "4.2.1"
 
 #ifndef BTHW_DBG
 #define BTHW_DBG FALSE
@@ -112,6 +112,7 @@ struct rtk_bt_vendor_config{
    
    
 #define HCI_VSC_DOWNLOAD_FW_PATCH               0xFC20
 #define HCI_VSC_READ_ROM_VERSION                0xFC6D
 #define HCI_VSC_READ_CHIP_TYPE                  0xFC61
+#define HCI_VENDOR_FORCE_RESET_AND_PATCHABLE    0xFC66
 
 #define HCI_VERSION_MASK_10     (1<<0)     //Bluetooth Core Spec 1.0b
 #define HCI_VERSION_MASK_11     (1<<1)     //Bluetooth Core Spec 1.1
@@ -138,6 +139,7 @@ struct rtk_bt_vendor_config{
    
    
 
 #define CONFIG_MAC_OFFSET_GEN_1_2       (0x3C)      //MAC's OFFSET in config/efuse for realtek generation 1~2 bluetooth chip
 #define CONFIG_MAC_OFFSET_GEN_3PLUS     (0x44)      //MAC's OFFSET in config/efuse for rtk generation 3+ bluetooth chip
+#define CONFIG_MAC_OFFSET_GEN_4PLUS     (0x30)      //MAC's OFFSET in config/efuse for rtk generation 4+ bluetooth chip
 
 #define HCI_EVT_CMD_CMPL_OPCODE_OFFSET          (3)     //opcode's offset in COMMAND Completed Event
 #define HCI_EVT_CMD_CMPL_STATUS_OFFSET          (5)     //status's offset in COMMAND Completed Event
@@ -300,14 +302,18 @@ static patch_info patch_table[] = {
    
    
     {
    
    0x8723,            ~(HCI_VERSION_MASK_21),  ~(1<<0xd),             CHIP_TYPE_MASK_ALL,  1<<1,                  "rtl8723bs_fw",         "rtl8723bs_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8723BS
 //    {0x8723,            ~(HCI_VERSION_MASK_21),  ~(1<<0xd),             CHIP_TYPE_MASK_ALL,  1<<1,                  "rtl8723bs_VQ0_fw",     "rtl8723bs_VQ0_config", CONFIG_MAC_OFFSET_GEN_1_2}, //Rtl8723BS_VQ0
     {
    
    0x8821,            HCI_VERSION_MASK_ALL,    ~(1<<0xc),             CHIP_TYPE_MASK_ALL,  1<<2,                  "rtl8821as_fw",         "rtl8821as_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8821AS
-    {
    
    0x8761,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, CHIP_TYPE_MASK_ALL,  1<<3,                  "rtl8761at_fw",         "rtl8761at_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8761AW
+//    {0x8761,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, CHIP_TYPE_MASK_ALL,  1<<3,                  "rtl8761at_fw",         "rtl8761at_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8761AW
+    {
    
    0x8761,            HCI_VERSION_MASK_ALL,    ~(1<<0xb),             CHIP_TYPE_MASK_ALL,  1<<3,                  "rtl8761at_fw",         "rtl8761at_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8761AW
+    {
    
    0x8761,            HCI_VERSION_MASK_ALL,    (1<<0xb),              CHIP_TYPE_MASK_ALL,  1<<14,                 "rtl8761bt_fw",         "rtl8761bt_config",     CONFIG_MAC_OFFSET_GEN_4PLUS,  MAX_PATCH_SIZE_40K},     //Rtl8761BW
     {
    
    0x8723,            HCI_VERSION_MASK_21,     HCI_REVISION_MASK_ALL, CHIP_TYPE_MASK_ALL,  1<<4,                  "rtl8703as_fw",         "rtl8703as_config",     CONFIG_MAC_OFFSET_GEN_1_2,  MAX_PATCH_SIZE_24K},     //Rtl8703AS
 
     {
    
    0x8703,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, 1<<7,                1<<6,                  "rtl8703bs_fw",         "rtl8703bs_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //Rtl8703BS
     {
    
    0x8703,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, 1<<5,                1<<7,                  "rtl8723cs_xx_fw",      "rtl8723cs_xx_config",  CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //rtl8723cs_xx
     {
    
    0x8703,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, 1<<3,                1<<7,                  "rtl8723cs_cg_fw",      "rtl8723cs_cg_config",  CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //rtl8723cs_cg
     {
    
    0x8703,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, 1<<4,                1<<7,                  "rtl8723cs_vf_fw",      "rtl8723cs_vf_config",  CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //rtl8723cs_vf
-    {
    
    0x8822,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, CHIP_TYPE_MASK_ALL,  1<<8,                  "rtl8822bs_fw",         "rtl8822bs_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //Rtl8822BS
+//    {0x8822,            HCI_VERSION_MASK_ALL,    HCI_REVISION_MASK_ALL, CHIP_TYPE_MASK_ALL,  1<<8,                  "rtl8822bs_fw",         "rtl8822bs_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //Rtl8822BS
+    {
    
    0x8822,            HCI_VERSION_MASK_ALL,    ~(1<<0xc),             CHIP_TYPE_MASK_ALL,  1<<8,                  "rtl8822bs_fw",         "rtl8822bs_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_24K},     //Rtl8822BS   
+    {
    
    0x8822,            HCI_VERSION_MASK_ALL,    (1<<0xc),              CHIP_TYPE_MASK_ALL,  1<<13,                 "rtl8822cs_fw",         "rtl8822cs_config",     CONFIG_MAC_OFFSET_GEN_4PLUS,  MAX_PATCH_SIZE_40K},     //Rtl8822CS 
 
     {
    
    0x8723,            HCI_VERSION_MASK_ALL,    (1<<0xd),              ~(1<<7),           1<<9,                    "rtl8723ds_fw",         "rtl8723ds_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_40K}, //Rtl8723ds
     {
    
    0x8723,            HCI_VERSION_MASK_ALL,    (1<<0xd),              1<<7,              1<<9,                    "rtl8703cs_fw",         "rtl8703cs_config",     CONFIG_MAC_OFFSET_GEN_3PLUS,  MAX_PATCH_SIZE_40K}, //Rtl8703cs
diff --git a/hardware/realtek/rtkbt/rtkbt.mk b/hardware/realtek/rtkbt/rtkbt.mk
index cc8c869b6c..4cba306bd1 100755
--- a/hardware/realtek/rtkbt/rtkbt.mk
+++ b/hardware/realtek/rtkbt/rtkbt.mk
@@ -53,6 +53,8 @@ PRODUCT_COPY_FILES += \
        $(LOCAL_PATH)/system/etc/firmware/rtl8822b_fw:system/etc/firmware/rtl8822b_fw \
        $(LOCAL_PATH)/system/etc/firmware/rtl8822bs_config:system/etc/firmware/rtl8822bs_config \
        $(LOCAL_PATH)/system/etc/firmware/rtl8822bs_fw:system/etc/firmware/rtl8822bs_fw \
+       $(LOCAL_PATH)/system/etc/firmware/rtl8822cs_config:system/etc/firmware/rtl8822cs_config \
+       $(LOCAL_PATH)/system/etc/firmware/rtl8822cs_fw:system/etc/firmware/rtl8822cs_fw \

        $(LOCAL_PATH)/system/lib/hw/audio.vr_bee_hidraw.default.so:system/lib/hw/audio.vr_bee_hidraw.default.so \
        $(LOCAL_PATH)/system/lib/rtkbt/3dd_service.so:system/lib/rtkbt/3dd_service.so \
        $(LOCAL_PATH)/system/lib/rtkbt/autopair_huawei.so:system/lib/rtkbt/autopair_huawei.so \

Примечание. Проверьте, имеются ли необходимые файлы прошивки и конфигурации в соответствующем каталоге.

Поскольку модуль представляет собой UART Bluetooth, вам также необходимо проверить, соответствует ли конфигурация в rtkbt\system\etc\bluetooth\rtkbt.conf USB или UART.

Если это USB Bluetooth, вам также необходимо обратить внимание на файл.Поскольку на этот раз это UART Bluetooth, я не обратил на него особого внимания.Соответствующие инструкции есть в документе по трансплантации драйверов kernel/drivers/bluetooth/rtk_btusb
. c
ядро/драйверы/bluetooth/rtk_btcoex .c

В документе упоминается, что для обеспечения корректности файла bluetooth.default.so установите для всех BOARD_HAVE_BLUETOOTH_XXX в BoardConfig значение false или удалите его.
передаст команду

rm –rf out/target/product/{
    
    product}/obj/*/*bt* 
out/target/product/{
    
    product}/obj/*/*luetooth* out/target/product/{
    
    product}/obj/*/*hci* 
out/target/product/{
    
    product}/obj/*/*a2dp* out/target/product/{
    
    product}/system/* 

Удалить ранее скомпилированные файлы.После
удаления соответствующих библиотек возникла ошибка компиляции.Решение
:
Удалить код в packages/apps/Bluetooth и выполнить повторную синхронизацию. Предполагается, что причина может заключаться в том, что библиотека не была удалена корректно или не полностью. При перекомпиляции возникает ошибка переопределения.

Если вы продолжите проверку, вы обнаружите, что вся компиляция, связанная с rtkbt, находится в /device/…/device.mk.
Компиляция библиотеки bluetooth.default.so на самом деле находится в packages/apps/Bluetooth, поэтому я не не знаю, где сейчас находится библиотека. какие отношения

Supongo que te gusta

Origin blog.csdn.net/weixin_43069863/article/details/126992025
Recomendado
Clasificación