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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

的最小值是15ns。

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論