Android平板電腦camera驅(qū)動(dòng)_第1頁(yè)
Android平板電腦camera驅(qū)動(dòng)_第2頁(yè)
Android平板電腦camera驅(qū)動(dòng)_第3頁(yè)
Android平板電腦camera驅(qū)動(dòng)_第4頁(yè)
Android平板電腦camera驅(qū)動(dòng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Android平板電腦camera驅(qū)動(dòng)移植內(nèi)容簡(jiǎn)介硬件平臺(tái)OV9650簡(jiǎn)介OV9650攝像頭結(jié)構(gòu)視頻驅(qū)動(dòng)整體框架V4L2原理和框架V4L2的構(gòu)架流程SCCB傳輸協(xié)議SCCB傳輸時(shí)序圖Android的Camera系統(tǒng)結(jié)構(gòu)Android調(diào)用Camera驅(qū)動(dòng)過(guò)程。硬件平臺(tái)三星s5pc100S5PC100開(kāi)發(fā)平臺(tái)采用三星公司最新推出的S5PC100處理器(ARMCortexA8核),最高主頻可達(dá)到800MHz。板上配置有256MbytesDDR內(nèi)存、256MbytesNandsh和2MbytesNorFlash等大容量存儲(chǔ)器,方便客戶編寫(xiě)、調(diào)試自己的應(yīng)用程序。同時(shí)集成USB、UART、SD、LCD、Camera、VGA等常用設(shè)備接口,適用于各種手持設(shè)、消費(fèi)電子和工業(yè)控制設(shè)備等產(chǎn)品的開(kāi)發(fā)OV9650簡(jiǎn)介OV9650攝像頭OV9650是OmniVision公司的彩色CMOS圖像傳感器,具有130萬(wàn)像素,支持SXGA,VGA,QVGA,QQVGA,CIF,QCIF,QQCIF的分辨率,具有多種色彩輸出格式RGB,RGB(GRB4:2:2),YUV(4:2:2)和YCbCr(4:2:2),OV9650采用標(biāo)準(zhǔn)的SCCB接口。OV9650攝像頭結(jié)構(gòu)視頻驅(qū)動(dòng)整體框架V4L2的原理和架構(gòu)V4L2是Linux下開(kāi)發(fā)視頻采集設(shè)備驅(qū)動(dòng)程序的規(guī)范,它們使用分層的方法為驅(qū)動(dòng)程序的開(kāi)發(fā)提供了清晰的模型和一致的接口。應(yīng)用程序處于最上層,與Framebuffer一樣,V4L2都處于中間層,而實(shí)際的硬件設(shè)備處于下層,在linux中,視頻設(shè)備是設(shè)備文件,可以像訪問(wèn)普通文件一樣對(duì)其進(jìn)行讀寫(xiě),攝像頭在/dev/video0下。V4L2是一個(gè)兩層結(jié)構(gòu)的驅(qū)動(dòng),上層是videodev模塊,當(dāng)videodev初始化后,它把自己注冊(cè)一個(gè)主設(shè)備號(hào)為81的字符設(shè)備,同時(shí)注冊(cè)自己的字符驅(qū)動(dòng)成員函數(shù);下層是V4L2驅(qū)動(dòng)程序,它實(shí)際上是videodev的客戶端,videodev通過(guò)v4l2驅(qū)動(dòng)程序的成員函數(shù)來(lái)調(diào)用V4L2驅(qū)動(dòng)程序。當(dāng)V4L2驅(qū)動(dòng)程序初始化后,它把一個(gè)包含V4L2驅(qū)動(dòng)程序成員函數(shù),次設(shè)備號(hào)以及其他相關(guān)信息的結(jié)構(gòu)傳遞給videodev,從而把它要處理的設(shè)備注冊(cè)到videodev.V4L2的構(gòu)架和流程文件操作接口(ioctl/mmap…)字符設(shè)備驅(qū)動(dòng)程序V4L2驅(qū)動(dòng)程序具體的V4L2驅(qū)動(dòng)硬件設(shè)備SCCB傳輸協(xié)議簡(jiǎn)介S5PC100提供了一個(gè)攝像接口,攝像接口包括8位來(lái)自攝像頭的輸入數(shù)據(jù)信號(hào),一個(gè)輸出主時(shí)鐘信號(hào),三個(gè)來(lái)自攝像頭的輸入同步時(shí)鐘信號(hào)和一個(gè)輸出復(fù)位信號(hào)。S5PC100僅僅提供了一個(gè)攝像接口,因此要實(shí)現(xiàn)其功能,還需要攝像頭。在這里,我們使用OV9650。OV9650內(nèi)部有大量的寄存器需要配置,這就需要另外的數(shù)據(jù)接口。OV9650的數(shù)據(jù)接口稱為SCCB(串行攝像控制總線)。SCCB是簡(jiǎn)化的I2C協(xié)議,SIO-l是串行時(shí)鐘輸入線,SIO-O是串行雙向數(shù)據(jù)線,分別相當(dāng)于I2C協(xié)議的SCL和SDA。SCCB的總線時(shí)序與I2C基本相同。SCCB是和I2C相同的一個(gè)協(xié)議。SIO_C和SIO_D分別為SCCB總線的時(shí)鐘線和數(shù)據(jù)線SCCB傳輸時(shí)序SCCB_E信號(hào)是一個(gè)必須由主設(shè)備驅(qū)動(dòng)的向,低電平有效的控制信號(hào),它指示了數(shù)據(jù)傳輸?shù)拈_(kāi)始和結(jié)束。SCCB_E從高電平變?yōu)榈碗娖奖硎疽粋€(gè)傳輸?shù)拈_(kāi)始,從低電平變?yōu)楦唠娖奖硎疽粋€(gè)傳輸?shù)慕Y(jié)束,在數(shù)據(jù)傳輸期間,SCCB_E必須維持在邏輯0,當(dāng)SCCB_E為1時(shí),意味著此時(shí)總線空閑。SIO_C信號(hào)是一個(gè)必須由主設(shè)備驅(qū)動(dòng)的單向控制信號(hào)。它指出了每一個(gè)傳輸位。當(dāng)總線空閑時(shí),主設(shè)備必須驅(qū)動(dòng)SIO_C為邏輯1。在傳輸開(kāi)始后,當(dāng)SIO_C被驅(qū)動(dòng)為邏輯0,則一個(gè)數(shù)據(jù)傳輸開(kāi)始。在數(shù)據(jù)傳輸過(guò)程中SIO_C的一個(gè)邏輯1指示了一個(gè)單獨(dú)的已傳輸位。因此,SIO_D只能在SIO_C被驅(qū)動(dòng)為0時(shí)出現(xiàn).SIO_D信號(hào)是一個(gè)雙向數(shù)據(jù)信號(hào),可以被主設(shè)備或從設(shè)備驅(qū)動(dòng)。當(dāng)總線空閑時(shí)該信號(hào)可以保持懸空或三態(tài)。SIO_C的一個(gè)邏輯1代表了一位傳輸,因此SIO_D僅當(dāng)SIO_C被驅(qū)動(dòng)為邏輯0時(shí)出現(xiàn)。SCCB傳輸開(kāi)始位,結(jié)束位開(kāi)始位:SCCB_E由高電平變?yōu)榈碗娖奖硎緮?shù)據(jù)傳輸?shù)拈_(kāi)始(如圖3所示)。但是在聲明數(shù)據(jù)傳輸開(kāi)始之前,主設(shè)備必須驅(qū)動(dòng)SIO_D為邏輯1以取得總線的控制權(quán),這樣做可以防止在總線上傳輸數(shù)據(jù)之前傳播一個(gè)未知狀態(tài)。結(jié)束位:SCCB_E由低電平變?yōu)殡姼咂奖硎緮?shù)據(jù)傳輸?shù)慕Y(jié)束(如圖4所示)。在結(jié)束傳輸階段定義了兩個(gè)時(shí)間參數(shù):SCCB_E由低電平變?yōu)殡姼咂奖硎緮?shù)據(jù)傳輸?shù)慕Y(jié)束(如圖4所示)。在結(jié)束傳輸階段定義了兩個(gè)時(shí)間參數(shù):tPSC和tPSA。

定義為SIO_D后處理(post-charge)時(shí)間,即SCCB_E在聲明傳輸結(jié)束以后SIO_D必須保持為邏輯1的時(shí)間。

的最小值是15ns。

定義為SCCB_E的后活動(dòng)(post-active)時(shí)間,即在SIO_D聲明傳輸結(jié)束以后SCCB_E必須保持為邏輯0的時(shí)間,它的最小值是0ns。Android的Camera系統(tǒng)結(jié)構(gòu)調(diào)用camera客戶端Android應(yīng)用框架層Camera框架層將應(yīng)用與底層的實(shí)現(xiàn)隔離開(kāi)來(lái),實(shí)現(xiàn)了一套Android定義的對(duì)上對(duì)下接口規(guī)范,方便應(yīng)用及底層硬件的開(kāi)發(fā)和移植。這一層對(duì)上以Java類的形式包裝出android.hardware.Camera,提供給應(yīng)用層調(diào)用;對(duì)下在CameraHardwareInterface.h頭文件中定義了Camera硬件抽象層的接口,這是一個(gè)包含純虛函數(shù)的類,必須被實(shí)現(xiàn)類繼承才能使用。這個(gè)實(shí)現(xiàn)類也即是下層中將講到的用戶庫(kù)層,它繼承CameraHardwareInterface接口,實(shí)例化對(duì)底層硬件驅(qū)動(dòng)的封裝,最終生成libcamera.so供框架的libcameraservice.so調(diào)用。這樣做的好處是讓Camera的應(yīng)用框架代碼獨(dú)立,不受底層硬件驅(qū)動(dòng)改變的影響,方便在不同平臺(tái)上移植驅(qū)動(dòng)代碼,而保持上層的代碼不用變化。Android應(yīng)用框架層整個(gè)Camera在運(yùn)行的時(shí)候,可以大致上分成Client和Server兩個(gè)部分,它們分別在兩個(gè)進(jìn)程中運(yùn)行,它們之間使用Binder機(jī)制實(shí)現(xiàn)進(jìn)程間通訊。這樣在client調(diào)用接口,功能則在server中實(shí)現(xiàn),但是在client中調(diào)用就好像直接調(diào)用server中的功能,進(jìn)程間通訊的部分對(duì)上層程序不可見(jiàn)。CameraClient端通過(guò)Binder機(jī)制與CameraServer端通訊,Server端的實(shí)現(xiàn)傳遞到Client端。而Server端的實(shí)現(xiàn)又是調(diào)用硬件接口來(lái)實(shí)現(xiàn)。這就延伸到我們要介紹的Camera的下一個(gè)層次――庫(kù)層(HAL層)。庫(kù)層(硬件抽象層HAL)這個(gè)層次其實(shí)就是用戶空間的驅(qū)動(dòng)代碼。前面有介紹過(guò)框架層對(duì)下在CameraHardwareInterface.h頭文件中定義了Camera硬件抽象層的接口,它是包含純虛函數(shù)的類,必須被實(shí)現(xiàn)類繼承才能使用。HAL層正好繼承CameraHardwareInterface接口,依據(jù)V4l2規(guī)范實(shí)例化底層硬件驅(qū)動(dòng),使用ioctl方式調(diào)用驅(qū)動(dòng),最終生成libcamera.so供框架的libcameraservice.so調(diào)用。如果要在某硬件平臺(tái)上運(yùn)行Android,也就主要在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論