|
最近一直在调RK3066的蓝牙和WIFI这块驱动,蓝牙和WIFI这块目前都可以正常工作了,涉及的模组有RTL8188EUS,RTL8189,RTL8723、bcm4330、MTK7601和RDA5876等相关的模组,调了好长一段时间,也准备写个开发日记来记录下,但最近忙着调摄像头,所以一直都没时间写,这里把一些简单的流程写下来,希望对有些人有些帮助。
首先修改system/bluetooth的相关文件,首先在该目录下brcm_patchram_plus这个目录里,把源码包提供的rtk8723_bt_config、rlt8723a_chip_b_cut_bt40_fw拷贝进去,并修改hcd.mk,具体修改如下:
diff --git a/bluedroid/bluetooth.c b/bluedroid/bluetooth.c
index 7120a5e..74cef3f 100644
--- a/bluedroid/bluetooth.c
+++ b/bluedroid/bluetooth.c
@@ -37,7 +37,7 @@
#endif
#define HCID_STOP_DELAY_USEC 500000
-#define BLUETOOT_POWER_USEC 500000
+#define BLUETOOT_POWER_USEC 1500000
#define MIN(x,y) (((x)<(y))?(x):(y))
diff --git a/brcm_patchram_plus/brcm_patchram_plus.c b/brcm_patchram_plus/brcm_patchram_plus.c
index e425ce3..60948b8 100755
--- a/brcm_patchram_plus/brcm_patchram_plus.c
+++ b/brcm_patchram_plus/brcm_patchram_plus.c
@@ -874,6 +874,7 @@ static int read_btaddr_from_vflash()
if(ioctl(fd, READ_BDADDR_FROM_FLASH, (unsigned long)bd_addr) < 0)
{
LOGE("vflash ioctl failed\n");
+ close(fd);
return -1;
}
diff --git a/brcm_patchram_plus/hcd.mk b/brcm_patchram_plus/hcd.mk
index a943b7f..0d9e2ae 100644
--- a/brcm_patchram_plus/hcd.mk
+++ b/brcm_patchram_plus/hcd.mk
@@ -8,5 +8,7 @@ PRODUCT_COPY_FILES += \
system/bluetooth/brcm_patchram_plus/bcm432x/BCM4329B1_0157_SEMCO_B23_TestOnly_MC200.hcd:system/etc/bluez/bcm432x/BCM4329B1_0157_SEMCO_B23_TestOnly_MC200.hcd \
system/bluetooth/brcm_patchram_plus/rk903.hcd:system/etc/bluez/rk903.hcd \
system/bluetooth/brcm_patchram_plus/rk903_26M.hcd:system/etc/bluez/rk903_26M.hcd \
- system/bluetooth/brcm_patchram_plus/nh660.hcd:system/etc/bluez/nh660.hcd
+ system/bluetooth/brcm_patchram_plus/nh660.hcd:system/etc/bluez/nh660.hcd \
+ system/bluetooth/brcm_patchram_plus/rlt8723a_chip_b_cut_bt40_fw:system/etc/rlt8723a_chip_b_cut_bt40_fw \
+ system/bluetooth/brcm_patchram_plus/rtk8723_bt_config:system/etc/rtk8723_bt_config
然后在external/bluetooth/bluz下把源码包提供的文件hciattach_rtk.c拷贝到tools目录下,修改该目录下的hciattach.c,增加相应的命令;
内核部分主要修改bsp部分对应的引脚,把源码包提供的hci_rtk_h5.c拷贝到drivers/bluetooth/目录下,修改相应的函数使得适用于RK平台
完成上述工作后,修改init.rc,增加service hciattach -n -s 115200 /dev/ttyS0 rtk_h5 115200 flow
首先调试下层看通了没,启动后,在串口控制终端执行
hciattach -s 115200 /dev/ttyS0 rtk_h5 115200 flow
执行后会打印相关初始化信息,如果显示完成,接着执行下面的命令,这些过程可用示波器看相关的波形,看有没有正常
hciconfig 正常会显示设备相关信息,包括蓝牙地址等
然后执行hciconfig hci0 up
这个命令开启蓝牙,蓝牙开启后
执行hcitool scan
若可以正常搜到蓝牙设备,恭喜你,蓝牙可以正常工作了。
[ 本帖最后由 梦之旅 于 2013-5-29 19:54 编辑 ]
|
|