SMP865X廣告機之藍牙(bluetooth)

作者 QQ: 35327864,msn: [email protected],mail: [email protected]

零,bluetooth概念及原理,請參考http://blog.sina.com.cn/s/blog_602f87700100e902.html,這是一篇極好的文章。
一,內核bluetooth驅動的支持
    我是基於smp865x-sdk3.8.0開發的,其中的linux內核爲2.6.22.19-27。配置smp865x開發環境的步驟就略了。本人用的是市面上普通的USB dongle藍牙模塊。
    1,重新配置linux內核
        make menuconfig
        進入Networking support -> Bluetooth subsystem support,選擇L2CAP protocol support,RFCOMM protocol support,
        接着,進入Bluetooth device drivers,選擇HCI USB driver。
        本人的藍牙只爲了進行簡單數據通訊,不作爲鼠標,音頻等使用,故而僅選擇如上選項,並都作爲built-in編譯進內核。
    2,配置usb驅動
        進入Device Drivers -> USB support,選擇SMP86xx EHCI HCD (USB 2.0) support,這是smp86xx平臺上專用於usb2.0的驅動。可以build-in,也可以以模塊方式編譯,但在運行時需要modprobe。
        同時,我也選了EHCI HCD (USB 2.0) support,不清楚這個有沒有用。
    3,編譯
        host> make all  
        host> make modules
        host> make modules_install   // put them in rootfs
        host> make all zbimage-linux-xload
        最後生成了zbimage-linux-xload 在 ./arch/mips/boot/下。這就是rootfs固件了,將它燒寫到sata上進行測試或直接燒進nand完成固件升級。
    4,啓動系統,將需要的驅動加載,插入usb藍牙,如果一切正常則能發現設備。

二,bluez程序庫移植,包含hcitool,hciconfig,rfcomm工具的移植及使用
    上一步,我們將bluetooth的支持編譯到了內核中。此時,我們還無法使用藍牙,真正要操作藍牙,需要編寫應用程序支持。bluez程序庫就是提供給我們編寫藍牙程序的基本庫。該庫負責進行系統調用,用以驅動硬件。我們只需要調用bluez的API即可。下載地址:git://git.kernel.org/pub/scm/bluetooth/bluez.git
    1,bluetooth庫
        bluetooth庫即bluez/lib下內容,只有3個c文件,就這三個c文件和一些頭文件構成了bluetooth庫。因爲這幾個文件並不依賴外部,所以,很好移植,不詳述。
    2,編譯tools
        tools比較多,我選擇了hcitool,hciconfig,rfcomm這三個進行編譯。其中,有parser.y,lexer.l。需要使用yacc和lex進行預處理。我直接在x86下configure並編譯,直接生成了parser.c,parser.h和lexer.c。
        記得要把config.h也拷過去用。
    3,編譯過程也很簡單,不述。

三,基於hci層協議的程序編寫

四,基於L2CAP層協議的程序編寫
五,基於rfcomm層協議的程序編寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章