版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
精品文檔-下載后可編輯基于BlueZ協(xié)議棧的嵌入式系統(tǒng)無線通信實現(xiàn)-基礎(chǔ)電子摘要:藍牙技術(shù)作為統(tǒng)一的無線通信標(biāo)準(zhǔn),在多種智能設(shè)備無線互連,多媒體終端通信和家庭網(wǎng)絡(luò)等方面的應(yīng)用也越來越廣泛。本文在對的藍牙協(xié)議棧BlueZ進行分析研究的基礎(chǔ)上,在基于S3C2410a的實驗開發(fā)平臺上實現(xiàn)了基于藍牙協(xié)議棧BlueZ的移植和文件傳輸功能,達到了預(yù)期的效果。
1、引言
隨著科學(xué)技術(shù)發(fā)展和社會進步,嵌入式系統(tǒng)越來越多的應(yīng)用到我們的實際生活中,極大的改變著我們的生活。開發(fā)低成本、高性能、高可靠性的嵌入式產(chǎn)品正在成為研究的熱點。尤其是隨著信息化網(wǎng)絡(luò)化的發(fā)展,越來越需要與外部世界進行信息交換,當(dāng)前主流的數(shù)據(jù)交換方式都是有線的,但有線通信存在著諸多不足,而無線通信以其無法比擬的靈活性,可移動性和極強的可擴容性正得到越來越廣泛的應(yīng)用。藍牙技術(shù)作為統(tǒng)一的無線通信標(biāo)準(zhǔn),其目的在于建立通用的低功耗、低成本無線電空中接口及其控制軟件的公開標(biāo)準(zhǔn),使通信和計算機進一步結(jié)合,使不同廠家生產(chǎn)的便攜式設(shè)備在沒有電線或電纜互相連接的情況下,能在近距離范圍內(nèi)具有互用、互操作的性能。而藍牙技術(shù)在多種智能設(shè)備無線互連,多媒體終端通信和家庭網(wǎng)絡(luò)等方面的應(yīng)用也越來越廣泛,本文在對藍牙的協(xié)議棧BlueZ進行深入研究的基礎(chǔ)上,在實驗開發(fā)平臺上實現(xiàn)了協(xié)議棧的移植和文件的傳輸功能。
2、BlueZ的體系結(jié)構(gòu)
BlueZ由主機控制接口(HostControlInterface,HCI)、Bluetooth協(xié)議、邏輯鏈路控制和適配協(xié)議(LogicalLinkControlandAdaptationProtocol,L2CAP)、SCO音頻層、其它Bluetooth服務(wù)、用戶空間后臺進程以及配置工具組成。它的完整結(jié)構(gòu)如圖1所示(其中除應(yīng)用程序和硬件外為BlueZ提供的部分)。
3、BlueZ協(xié)議的移植[2]
本文涉及到的硬件平臺是三星公司的S3C2410a開發(fā)板,軟件平臺是內(nèi)核版本為2.4.20的Linux操作系統(tǒng),為實現(xiàn)藍牙協(xié)議棧BlueZ的移植,可進行以下步驟進行移植:
(1)生成交叉編譯器,創(chuàng)建交叉編譯環(huán)境
(2)編譯、配置實驗開發(fā)平臺上的Linux內(nèi)核
(3)安裝BlueZ軟件包
(4)編譯實驗開發(fā)平臺上的Linux內(nèi)核
(5)向s3c2410a實驗平臺移植通過上述步驟完成了藍牙協(xié)議棧BlueZ的移植后,一個嵌入式藍牙應(yīng)用開發(fā)平臺就搭建好了,下面利用該平臺提供的藍牙函數(shù)庫,來進行文件傳輸功能的開發(fā)。
4、文件傳輸功能的實現(xiàn)
如上步驟成功移植藍牙協(xié)議棧BlueZ后,一個完整的嵌入式藍牙應(yīng)用開發(fā)平臺就已經(jīng)搭建好了,本文將利用BlueZ提供的API函數(shù)在RFCOMM層上實現(xiàn)藍牙文件傳輸?shù)墓δ?,所采用的協(xié)議路徑為:射頻(RF)—基帶與鏈路控制(BBLC)—主機控制接口(HCI)—邏輯鏈路與適配協(xié)議(L2CAP)—串口仿真(RFCOMM)—對象交換協(xié)議(OBEX)。它的實現(xiàn)分為客戶端程序和服務(wù)器端程序,流程圖如圖2所示。
2反映了通過藍牙實現(xiàn)文件從客戶端傳輸一個文件到服務(wù)器的過程,其中用到的協(xié)議棧中的API函數(shù)以及針對藍牙通信的設(shè)置如下:(1)intsocket(intdomain,inttype,intprotocol)通過這個函數(shù)建立一個套接字,其中參數(shù)domain說明網(wǎng)絡(luò)程序所用的通訊協(xié)議族,本實驗中我們用的是藍牙協(xié)議棧BlueZ,所以我們的domain取值A(chǔ)F_BLUETOOTH,type
我們采用可靠的面向連接的SOCK_STREAM,protocol我們采用的代表串口仿真的BTPROTO_RFCOMM。
(2)intbind(intsockfd,structsockaddr*my_addr,intaddrlen)
這個函數(shù)是服務(wù)器端的函數(shù),實現(xiàn)的是綁定端口功能。在我們的實驗中,參數(shù)my_addr代表的我們用的是一個結(jié)構(gòu)體,表示本地地址信息,它的rc_family我們?nèi)锳F_BLUETOOTH,它的rc_bdaddr我們?nèi)】梢院腿我庵鳈C通信的INADDR_ANY。
(3)intlisten(intsockfd,intbacklog)
這個函數(shù)是服務(wù)器端的函數(shù),實現(xiàn)*端口功能,它和我們普通Linux下的使用方法完全一樣。
(4)intaccept(intsockfd,structsockaddr*addr,int*addrlen)
這個函數(shù)是服務(wù)器端的函數(shù),完成接受客戶端的鏈接請求,并建立與客戶端的鏈接的功能。
(5)intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen)
這個函數(shù)是客戶端的函數(shù),完成向服務(wù)器端申請建立鏈接,與上面的綁定端口類似,參數(shù)my_addr代表的我們用的是一個結(jié)構(gòu)體,表示要申請鏈接的服務(wù)器地址信息,它的rc_family我們?nèi)锳F_BLUETOOTH,它的rc_bdaddr我們?nèi)】梢院腿我庵鳈C通信的INADDR_ANY。
(6)ssize_twrite(intfd,constvoid*buf,size_tnbytes)ssize_tread(intfd,void*buf,size_tnbyte)
這兩個函數(shù)完成文件讀寫的功能,也完成服務(wù)器端和客戶端通信功能。在完成服務(wù)器端與客戶端通信功能時,把前面建立的通道看成是文件描述符,只要往文件描述符里面讀寫信息就可以了,與向文件讀寫過程一樣。
以上是實現(xiàn)中用到的協(xié)議棧BlueZ的主要庫函數(shù),它的客戶端代碼如下:
if((from_fd=open(argv[2],O_RDONLY))==-1)
while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
{/*一個致命的錯誤發(fā)生了*/if((bytes_read==-1)(errno!=EINTR))break;elseif(bytes_read0){ptr=buffer;
status=write(s,ptr,strlen(ptr));memset(buffer,0,BUFFER_SIZE);}
}
它的服務(wù)器端代碼如下:/*創(chuàng)建目標(biāo)文件*/memset(buf,0,BUFFER_SIZE);while(1){bytes_read=read(client,buf,sizeof(buf));
if(bytes_read0)
{ptr=buf;while(bytes_write=write(to_fd,ptr,bytes_read)){/*一個致命錯誤發(fā)生了*/
if((bytes_write==-1)(errno!=EINTR))break;/*寫完了所有讀的字節(jié)*/elseif(bytes_write==bytes_read)break;/*只寫了一部分,繼續(xù)寫*/elseif(bytes_write0){ptr+=bytes_write;
bytes_read-=bytes_write;
}}/*寫的時候發(fā)生的致命錯誤*/if(bytes_write==-1)break;/*這里讀完后必須把buffer清空*/memset(buf,0,sizeof(buf));
}else{exit(1);}
}
5、結(jié)束語
在目前,對于藍牙協(xié)議棧的移植已經(jīng)有非常深入的研究,但對基于藍牙協(xié)議棧BlueZ的源代碼級的研究還不多。本文在ARM9+Linux環(huán)境下構(gòu)建了的藍
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度賓館客房租賃與酒店旅游紀(jì)念品定制管理合同3篇
- 2025年度二零二五大學(xué)社團學(xué)術(shù)研討會贊助協(xié)議4篇
- 2025年度城市軌道交通設(shè)備維護承包協(xié)議4篇
- 二零二四年國際合作項目建議書編制與交流合作合同3篇
- 二零二五年度教育設(shè)備存貨質(zhì)押擔(dān)保與租賃服務(wù)合同3篇
- 2025版協(xié)議書范本合同(數(shù)字貨幣)3篇
- 2025年度網(wǎng)絡(luò)安全防護系統(tǒng)采購合同范本4篇
- 二零二五年度車牌租賃行業(yè)信用體系建設(shè)合同4篇
- 2025版?zhèn)€人個人間個人住房貸款合同范本2篇
- 二零二五年度金融信息安全保密與應(yīng)急響應(yīng)合同4篇
- 2024-2025學(xué)年北京石景山區(qū)九年級初三(上)期末語文試卷(含答案)
- 第一章 整式的乘除 單元測試(含答案) 2024-2025學(xué)年北師大版數(shù)學(xué)七年級下冊
- 春節(jié)聯(lián)歡晚會節(jié)目單課件模板
- 中國高血壓防治指南(2024年修訂版)
- 糖尿病眼病患者血糖管理
- 抖音音樂推廣代運營合同樣本
- 《春酒》琦君完整版
- 教育促進會會長總結(jié)發(fā)言稿
- 北師大版(2024新版)七年級上冊數(shù)學(xué)第四章《基本平面圖形》測試卷(含答案解析)
- 心理調(diào)適教案調(diào)整心態(tài)積極應(yīng)對挑戰(zhàn)
- 小學(xué)數(shù)學(xué)6年級應(yīng)用題100道附答案(完整版)
評論
0/150
提交評論