android-A20蓝牙驱动调用流程

本文详细解析了蓝牙模块从底层内核到HAL层再到JNI层的上电启动流程,涉及关键函数如rfkill_set_power、upio_set_bluetooth_power等,并展示了不同层级间的调用关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

倒退bt的上电流程:

     wifi_pm_gpio_ctrl
               |                                                                          kerne层
     rfkill_set_power          (lichee/linux-3.3/arch/arm/mach-sun7i/rf)  
               |
-----------------------------------------------------------------------------------------------------------------------------------------------------
  upio_set_bluetooth_power    (android/device/common/libbt/src)
               |
op(bt_vendor_opcode_t opcode, void *param)   利用BLUETOOTH_VENDOR_LIB_INTERFACE向上注册 (android/device/common/libbt/src)
               |
     init_vnd_if(bt_hw.c)      (android/external/bluetooth/bluedroid/hci/src/bt_hw.c) 初始化bt_vnd_if 去调用op方法
               |
     set_power       通过init_vnd_if中初始化的bt_vnd_if去调用op方法,利用bluetoothHCLibInterface向上注册。(/android/external/bluetooth/bluedroid/hci/src/bt_hci_bdroid.c)
               |
       bt_hc_get_interface           返回一个bluetoothHCLibInterface
               |
    bte_main_in_hw_init  初始化bt_hc_if,可调用到上面的set_power。(android/external/bluetooth/bluedroid/main/bte_main.c)      HAL层
               |
     bte_main_enable  通过bt_hc_if调用set_power (android/external/bluetooth/bluedroid/main/bte_main.c)
               |
    btif_enable_bluetooth (android/external/bluetooth/bluedroid/btif/src/btif_core.c)
               |
            enable  通过bluetoothInterface向上注册(android/external/bluetooth/bluedroid/btif/src/bluetooth.c)
              |
   bluetooth__get_bluetooth_interface     返回一个bluetoothInterface(android/external/bluetooth/bluedroid/btif/src/bluetooth.c)
              |
     open_bluetooth_stack  HAL层的注册接口,上层通过一个module去打开一个模块然后调用模块的方法。id:BT_HARDWARE_MODULE_ID 这个和JNI使用的应该一致
----------------------------------------------------------------------------------------------------------------------------------------------------------
              |

  android/packages/apps/Bluetooth/jni                              JNI层代码

              |

android/packages/apps/Bluetooth/                                    android应用软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值