www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ARM Linux的圖像采集與藍牙傳輸

嵌入式Linux系統(tǒng)具有可移植性好、網(wǎng)絡(luò)功能強、優(yōu)秀的GNU編譯工具、免費的開放源代碼等優(yōu)點。S3C2410處理器是一款采用ARM920T結(jié)構(gòu),內(nèi)部資源非常豐富的32位嵌入式處理器。USB攝像頭具有低廉的價格,良好的性能,加上Linux下有V4L支持對其編程,很容易集成到嵌入式系統(tǒng)中。藍牙技術(shù)是目前被認可的短距離無線通信技術(shù),廣泛應(yīng)用于手機、電腦以及汽車免提系統(tǒng)。

本文介紹基于嵌入式Linux的USB圖像采集系統(tǒng),并通過構(gòu)建好的嵌入式Linux下的藍牙環(huán)境將采集到的圖片傳送到藍牙手機上,實現(xiàn)監(jiān)控功能。

1 軟硬件平臺概述

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

2 攝像頭驅(qū)動

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

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

3 Video4Linux簡介

Video4Linux(簡稱“V4L”)是Linux下用于獲取視頻和音頻數(shù)據(jù)的API接口,配合適當?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動程序,可以實現(xiàn)影像/圖片采集、AM/FM廣播、頻道切換等功能,在遠程會議、可視電話、視頻監(jiān)控系統(tǒng)中都有廣泛的應(yīng)用。

在Linux下,所有外設(shè)都被看成是一種特殊文件,稱為“設(shè)備文件”,可以像訪問普通文件一樣對其進行讀寫。一般來說,采用V4L驅(qū)動的攝像頭設(shè)備文件是/dev/v4l/video0。為了通用,可建立一個到/dev/video0的連接。

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

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

4 圖像采集

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

4.1 初始化攝像頭設(shè)備

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

4.2 設(shè)定待采集圖像的各種屬性

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


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

4.3 進行圖像采集

在圖像采集過程中,采用read方法直接讀取設(shè)備文件來獲取一幀數(shù)據(jù)保存到緩沖區(qū)中,通過convertframe()函數(shù)將pFramebuffer中的數(shù)據(jù)轉(zhuǎn)成完整的JPEG格式的數(shù)據(jù)保存到ptframe緩存中去,再調(diào)用fwrite()函數(shù)將pt-frame緩存中的JPEG格式數(shù)據(jù)寫入到指定的文件中去,即得到一幅JPEG格式的圖像。

5 藍牙傳輸

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

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

① 在內(nèi)核中打上藍牙補丁,加入藍牙協(xié)議的支持,添加USB藍牙適配器的驅(qū)動。

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

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

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

圖4是采用Object PUSH服務(wù)來實現(xiàn)文件傳輸?shù)牧鞒獭?BR>

結(jié) 語

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

物聯(lián)網(wǎng)正在擴大規(guī)模并加速發(fā)展,進而驅(qū)動著全新的經(jīng)濟。而Arm生態(tài)系統(tǒng)正是這一巨大機遇背后的推動力。

關(guān)鍵字: ARM 物聯(lián)網(wǎng)

ARM公司是一家知識產(chǎn)權(quán)(IP)供應(yīng)商,它與一般的半導(dǎo)體公司最大的不同就是不制造芯片且不向終端用戶出售芯片,而是通過轉(zhuǎn)讓設(shè)計方案,由合作伙伴生產(chǎn)出各具特色的芯片。

關(guān)鍵字: ARM

2018年10月26日,深圳星河麗思卡爾頓酒店,ARM中國CEO吳雄昂在ARM年度技術(shù)論壇上對記者如是說,彼時的吳堅定,溫雅,意氣風(fēng)發(fā)。時隔兩年,ARM中國CEO吳雄昂再次回到媒體視線,這一次,ARM中國與來自投資方和劍...

關(guān)鍵字: ARM 芯片 集成電路

喜歡折騰主機的小伙伴一定都知道X86和ARM架構(gòu)的區(qū)別,前者在PC領(lǐng)域已經(jīng)統(tǒng)治了幾十年;后者則主要應(yīng)用于移動領(lǐng)域,尤其是近幾年,ARM的產(chǎn)品在終端應(yīng)用特別是手持終端應(yīng)用飛速發(fā)展。

關(guān)鍵字: 國產(chǎn) ARM 主機

科技公司們認為,收購將使英偉達控制一個重要的供應(yīng)商,該供應(yīng)商向蘋果、英特爾、三星電子、亞馬遜和華為等公司授權(quán)基本的芯片技術(shù),同時也向不計其數(shù)的中小技術(shù)企業(yè)提供授權(quán)??偛课挥谟腁RM公司將芯片設(shè)計和相關(guān)軟件代碼授權(quán)給所...

關(guān)鍵字: 英偉達 ARM 半導(dǎo)體公司

在去年九月,英偉達宣布以400億美金收購ARM時,就注定這場收購不會太順利。因為一旦ARM成功被英偉達收購,這將使ARM改變在全球半導(dǎo)體市場中的中立立場,因為ARM的很多客戶,都是英偉達的直接或者間接的對手。除此之外,還...

關(guān)鍵字: 英偉達 ARM 半導(dǎo)體

以下內(nèi)容中,小編將對工控主板的相關(guān)內(nèi)容進行著重介紹和闡述,希望本文能幫您增進對工控主板的了解,和小編一起來看看吧。

關(guān)鍵字: ARM 工控主板 主板

在這篇文章中,小編將為大家?guī)砉た刂靼宓南嚓P(guān)報道。如果你對本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: ARM 工控主板 主板

今年8月份公布的財報顯示,軟銀公司報虧3.16萬億日元(約合1644億元人民幣),比上一季度的2.1萬億日元虧損額繼續(xù)擴大,這意味著軟銀連續(xù)第二個季度創(chuàng)下有史以來最大的季度虧損。

關(guān)鍵字: ARM 軟銀集團 NVIDIA

學(xué)習(xí)Linux動態(tài)鏈接庫是一個繞不開的話題,我們今天就一起來看一下什么是動態(tài)鏈接庫、動態(tài)鏈接庫有什么好處、如何編譯出一個動態(tài)鏈接庫等幾個關(guān)于動態(tài)鏈接庫的幾個基本概念,廢話少說咱們直接開始

關(guān)鍵字: Linux 靜態(tài)鏈接庫 動態(tài)鏈接庫

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉