<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM Linux的圖像采集與藍牙傳輸

基于A(yíng)RM Linux的圖像采集與藍牙傳輸

作者: 時(shí)間:2007-09-04 來(lái)源:網(wǎng)絡(luò ) 收藏
嵌入式系統具有可移植性好、網(wǎng)絡(luò )功能強、優(yōu)秀的GNU編譯工具、免費的開(kāi)放源代碼等優(yōu)點(diǎn)。S3C2410處理器是一款采用920T結構,內部資源非常豐富的32位嵌入式處理器。USB攝像頭具有低廉的價(jià)格,良好的性能,加上下有V4L支持對其編程,很容易集成到嵌入式系統中。技術(shù)是目前被認可的短距離無(wú)線(xiàn)通信技術(shù),廣泛應用于手機、電腦以及汽車(chē)免提系統。

本文介紹嵌入式的USB系統,并通過(guò)構建好的嵌入式Linux下的環(huán)境將到的圖片傳送到手機上,實(shí)現監控功能。

1 軟硬件平臺概述

系統硬件平臺如圖1所示。該平臺軟件上采用嵌入式Linux操作系統;硬件上采用Samsung公司的S3C2410處理器,另外配置了64 MB的NAND Flash存儲器和64MB的SDRAM,通過(guò)以太網(wǎng)控制芯片CS8900擴展一個(gè)10M以太網(wǎng)接口。引出兩個(gè)USB主口,一個(gè)接USB攝像頭,一個(gè)接USB藍牙適配器;將通過(guò)USB攝像頭到的數據輸出到緩沖區中,保存成文件,并通過(guò)藍牙到藍牙手機上。

2 攝像頭驅動(dòng)

在Linux下已經(jīng)支持的攝像頭驅動(dòng)是采用ov511芯片的攝像頭。使用這款芯片的攝像頭有網(wǎng)眼2000/3000等系列,而現在市面上常見(jiàn)的攝像頭芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux內核中并沒(méi)有相關(guān)的驅動(dòng)支持,但可以從網(wǎng)上下載到相關(guān)的spca5xx驅動(dòng)。

本系統就采用市面上最常用的zc0301p1芯片的攝像頭。由于是用于開(kāi)發(fā)板上,可以下載專(zhuān)用于嵌入式Linux的spca5xx-LE驅動(dòng),LE版的驅動(dòng)最大限度地減少了內存的使用,符合嵌入式的需要。將下載的驅動(dòng)加入到內核中,修改Makefile和Kconfig文件,在內核中選中USB_SPCA5XX,編譯后就將攝像頭的驅動(dòng)加入到內核映像中了。

3 Video4Linux簡(jiǎn)介

Video4Linux(簡(jiǎn)稱(chēng)“V4L”)是Linux下用于獲取視頻和音頻數據的API接口,配合適當的視頻采集設備和相應的驅動(dòng)程序,可以實(shí)現影像/圖片采集、AM/FM廣播、頻道切換等功能,在遠程會(huì )議、可視電話(huà)、視頻監控系統中都有廣泛的應用。

在Linux下,所有外設都被看成是一種特殊文件,稱(chēng)為“設備文件”,可以像訪(fǎng)問(wèn)普通文件一樣對其進(jìn)行讀寫(xiě)。一般來(lái)說(shuō),采用V4L驅動(dòng)的攝像頭設備文件是/dev/v4l/video0。為了通用,可建立一個(gè)到/dev/video0的連接。

V4L支持兩種方式來(lái)捕獲:mmap(內存映射方式)和read(直接讀取方式)。

V4L在include/linux/videodev.h文件中定義了一些重要的數據結構,在進(jìn)行圖像的采集過(guò)程中,就是通過(guò)對這些數據的操作來(lái)獲得最終的圖像數據。

4 圖像采集

在圖像采集過(guò)程中,采用V4L的read方式直接讀取設備來(lái)獲取JPEG格式的圖像數據,具體流程如圖2所示。

4.1 初始化攝像頭設備

指定要操作的攝像頭設備文件/dev/video0,調用open()打開(kāi)該設備文件,將自定義的數據結構vdIn中的成員初始化,包括設備名稱(chēng)(vd->videodevice)、要采集圖像的寬度(vd->hdrwidth)和高度(vd->hdrheight)、像素位數(vd->bppIn)、幀大小(vd->framesizeIn),為幀數據分配存儲空間(vd->pFramebuffer)。

4.2 設定待采集圖像的各種屬性

zc0301p1攝像頭支持JPEG格式的圖像采集,定義VIDEO_PALETTE_JPEG為21,將其賦值給圖像幀的調色板palette,這是一個(gè)必須設置的重要的參數。其他參數(如圖像色調、顏色、對比度等)可以先將VIDIOCGPICT傳遞給ioctl()查看其默認值。


如果發(fā)覺(jué)以上的參數不符合采集圖像的規范,則可以將pict.brightness、pict.colour、pict.contrast、pict.white-ness、pict.depth等重新賦值,再將VIDIOCSPICT傳遞給ioctl()來(lái)重新設置這些參數。

4.3 進(jìn)行圖像采集

在圖像采集過(guò)程中,采用read方法直接讀取設備文件來(lái)獲取一幀數據保存到緩沖區中,通過(guò)convertframe()函數將pFramebuffer中的數據轉成完整的JPEG格式的數據保存到ptframe緩存中去,再調用fwrite()函數將pt-frame緩存中的JPEG格式數據寫(xiě)入到指定的文件中去,即得到一幅JPEG格式的圖像。

5 藍牙

藍牙協(xié)議規范遵循開(kāi)放系統互連參考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),從低到高地定義了藍牙協(xié)議堆棧的各個(gè)層次,如圖3所示。

在藍牙協(xié)議體系中,OBEX位于RFCOMM之上。OBEX提供了對象的表示模型,并通過(guò)“Put”和“Get”操作對象。設備間的對話(huà)遵循客戶(hù)和服務(wù)器間的請求―響應模式。OBEX會(huì )話(huà)開(kāi)始由客戶(hù)端發(fā)出連接請求,連接建立成功后服務(wù)器發(fā)送成功的連接響應,否則發(fā)送連接不成功的連接響應。在連接之后,客戶(hù)端可以通過(guò)Put請求向服務(wù)器“推送(Push)”對象,如果對象較大,Put請求可以使用多個(gè)Put請求分組,每個(gè)請求分組需返回一個(gè)Put響應分組。本系統將采集到的圖片保存到/tmp/cap.jpeg,現在要將圖片通過(guò)藍牙傳輸到藍牙手機上。具體實(shí)現過(guò)程如下:

① 在內核中打上藍牙補丁,加入藍牙協(xié)議的支持,添加USB藍牙適配器的驅動(dòng)。

② 編譯bluez的庫和工具。從網(wǎng)上下載bluez-libs、bluez-utils和dbus庫,用arm-linux-gcc完成交叉編譯,得到了arm版的bluez庫和bluez的工具以及dbus-daemon工具。這是藍牙適配器在 Linux的環(huán)境下正常工作所必需的。

③ 啟動(dòng)USB藍牙適配器。要使USB藍牙適配器正常工作,需要用到步驟②中編譯得到的dbus-daemon工具和一些藍牙工具(如hciconfig、hcid等)。dbus是一個(gè)消息傳遞系統,應用程序間可通過(guò)它來(lái)相互傳遞消息。dbus-daemon是一個(gè)守護進(jìn)程,是運行hcid所必需的,hcid用來(lái)讀入hcid.conf文件。該文件是藍牙設備的一個(gè)配置文件,在該配置文件中設置好藍牙設備的類(lèi)型、classid、配對碼、設備是否可被搜索等其他的屬性。

④ 實(shí)現文件傳輸。本系統采用OBEX協(xié)議的客戶(hù)/服務(wù)器模式來(lái)傳遞采集到的圖片文件,需要用到藍牙的Object PUSH服務(wù)。首先用sdptool工具搜索到藍牙手機的MAC地址以及Object PUSH服務(wù)所占用的頻道,然后用rfcomm工具將該頻道綁定到虛擬串口,最后運行obex_test完成文件的傳輸。

圖4是采用Object PUSH服務(wù)來(lái)實(shí)現文件傳輸的流程。

結 語(yǔ)

本設計實(shí)現了ARM Linux環(huán)境下的圖像采集工作,構建了ARM Linux下的藍牙工作環(huán)境;通過(guò)藍牙的OBEX協(xié)議和Object PUSH服務(wù),實(shí)現了ARM Linux平臺與藍牙手機之間的文件傳輸。利用嵌入式系統和無(wú)線(xiàn)傳輸實(shí)現遠程監控,符合數字化、網(wǎng)絡(luò )化的發(fā)展趨勢。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 藍牙 傳輸 采集 圖像 ARM Linux 基于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>