BCM4330 BlueTooth 除錯記錄

半路愛上智慧發表於2012-03-21

做BT的驅動已有半年的時間多了,有一定的認識,但還沒完全精通,所以用筆記來記錄自己一直以來的除錯過程。

Part 1.有時候會出現開啟藍芽打不開的現象。

答:在/system/bluetooth/bluedroid/bluetooth.c中的註冊socket時間增加時間。具體做法是在函式int bt_enable()中

for (attempt = 1000; attempt > 0;  attempt--) {
        hci_sock = create_hci_sock();
        if (hci_sock < 0) goto out;

        if (!ioctl(hci_sock, HCIDEVUP, HCI_DEV_ID)) {
            break;
        }
        close(hci_sock);
        usleep(10000);  // 10 ms retry delay
    }


修改紅色標記的延時時間,即可解決偶爾開藍芽出現打不開的現象。


Part 2.開啟藍芽時間過長,會要16秒時間。

答:這個跟開啟藍芽載入patchram有很大的關係,由以前的兩部分載入,現在變成一部分載入

改之前:

/system/bin/brcm_patchram_plus.dat -d --enable_lpm --patchram /etc/BCM4330.hcd /dev/ttyHS0

/system/bin/brcm_patchram_plus.dat -d -baudrate 3000000 /dev/ttyHS0

改之後:

brcm_patchram_plus.dat  --enable_lpm --enable_hci --patchram /etc/BCM4330.hcd /dev/ttyHS0 --baudrate 3000000 &

修改過後能穩定載入BT。

還可以修改波特率來加快載入patchram的速度。具體操作如下

在函式void proc_patchram()中新增指定的波特率:

if (use_baudrate_for_download) {

               cfsetospeed(&termios, B115200);

               cfsetispeed(&termios, B115200);

               tcsetattr(uart_fd, TCSANOW, &termios);

 }

指定載入patchram的波特率為115200.

並且在主函式main()裡要在兩次執行函式proc_reset()中間追加一次執行函式proc_baudrate(),這樣就可以確保波特率已經設定好了。


相關文章