摘要:介紹一種高速高質(zhì)量的嵌入式攝像頭傳輸技術(shù)——Quick Capture技術(shù);詳細(xì)敘述其設(shè)計(jì)思想和工作流程,并用可編程邏輯器件Bulverde板卡予以實(shí)現(xiàn)。
隨著嵌入式處理器的普及和硬件成本的不斷降低,具有拍照和攝像功能的手機(jī)逐步走進(jìn)了人們的生活。但由于嵌入式處理器的速度有限,在處理圖形和多媒體數(shù)據(jù)方面顯得力不從心,導(dǎo)致嵌入式系統(tǒng)的攝像頭分辨率低、色深低、數(shù)據(jù)傳送速度慢,無法滿足人們即時(shí)捕捉高質(zhì)量圖片和視頻的需求。Quick Capture技術(shù)是一種專為手持設(shè)備設(shè)計(jì),用來改進(jìn)圖像質(zhì)量和傳輸速度的技術(shù)。本文基于Quick Capture技術(shù),就攝像頭驅(qū)動(dòng)程序和圖片信息傳輸問題,提供一種解決方案。
1 硬件介紹
本人選擇的嵌入式微處理器是2003年底Intel公司剛剛推出的一款專門面向移動(dòng)電話和掌上電腦的專用處理器,PXA27x系列,代號為Bulverde。該處理器采用了Quick Capture技術(shù)。Quick Capture為成像設(shè)備與無線設(shè)備提供接口,有助于改進(jìn)圖像質(zhì)量以及降低產(chǎn)品整體成本。該項(xiàng)技術(shù)包括快速瀏覽、快速拍照和快速視頻拍攝三種操作模式。該技術(shù)使得Bulverde可以支持400萬像素數(shù)碼鏡頭,并能提供最大416Mbps的數(shù)據(jù)傳輸速率。
集成在該開發(fā)板上的是Agilent公司的型號為ADCM-2650-0001的攝像頭感應(yīng)器。在VGA(480×640)分辨率下,每秒傳輸?shù)膱D片能達(dá)到15幀,具備自動(dòng)曝光和白平衡功能,并且針對嵌入式應(yīng)用做了很多優(yōu)化處理,所以非常適合嵌入式領(lǐng)域的應(yīng)用。ADCM-2650-0001內(nèi)含3個(gè)獨(dú)立的FIFO條目,存儲(chǔ)從感應(yīng)器捕捉到的視頻或者圖片數(shù)據(jù)信息。連接處理器和攝像頭感應(yīng)器的是Quick Capture Interface(快速捕捉接口),它提供了以下幾種類型的寄存器:
①Q(mào)CI(Quick Capture Interface)控制寄存器0~4;
②QCI時(shí)間間隔寄存器;
③QCI狀態(tài)寄存器;
④QCI FIFO控制寄存器;
⑤QCI接收緩沖區(qū)寄存器。
通過這些寄存器,可以控制整個(gè)處理器與感應(yīng)器之間的工作流程。
攝像頭感應(yīng)器與Intel XScale處理器之間的連接,如圖1所示。
2 接口的實(shí)現(xiàn)
本人采用的是ElaME1.0(“和欣”手機(jī)操作系統(tǒng))作為嵌入式操作系統(tǒng)。這是一款由我國自主開發(fā)的智能手機(jī)操作系統(tǒng),基于微內(nèi)核,具有多進(jìn)程、多線程、搶占式、基于線程的多優(yōu)先級任務(wù)調(diào)度等特性。和欣操作系統(tǒng)體積小,速度快,適合網(wǎng)絡(luò)時(shí)代的絕大部分嵌入式信息設(shè)備;除了支持?jǐn)z像頭感應(yīng)器外,還支持彩色LCD、觸摸屏、USB等多種嵌入式設(shè)備。
2.1 ElaME下的攝像頭驅(qū)動(dòng)模型
ElaME的驅(qū)動(dòng)模塊如圖2所示。
ElaME的驅(qū)動(dòng)模型與Unix、Windows操作系統(tǒng)的不一樣。它把驅(qū)動(dòng)程序構(gòu)件化了,使得驅(qū)動(dòng)程序具備了構(gòu)件的靈活等多種特性。例如:當(dāng)操作系統(tǒng)啟動(dòng)時(shí)并不用加載所有的驅(qū)動(dòng)程序,而是當(dāng)用戶需要用到該設(shè)備時(shí)才加載。這樣的設(shè)計(jì)使得在手機(jī)硬件資源比較緊張的環(huán)境中比傳統(tǒng)的嵌入式操作性系統(tǒng)具有更強(qiáng)的競爭力。設(shè)備管理器(device manager)是一個(gè)內(nèi)核對象,管理系統(tǒng)中所有的設(shè)備與驅(qū)動(dòng)對象,負(fù)責(zé)設(shè)備信息的搜集、驅(qū)動(dòng)構(gòu)件對象的創(chuàng)建和刪除、設(shè)備硬件資源的沖突檢測等。
攝像頭感應(yīng)器驅(qū)動(dòng)就是一個(gè)構(gòu)件對象,它的主要工作有以下幾點(diǎn):
①負(fù)責(zé)通過I2C總線查詢攝像頭感應(yīng)器信息,調(diào)節(jié)攝像頭感應(yīng)器的設(shè)置;
②建立和控制DMA傳輸通道,通過DMA方式將3個(gè)FIFO里的數(shù)據(jù)信息傳送到的內(nèi)存中;
③提供可以給用戶態(tài)程序使用的接口。
2.2 攝像頭感應(yīng)器驅(qū)動(dòng)的關(guān)鍵技術(shù)實(shí)現(xiàn)
下面從驅(qū)動(dòng)設(shè)計(jì)上,具體說明如何基于Quick Capture技術(shù),通過DMA方式在感應(yīng)器的FIFO與內(nèi)存之間建立最快速最高質(zhì)量的數(shù)據(jù)傳送。
在PXA27x型號的處理器中,有兩種內(nèi)部外圍器件:外部總線的外圍器件(PBP)和內(nèi)部總線的外圍器件(IBP)??焖俨蹲浇涌冢≦uick Capture Interface)屬于IBP。內(nèi)部總線的外圍器件通過外圍總線連接至DMAC,使用流數(shù)據(jù)傳送。DMAC有兩種工作方式:描述器取入方式和非描述器取入方式。因?yàn)楫?dāng)前手機(jī)上捕捉到的圖片大小分別是從QQVGA(160×120)、QCIF(176×144)、QVGA(320×240)、VGA(480×640)不等,最小QQVGA的每張圖片大小也有37.5KB,而每個(gè)描述器一次最大能傳送(8K-1)B,所以選擇多描述器鏈的方式。描述器鏈就是將該描述器的特定寄存器內(nèi)存放的是下一個(gè)描述器的地址,當(dāng)該描述器傳送完自身的數(shù)據(jù)后,能獲得下一描述器的地址,讀取描述器內(nèi)的信息,然后繼續(xù)下一輪的數(shù)據(jù)傳送。每個(gè)FIFO都有自己的一串描述器鏈。如果是捕捉圖片,采用一個(gè)FIFO即可,如果捕捉視頻,要用到三個(gè)FIFO。
以下是建立多描述器鏈的步驟。
①根據(jù)圖片的格式來確定每幀的大小,如為RGB565格式。
frame_size=camera_info>capture_width*
camera_context->capture_height*2;
camera_info->fifo0_transfer_size=frame_size;
//以下為捕捉視頻
//camera_info->fifo1_transfer_size=0;
//camera_info->fifo2_transfer_size=0;
②根據(jù)每幀的大小和描述器一次能傳送的大小確定描述器的個(gè)數(shù)。
camera_info->fifo0_num_descriptors=
(camera_info->fifo0_transfer_size+SINGLE_DESCRIPTOR_TRANSFER_MAX-1)
/SINGLE_DESCRIPTOR_TRANSFER_MAX;
camera_info->fifo1_num_descriptors=…;
camera_info->fifo1_num_descriptors=…;
③判斷是否超過DMA規(guī)定的描述器的大小限制。
④分配DMA描述器的地址,并賦給FIFO0。
camera_context->fifo0_descriptors_physical=
(unsigned)camera_context->dma_descriptors_physical;
cur_des_physical=(DMAC_DESCRIPTOR_T*)
camera_context->fifo0_descriptors_physical
⑤將每個(gè)描述器與1幀圖片的每個(gè)數(shù)據(jù)塊建立一一對應(yīng)的關(guān)系。
for(j=0;j
//建立描述符
cur_des_virtual->DDADR=
(unsigned)cur_des_physical+sizeof(DMAC_DESCRIPTOR_T);
//FIFO0物理地址z
cur_des_virtual->DSADR=CI_REGBASE_PHY+CIBR0;
cur_des_virtual->DTADR=darget_physical;
cur_des_virtual->DCMD=des_rtansfer_size
|DMAC_DCMD_FLOW_SRC
|DMAC_DCMD_INC_TRG_ADDR
|(DMAC_BURSTSIZE_16<<16);
//向前移動(dòng)指針
remain_size-=des_transfer_size;
cur_des_virtual++;
cur_des_physical++;
target_physical+=des_transfer_size;
}
//停止DMA傳送捕捉的幀
last_des_virtual=cur_des_virtual-1;
last_des_virtual->DDADR=(unsigned)camera_context->fifo0_descriptors_physical;
將每個(gè)描述器的DDADR(DMA描述器地址寄存器)指向下一個(gè)描述器的地址,將最后一個(gè)DDADR指向第一個(gè)描述器的地址,這樣形成一個(gè)環(huán)路的描述器鏈。另外,還要設(shè)置DSADR(DMA源地址寄存器)。由于是從攝像頭感應(yīng)器到內(nèi)存,所以FIFO的地址是源地址,DTADR(DMA目標(biāo)地址寄存器)為內(nèi)存,DCMD(DMA命令寄存器)設(shè)置傳輸大小和源流控制。
以上都建立好以后,DMA就可以傳送數(shù)據(jù)了。傳送數(shù)據(jù)的流程如圖3所示。
結(jié)語
目前的嵌入式開發(fā)板對于攝像頭感應(yīng)器的數(shù)據(jù)傳送方式各不相同。如NeoMagic公司開發(fā)的Mimagic5傳送圖片采用的是獨(dú)立的DMA功能,而傳送視頻采用的是特定的內(nèi)存訪問通道,Video Capture Interface不通過DMA方式;而Intel公司的PXA27x采用Quick Captre技術(shù),從官方發(fā)布數(shù)據(jù)表明,明顯地提高了視頻信息的傳送速度。
隨著嵌入式設(shè)備不斷的發(fā)展更新,將會(huì)有更多、更先進(jìn)、更高速的數(shù)據(jù)傳輸技術(shù)被應(yīng)用到嵌入式開發(fā)的各個(gè)領(lǐng)域。
- 驅(qū)動(dòng)方案(9084)
安防監(jiān)控攝像頭LED驅(qū)動(dòng)解決方案
13577攝像頭如何使用?
攝像頭的工作原理 Product information
CSI攝像頭接口及在英創(chuàng)主板上的應(yīng)用
GPS信號受攝像頭干擾問題怎么解決?
XMEGA驅(qū)動(dòng)攝像頭、彩色液晶屏
android多攝像頭同時(shí)預(yù)覽
max下面找不到攝像頭
u***攝像頭如何改成水下無線攝像頭
u***攝像頭的使用
【LeMaker Guitar試用體驗(yàn)】之攝像頭驅(qū)動(dòng)測試
三種奇異的攝像頭故障
專業(yè)回收手機(jī)攝像頭 收購手機(jī)攝像頭價(jià)格高
關(guān)于MTK6577手機(jī)攝像頭問題
加密攝像頭方案
回收攝像頭ic 收購攝像頭ic
回收手機(jī)攝像頭 收購手機(jī)攝像頭
回收手機(jī)攝像頭,收購攝像頭芯片
回收蘋果攝像頭 收購蘋果攝像頭
如何利用行車記錄儀后視攝像頭外掛多個(gè)攝像頭?
如何用labvIEW驅(qū)動(dòng)攝像頭
微型攝像頭 應(yīng)用案例
數(shù)字攝像頭介紹
最新攝像頭技術(shù)給車輛以強(qiáng)大的視覺功能
求助大神如何驅(qū)動(dòng)TB8034攝像頭呢
監(jiān)控攝像頭的種類
監(jiān)控攝像頭的選型方法
芯客-Rayeager PX2應(yīng)用之USB攝像頭---UVC攝像頭篇
芯客-Rayeager PX2應(yīng)用之USB攝像頭---UVC攝像頭篇
解決攝像頭機(jī)體本身的散熱問題
運(yùn)行l(wèi)inuxtv官網(wǎng)的v4l2代碼,capture攝像頭時(shí)select超時(shí)怎么解決?
301p攝像頭驅(qū)動(dòng)下載
35001攝像頭萬能驅(qū)動(dòng)下載
704鼎易301h攝像頭驅(qū)動(dòng)
713良田攝像頭211驅(qū)動(dòng)程序下載
3昂達(dá)攝像頭驅(qū)動(dòng)程序下載
101acer Aspire 4710攝像頭驅(qū)動(dòng)下載
24acer Aspire 3680攝像頭驅(qū)動(dòng)下載
101acer Aspire 4720攝像頭驅(qū)動(dòng)下載
10acer Aspire 4920攝像頭驅(qū)動(dòng)下載
45acer Aspire 5530攝像頭驅(qū)動(dòng)下載
21acer TravelMate 8210系列 攝像頭驅(qū)動(dòng)下載
40acer TravelMate 8200系列 攝像頭驅(qū)動(dòng)下載
20acer TravelMate 6410系列 攝像頭驅(qū)動(dòng)下載
15acer TravelMate 6291系列 攝像頭驅(qū)動(dòng)下載
19基于Quick Capture 技術(shù)的攝像頭驅(qū)動(dòng)方案
16USB攝像頭驅(qū)動(dòng)資料
138攝像頭的WINCE驅(qū)動(dòng)及操作說明
73如何安裝攝像頭驅(qū)動(dòng) 怎么樣安裝攝像頭驅(qū)動(dòng)
375304
IP網(wǎng)絡(luò)攝像頭解決方案
4331
車載攝像頭CAM
攝像頭的工作原理
28598數(shù)碼攝像頭成像距離
1321數(shù)碼攝像頭色彩位數(shù)
917數(shù)碼攝像頭最大幀數(shù)
1109數(shù)碼攝像頭對焦方式/范圍
1454數(shù)碼攝像頭鏡頭
431可視電話的攝像頭/顯示屏
534手機(jī)攝像頭故障維修
11883創(chuàng)世SD NAND貼片卡:智能攝像頭存儲(chǔ)難題的完美解決方案 #人工智能 #智能攝像頭 #攝像頭


Linux系統(tǒng)中如何安裝攝像頭驅(qū)動(dòng)
5【解決方案】如何將USB攝像頭轉(zhuǎn)換為網(wǎng)絡(luò)攝像頭?
38854三星新推出屏下攝像頭實(shí)現(xiàn)“透明攝像頭”技術(shù)
4788關(guān)于手機(jī)攝像頭測試最佳方案的解析
3357FSK總線攝像頭解決方案支持31路攝像頭視頻實(shí)時(shí)顯示
2456STM32驅(qū)動(dòng)攝像頭ov5640的驅(qū)動(dòng)源碼
16合宙Air系列開發(fā)板官方demo學(xué)習(xí)(二):camera-攝像頭:(1)-capture
2188
電子發(fā)燒友App




評論