




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——在S3C2410上移植bluetooth(藍(lán)牙)
在S3C2410上移植bluetooth(藍(lán)牙)
最近兩天在HHARM2410-R3上移植了USB藍(lán)牙設(shè)備和BlueZ藍(lán)牙協(xié)議棧,呵呵,藍(lán)牙果真是個(gè)很好的東西,協(xié)議棧內(nèi)容很豐富,掛上去以后可以使用好多功能。我現(xiàn)在就可以用它來接收GPS數(shù)據(jù)以及和用手機(jī)上網(wǎng)。我是在做車載的,所以特別有用。積累了一些關(guān)于藍(lán)牙的知識(shí),但是算是初步的,把我的經(jīng)驗(yàn)發(fā)上來,各位做過藍(lán)牙的大哥請(qǐng)多指導(dǎo)。
先介紹一下硬件,我用的是電腦賣場(chǎng)里面隨便買到的USB藍(lán)牙適配器,價(jià)格在80元左右,應(yīng)當(dāng)是臺(tái)產(chǎn)的,沒有牌子,像一個(gè)小一點(diǎn)的U盤。買之前叫賣家在windows下測(cè)試一下,帶一個(gè)帶藍(lán)牙的手機(jī)過去試試看,確認(rèn)能用再買。
linux上的藍(lán)牙協(xié)議棧有好幾個(gè),官方的藍(lán)牙協(xié)議棧是Bluez,在上能找到所有的說明文檔和源代碼。我先是在自己的pc上安裝了bluez的協(xié)議棧,然后又把它移植到了華恒HHARM2410-R3上。
(一)在Redhat9上安裝Bluez
在pc上的安裝我參考了O'Reilly的LinuxUnwired一書,chapter7中詳細(xì)地介紹了linux下的bluetooth的基礎(chǔ)知識(shí)、安裝、配置和使用。安裝前必需了解一下bluez的基本結(jié)構(gòu),直接位于發(fā)射傳輸協(xié)議之上的協(xié)議是HCI(hostcontrolinterface),我的手機(jī)和藍(lán)牙GPS用到的高層協(xié)議是服務(wù)發(fā)現(xiàn)協(xié)議SDP和模擬串口的協(xié)議RFCOMM,中間那一層協(xié)議是L2CAP,應(yīng)當(dāng)是處理規(guī)律鏈路的吧,我并不是很明白,請(qǐng)參考bluez的官方文檔。
HHARM2410-R3上用到內(nèi)核版本是2.4.18,于是我在pc上安裝bluez時(shí)也使用了2.4.18的內(nèi)核。使用bluez必需要對(duì)內(nèi)核打patch的,于是到上下載了linux-2.4.18.tar.bz2后到/patches.html上下載針對(duì)2.4.18的patch,patch-2.4.18-mh15.gz。于是,解壓,打patch:
#tarxjvflinux-2.4.18.tar.bz2
#cdlinux/
#gzip-dc../patch-2.4.18-mh15.gz|patch-p1
注意一下這時(shí)的patch的輸出,在源代碼方面的patch是針對(duì)driver/、include/、net/目錄下的代碼的修改,并沒有修改到內(nèi)核部分的內(nèi)容,應(yīng)當(dāng)沒有修改到linux核心的東西,在移植到S3C2410時(shí)應(yīng)當(dāng)不會(huì)有太大的問題。
下面就是編譯內(nèi)核,在config的時(shí)候關(guān)于bluez我的配置是這樣的:
#
#Bluetoothsupport
#
CONFIG_BLUEZ=m
CONFIG_BLUEZ_L2CAP=m
CONFIG_BLUEZ_SCO=m
CONFIG_BLUEZ_RFCOMM=m
CONFIG_BLUEZ_RFCOMM_TTY=y
CONFIG_BLUEZ_BNEP=m
CONFIG_BLUEZ_BNEP_MC_FILTER=y
CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
#
#Bluetoothdevicedrivers
#
CONFIG_BLUEZ_HCIUSB=m
#CONFIG_BLUEZ_HCIUSB_SCOisnotset
在S3C2410上移植bluetooth(藍(lán)牙)
TXbytes:313acl:0sco:0commands:15errors:0
Features:0xff0xff0x8d0x780x080x180x000x00
Packettype:DM1DM3DM5DH1DH3DH5HV1HV2HV3
Linkpolicy:RSWITCHHOLDSNIFFPARK
Linkmode:SLAVEACCEPT
Name:'BlueZ(0)'
Class:0x000100
ServiceClasses:Unspecified
DeviceClass:Computer,Uncategorized
HCIVer:1.2(0x2)HCIRev:0x1aeLMPVer:1.2(0x2)LMPSubver:0x1ae
Manufacturer:IntegratedSystemSolutionCorp.(57)
可以看到目前設(shè)備的配置狀況,有些是從hcid.conf中讀取的,有些是從設(shè)備中讀取的。
下面,開啟手機(jī)上的藍(lán)牙,啟動(dòng)藍(lán)牙GPS
#hcitoolscan
Scanning...
00:0E:07:58:1A:33T628
00:08:1B:C0:D1:3CHOLUXGR-231
這樣就看到了兩個(gè)設(shè)備了,我用的是索愛的T628和HOLUX的藍(lán)牙GPS,前面的一串應(yīng)當(dāng)是藍(lán)牙設(shè)備唯一的地址。#sdptoolbrowse可以看到每個(gè)設(shè)備所提供的服務(wù)
Inquiring...
Browsing00:0E:07:58:1A:33...
ServiceName:Dial-upNetworking
ServiceRecHandle:0x10000
ServiceClassIDList:
DialupNetworking(0x1103)
GenericNetworking(0x1201)
ProtocolDescriptorList:
L2CAP(0x0100)
RFCOMM(0x0003)
Channel:1
ProfileDescriptorList:
DialupNetworking(0x1103)
Version:0x0100
ServiceName:SerialPort1
ServiceRecHandle:0x10003
ServiceClassIDList:
SerialPort(0x1101)
ProtocolDescriptorList:
L2CAP(0x0100)
RFCOMM(0x0003)
Channel:4
在S3C2410上移植bluetooth(藍(lán)牙)
ServiceName:OBEXObjectPush
ServiceRecHandle:0x10005
ServiceClassIDList:
OBEXObjectPush(0x1105)
ProtocolDescriptorList:
L2CAP(0x0100)
RFCOMM(0x0003)
Channel:10
OBEX(0x0008)
ProfileDescriptorList:
OBEXObjectPush(0x1105)
Version:0x0100
Browsing00:08:1B:C0:D1:3C...
手機(jī)上綁定了好多的服務(wù),有撥號(hào)服務(wù),音頻服務(wù),串口服務(wù),文件交換服務(wù)(OBEX)...在SDP協(xié)議下,每個(gè)服務(wù)綁定到一個(gè)Channel上。GPS上沒有綁定服務(wù),它只作為虛擬串口設(shè)備來使用。
利用實(shí)用工具rfcomm可以把遵循RFCOMM的服務(wù)bind到一個(gè)類似的串口設(shè)備上。在綁定之前,必需確保/dev下有rfcomm*的設(shè)備,假使沒有,就自己建立:
#mknod-m666/dev/rfcommXc216X(X是數(shù)字)
這樣就可以綁定了,譬如我需要用手機(jī)撥號(hào)上網(wǎng)的功能,看到它的Channel1是RFCOMM的DialupNetworking功能,則:#rfcommbind000:0E:07:58:1A:331
即將00:0E:07:58:1A:33設(shè)備的Channel1服務(wù)綁定到/dev/rfcomm0上,這樣,就相當(dāng)于建立了一個(gè)虛擬的串行連接到一個(gè)可以撥號(hào)的無線modem上了,開啟minicom,設(shè)置串口為/dev/rfcomm0,波特率19200,8N1,鍵入atz,返回OK。用ppp就可以撥號(hào)上網(wǎng)了,第一次連接時(shí)手機(jī)遇彈出個(gè)輸入框問PINcode,以后就不用了。
GPS設(shè)備只是作為串口來用的,也很簡(jiǎn)單:
#rfcommbind100:08:1B:C0:D1:3C
開啟minicom設(shè)置波特率為4800就可以讀GPS數(shù)據(jù)了,大功告成!
另外,sdpd程序是本設(shè)備提供給對(duì)外的看到的服務(wù),可以通過sdptooladd--channel=XSP來增加對(duì)外的服務(wù),我沒有研究過。還有對(duì)于文件傳輸OBEX和個(gè)人局域網(wǎng)BNEQ還需要繼續(xù)學(xué)習(xí)。
二)在HHARM2410-R3上的移植
完成了在普通redhat上的安裝,熟悉了藍(lán)牙協(xié)議棧一些基本的東西,下面的任務(wù)就是把協(xié)議棧搬到開發(fā)板上了。第一步當(dāng)然是內(nèi)核了,由于華恒的內(nèi)核代碼改過,我也不知道從bluez上下載的patch能不能使用,試試看了,只好。#cd/HHARM2410/kernel
#gzip-dc~/patch-2.4.18-mh15.gz|patch-p1
#find./-name'*rej'
./fs/cramfs/inode.c.rej
不好,有文件不能patch,看看是針對(duì)cramfs文件系統(tǒng)的patch,我也不明白為什么bluez的patch會(huì)修改到cramfs,不過我想問題應(yīng)當(dāng)不大。內(nèi)核源代碼關(guān)于bluetooth的部分華恒應(yīng)當(dāng)沒有改過,因此patch的主要部分應(yīng)當(dāng)是沒有問題的。假使內(nèi)核編譯后發(fā)生問題,我想大約也只有把內(nèi)核代碼翻出來看了。
在S3C2410上移植bluetooth(藍(lán)牙)
echoPIN:123
用C實(shí)現(xiàn)一個(gè)就是:
#includestdio.h
intmain(intargc,char*argv[])
{
printf(PIN:123);
}
交織編譯成my_pin_helper再放到板子的/usr/bin下,那么就可以把板子的hcid.conf修改成:pin_helper/usr/pin/my_pin_helper
后來,我在板子上也用MiniGUI寫了一個(gè)pin_helper,也挺簡(jiǎn)單的。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鎮(zhèn)江資格證模擬考試
- 公司合作養(yǎng)豬合同范本
- 冷鐓模具合同范本
- 冰箱售后服務(wù)合同范本
- 農(nóng)村水田改造合同范本
- 代理交易合同范本
- 兄妹贈(zèng)予房產(chǎn)合同范本
- 北京出租車司機(jī)合同范本
- 農(nóng)村承包經(jīng)營(yíng)戶合同范本
- 臨時(shí)店面員工合同范本
- DB11 938-2022 綠色建筑設(shè)計(jì)標(biāo)準(zhǔn)
- 部編版語文八年級(jí)下冊(cè)第六單元名著導(dǎo)讀《鋼鐵是怎樣煉成的》問答題 (含答案)
- 2022譯林版新教材高一英語必修二單詞表及默寫表
- 全國(guó)青少年機(jī)器人技術(shù)等級(jí)考試:二級(jí)培訓(xùn)全套課件
- 九種中醫(yī)體質(zhì)辨識(shí)概述課件
- (外研版)英語四年級(jí)下冊(cè)配套同步練習(xí) (全書完整版)
- 小學(xué)數(shù)學(xué)計(jì)算能力大賽實(shí)施方案
- 古詩詞誦讀《虞美人》課件-統(tǒng)編版高中語文必修上冊(cè)
- 文物學(xué)概論-中國(guó)古代青銅器(上)
- 制作拉線課件
- 某物業(yè)公司能力素質(zhì)模型庫(參考)
評(píng)論
0/150
提交評(píng)論