娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

android camera(三):camera V4L2 FIMC

發布者:平靜寧靜最新更新時間:2025-02-07 來源: cnblogs關鍵字:android  camera  V4L2 手機看文章 掃描二維碼
隨時隨地手機看文章

關鍵詞:android  camera CMM 模組 camera參數  CAMIF   V4L2  
平臺信息:
內核:linux
系統:android

平臺:S5PV310(samsung exynos 4210) 

作者:xubin341719(歡迎轉載,請注明作者)

 

 

http://blog.csdn.net/xubin341719/article/details/7727426

android camera(一):camera模組CMM介紹

android camera(二):攝像頭工作原理、s5PV310 攝像頭接口(CAMIF)

android camera(三):camera V4L2 FIMC

android camera(四):camera 驅動 GT2005

下載:常用攝像頭規格書(個別有android驅動程序)  :bf3703 30W、gc0308 30W、ov7670、gt2005 200W、gt2015 200W、NT99250 200W、s5k5ba 200W、s5k4ba

          前面兩篇說的有點多了,不過多了解點東西也挺好的,遇到問題時可以有更多的思路,真正驅動是從這一塊開始。一般BSP的camera都是完好的,我們只用關心驅動這些就可以了。

 

1. V4L2

1)簡介

        在Linux中,攝像頭方面的標準化程度比較高,這個標準就是V4L2驅動程序,這也是業界比較公認的方式。

        V4L全稱是Video for Linux,是Linux內核中標準的關于視頻驅動程序,目前使用比較多的版本是Video for Linux 2,簡稱V4L2。它為Linux下的視頻驅動提供了統一的接口,使得應用程序可以使用統一的API操作不同的視頻設備。從內核空間到用戶空間,主要的數據流和控制類均由V4L2驅動程序的框架來定義。

V4L2驅動程序一般只提供Video數據的獲得,而如何實現視頻預覽,如何向上層發送數據,如何把純視頻流和取景器、視頻錄制等實際業務組織起來,都是camera的硬件抽象層需要負責的工作。

V4L2驅動核心實現為如下文件:drivers/media/video/v4l2-dev.c。

V4l2-dev.h中定義的video_device是V4L2驅動程序的核心數據結構,它為具體的攝像頭sensor驅動提供了接口調用。

V4l2的采集過程(應用程序):

1)     打開設備,獲得文件描述符;

2)     設置圖片格式;

3)     分配緩沖區;

4)     啟動采集過程,讀取數據;

5)     停止采集,關閉設備。


2)數據結構

V4L2的主要數據結構是video_device,定義在v4l2_dev.h中:

  1. struct video_device  

  2. {  

  3.     /* device ops */  

  4.     const struct v4l2_file_operations *fops;  /*接口函數指針*/  

  5.   

  6.     /* sysfs */  

  7.     struct device dev;      /* v4l 設備結構 */  

  8.     struct cdev *cdev;      /* 字符設備結構*/  

  9.   

  10.     /* Set either parent or v4l2_dev if your driver uses v4l2_device */  

  11.     struct device *parent;      /* 設備父指針 */  

  12.     struct v4l2_device *v4l2_dev;   /* v4l2設備指針*/  

  13.   

  14.     /* device info */  

  15.     char name[32];  /*設備名稱*/  

  16.     int vfl_type;  

  17.     /* 'minor' is set to -1 if the registration failed */  

  18.     int minor;    /*次設備號*/  

  19.     u16 num;  

  20.     /* use bitops to set/clear/test flags */  

  21.     unsigned long flags;  

  22.     /* attribute to differentiate multiple indices on one physical device */  

  23.     int index;  

  24.   

  25.     /* V4L2 file handles */  

  26.     spinlock_t      fh_lock; /* Lock for all v4l2_fhs */  

  27.     struct list_head    fh_list; /* List of struct v4l2_fh */  

  28.   

  29.     int debug;          /* debug 級別*/  

  30.   

  31.     /* Video 標準變量 */  

  32.     v4l2_std_id tvnorms;        /* Supported tv norms */  

  33.     v4l2_std_id current_norm;   /* Current tvnorm */  

  34.   

  35.     /* 回調函數 */  

  36.     void (*release)(struct video_device *vdev);  

  37.   

  38.     /* ioctl 回調函數 */  

  39.     const struct v4l2_ioctl_ops *ioctl_ops;     

  40. };  

主要接口函數有:

intvideo_register_device(struct video_device *vdev, int type, int nr);

static intv4l2_ioctl(struct inode *inode, struct file *filp,       unsigned int cmd, unsigned long arg);

2.  FIMC                     

1)簡介

FIMC這個模塊不僅僅是一個攝像頭的控制接口,它還承擔著V4L2的output功能和overlay的功能。

FIMC的驅動在內核中的位置:drivers/media/video/samsung/fimc

它包含下邊的文件:

      fimc_regs.c
        fimc_capture.c
        fimc_dev.c
        fimc_output.c
        fimc_overlay.c
        fimc_v4l2.c

它們的組織關系如下:

 

可以看到,FIMC的驅動實現了v4l2所有的接口,可以分為v4l2-input設備接口,v4l2-output設備接口以及v4l2-overlay設備接口。這里我們主要關注v4l2-input設備接口,因為攝像頭屬于視頻輸入設備。

fimc_v4l2.c里面注冊了很多的回調函數,都是用于實現v4l2的標準接口的,但是這些回調函數基本上都不是在fimc_v4l2.c里面實現的,而是有相應的.c分別去實現。比如:

v4l2-input設備的操作實現:fimc_capture.c
        v4l2-output設備的操作實現: fimc_output.c
        v4l2-overlay設備的操作實現: fimc_overlay.c

這些代碼其實都是和具體硬件操作無關的,這個驅動把所有操作硬件寄存器的代碼都寫到一個文件里面了,就是fimc40_regs.c。這樣把硬件相關的代碼和硬件無關的代碼分開來實現是非常好的方式,可以最大限度的實現代碼復用。

 2) 數據結構 

 

FIMC的主要數據結構fimc_control,定義在fimc.h中:

  1. struct fimc_control {  

  2.     int             id;     /* 控制器 id */  

  3.     char                name[16];  

  4.     atomic_t            in_use;  

  5.     void __iomem            *regs;      /* 寄存器 i/o */  

  6.     struct clk          *clk;       /* interface clock */  

  7.     struct regulator    *regulator;     /* pd regulator */  

  8.     struct fimc_meminfo     mem;        /* for reserved mem */  

  9.   

  10.     /* kernel helpers */  

  11.     struct mutex            lock;       /* controller lock */  

  12.     struct mutex            alloc_lock;  

  13.     struct mutex            v4l2_lock;  

  14.     wait_queue_head_t       wq;  

  15.     struct device           *dev;  

  16.     int             irq;  

  17.   

  18.     /* v4l2 related */  

  19.     struct video_device     *vd;  

  20.     struct v4l2_device      v4l2_dev;  

  21.   

  22.     /* fimc specific */  

  23.     struct fimc_limit       *limit;     /* H/W limitation */  

  24.     struct s3c_platform_camera  *cam;       /* activated camera */  

  25.     struct fimc_capinfo     *cap;       /* capture dev info */  

  26.     struct fimc_outinfo     *out;       /* output dev info */  

  27.     struct fimc_fbinfo      fb;     /* fimd info */  

  28.     struct fimc_scaler      sc;     /* scaler info */  

  29.     struct fimc_effect      fe;     /* fimc effect info */  

  30.   

  31.     enum fimc_status        status;  

  32.     enum fimc_log           log;  

  33.   

  34.     u32             ctx_busy[FIMC_MAX_CTXS];  

  35. };  

因為FIMC一共有三套一樣的控制器(fimc0, fimc1, fimc2),所以驅動里使用了一個數組來描述:

  1. struct video_device fimc_video_device[FIMC_DEVICES] = {  

[1] [2] [3]
關鍵字:android  camera  V4L2 引用地址:android camera(三):camera V4L2 FIMC

上一篇:《設備樹 — dtb到device node的轉換(三)》
下一篇:S5PV210 三個Camera Interface/CAMIF/FIMC的區別

推薦閱讀最新更新時間:2025-06-01 10:59

基于Camera Link接口的圖像跟蹤系統的設計與實現
  目前使用的圖像跟蹤系統前端輸入信號一般都是PAL制式的標準全電視信號,每20 ms一場,每40 ms一幀。模擬信號經過視頻解碼器轉換成720×576大小的數字信號后,再對其中的目標進行分割、識別和跟蹤,并準確計算出目標的位置角度偏差,并傳給伺服機構。   在某系統中要求能對3×3像素大小的小目標進行精確跟蹤,為了達到跟蹤精度,可以提高圖像輸入的幀頻和提高圖像輸入的分辨率,因此前端采用了DALSA公司的一款基于Camera Link接口的數字攝像機,該相機的幀頻為100 Hz,分辨率高達1 400×1 024。這樣幀處理時間就只有10 ms,考慮到系統的實時性,我們采用了TI公司的高性能的DSP芯片TMS320C6414和高性能F
[嵌入式]
如何使用8051微控制器和藍牙模塊構建一個Android手機控制的機器人
在這個項目中,我們將使用8051微控制器和模塊構建一個手機控制的。該機器人是使用直流設計的,直流電機的方向將由從安卓應用程序收到的命令控制。機器人的狀態被發送回安卓應用程序。該項目還將幫助HC-05藍牙模塊與8051微控制器的接口. 所需組件: 8051 微控制器 (AT89S52) HC-05 藍牙模塊 L293D 機器人底盤 直流電機 (2) 輪子 (2) 腳輪 跳線 藍牙終端安卓應用 電路圖: ? 8051 微控制器: 8051微控制器是一種8位微控制器,具有128字節的片上,4K字節的片上
[機器人]
消息稱 Android 13 將原生支持單芯片開通多張 eSIM 卡
傳統手機使用稱為 SIM 卡的物理卡連接到蜂窩網絡,目前正在推進的 eSIM 數字卡進展并不快,一部分原因是安卓并沒有進行很好的支持。根據 Esper 的最新報告,谷歌可能會在 Android 13 中發力 eSIM,推動該技術的普及。 Esper 報告稱,Android 13 的代碼庫包含谷歌在 2020 年提交的一項專利,該專利允許在單個嵌入式芯片上使用多個 SIM 配置文件。 從專利描述來看,其通過將調制解調器和 eSIM 芯片之間的單個物理數據總線拆分為多個邏輯接口來實現,這些邏輯接口在單個物理接口上復用。聽起來有點像現代 CPU 將物理 CPU 內核拆分為邏輯 CPU 內核,從而同時執行更多任務。 與
[手機便攜]
消息稱 <font color='red'>Android</font> 13 將原生支持單芯片開通多張 eSIM 卡
王騰暗示小米超大杯已經在路上:安卓之光要降臨
1月19日消息,小米公司河南省分公司總經理王騰與網友互動時暗示,小米今年還有一款超大杯旗艦已在路上。   從小米10系列開始,小米每年都會推出超大杯旗艦,像小米10至尊紀念版、小米11 Ultra等,其中小米11 Ultra一經推出就引發極高的關注度,該機曾一度霸榜DXOMARK,被稱之為“安卓之光”。   按照慣例,今年小米還將會發布超大杯旗艦。之前博主@數碼閑聊站爆料,小米今年會牽手徠卡,雙方合作打造手機影像系統。   由此猜測,小米超大杯旗艦可能會首發小米和徠卡合作打造的影像系統,有了徠卡的支持,再配合小米優秀的影像實力,小米新旗艦霸榜DXOMARK幾乎沒有什么難度。
[手機便攜]
小米12!一項關鍵參數與安卓之光平起平坐了
今天,博主@數碼閑聊站爆料,小米12的電池容量為4500mAh,支持67W快充。   與定位安卓之光的小米11 Ultra對比,小米12的快充功率與小米11 Ultra一致,但是它的電池容量要小(小米11 Ultra電池容量為5000mAh)。官方實測數據顯示,小米11 Ultra 67W快充充滿5000mAh電池需要36分鐘,預計小米12充滿可能需要30分鐘左右。   值得注意的是,這次發布會小米還將會發布小米12X和小米12 Pro,前者和小米12一樣支持67W有線快充,后者支持120W超級快充,與小米MIX 4快充規格一致。   規格方面,小米12X搭載高通驍龍870旗艦處理器,臺積電7nm工藝制程,安兔兔跑分在70萬
[手機便攜]
安卓統一推送聯盟新增了5個品牌,大廠聚齊
安卓統一推送聯盟今天宣布,近日已收到華為技術有限公司、廣東歐珀移動通信有限公司、深圳市萬普拉斯科技有限公司、深圳市銳爾覓移動通信有限公司四家公司的的進度確認,均已經按照聯盟標準《T-UPA0002-2019統一推送接口層規范》最新版本,完成了開發工作。 聯系之前已經加入的品牌,現在處于這個聯盟里的成員共有華為、榮耀、OPPO、realme、一加等五個品牌的手機了。 華為、榮耀將首先在EMUI 10正式版中支持統一推送,華為和榮耀新發布的機型將全部支持,現有機型也會陸續更新支持。 OPPO的ColorOS將會在3.0以上版本支持統一推送,并持續適配更多機型,預計在年底的時候可覆蓋ColorOS系統的93%,realme因為目前使
[手機便攜]
<font color='red'>安卓</font>統一推送聯盟新增了5個品牌,大廠聚齊
法媒:鴻蒙有望成安卓終結者,甚至改變硅谷
據參考消息網8月14日報道,法媒稱,憑借其新移動操作系統鴻蒙操作系統,中國電信巨頭華為開啟了一條與美國技術戰的新戰線,在一個很特殊、但利潤極為豐厚的市場上與安卓系統正面競爭。 據法新社8月12日報道,智能手機操作系統市場目前完全被兩家美國賣主壟斷。一方是蘋果公司,其操作系統為其蘋果手機獨有;另外一方就是谷歌,其安卓系統是包括華為在內的幾乎所有蘋果公司的競爭對手的手機在使用。 IHS馬基特公司移動工業研究執行主任斯特凡納·特拉爾強調指出,中國“是一個世界級的研發大國”。他說,“當華為2011年投身用戶市場時,就有人持懷疑態度,可是他們非同尋常地發展壯大起來,他們能夠讓市場接受第三種操作系統”。 報道稱,其他公司曾嘗試過推出第三種
[手機便攜]
三星Galaxy A40:搭載Exynos 7885,預裝安卓9
據PhoneArena消息,三星新一代A系列中端智能手機的一員最近現身了,那就是Galaxy A40。之前曾曝光過的Galaxy A系列手機是A50,據稱其搭載4000 mAh的大容量電池。   三星A40手機的跑分信息最近在Geekbench上曝光了。曝光信息顯示,該機搭載三星Exynos 7885芯片組,配備4GB內存,預裝安卓9 Pie系統。這款手機單核跑分達到了1319分、多核跑分3976分。   根據報道,三星計劃在歐洲多地市場推出Galaxy A40手機,如英國、法國、德國、波蘭、荷蘭和一些北歐國家等。   先前,三星印度官網公布了三星另一個系列,“Galaxy M”系列的發布會時間——將是1月
[手機便攜]
三星Galaxy A40:搭載Exynos 7885,預裝<font color='red'>安卓</font>9
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 英超| 安远县| 上林县| 旌德县| 达拉特旗| 岳阳市| 宣恩县| 洪泽县| 台山市| 轮台县| 东平县| 和田县| 仁化县| 府谷县| 遂平县| 兴仁县| 双江| 满城县| 五河县| 广州市| 阿合奇县| 灵丘县| 孙吴县| 亳州市| 广汉市| 昌都县| 盐源县| 岫岩| 西盟| 塔城市| 永胜县| 日喀则市| 西充县| 稻城县| 腾冲县| 昌宁县| 遂川县| 鄄城县| 安远县| 宿迁市| 东台市|