色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux內核之Camera驅動分析

冬至配餃子 ? 來源:嵌入式軟件開發交流 ? 作者:young ? 2022-08-07 16:08 ? 次閱讀

Camera驅動分析

Linux版本:4.19

Sensor: OV13850

(1)裝載和卸載函數

//DTS匹配表
static const struct of_device_id ov13850_of_match[] = {
{.compatible = "omnivision,ov13850-v4l2-i2c-subdev"},
{},
};

MODULE_DEVICE_TABLE(i2c, ov13850_id);

static struct i2c_driver ov13850_i2c_driver = {
.driver = {
.name = ov13850_DRIVER_NAME,
.owner = THIS_MODULE,
.of_match_table = ov13850_of_match
},
.probe = ov13850_probe,
.remove = ov13850_remove,
.id_table = ov13850_id,
};

module_i2c_driver(ov13850_i2c_driver);
OV13850是使用I2C接口進行控制,所以使用i2c_driver進行注冊。

(2)probe()

static int ov13850_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
dev_info(&client->dev, "probing...\n");

ov13850_filltimings(&ov13850_custom_config); //填充時序信息
v4l2_i2c_subdev_init(&ov13850.sd, client, &ov13850_camera_module_ops); //初始化v4l2_subdev
ov13850.sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
ov13850.custom = ov13850_custom_config;

mutex_init(&ov13850.lock);
dev_info(&client->dev, "probing successful\n");
return 0;
}
上面主要是根據全局變量ov13850_custom_config中的信息填充時序信息。然后初始化v4l2_subdev, ov13850是I2C接口,所以使用v4l2_i2c_subdev_init 進行初始化。v4l2_i2c_subdev_init就是對v4l2_subdev_init的封裝。

//v4l2_subdev_ops
static struct v4l2_subdev_ops ov13850_camera_module_ops = {
.core = &ov13850_camera_module_core_ops, //核心操作
.video = &ov13850_camera_module_video_ops, //video操作
.pad = &ov13850_camera_module_pad_ops
};

static struct ov_camera_module_custom_config ov13850_custom_config = {
.start_streaming = ov13850_start_streaming, //sensor開始輸出數據流
.stop_streaming = ov13850_stop_streaming, //sensor停止輸出數據流
.s_ctrl = ov13850_s_ctrl,
.s_ext_ctrls = ov13850_s_ext_ctrls, //sensor控制(設置自動曝光控制)
.g_ctrl = ov13850_g_ctrl,
.g_timings = ov13850_g_timings, //獲取sensor時序
.check_camera_id = ov13850_check_camera_id, //讀取Sensor ID
.s_vts = ov13850_auto_adjust_fps, //自動調節刷新率
.set_flip = ov13850_set_flip, //設置sensor鏡像
#ifdef OV13850_ONE_LANE
.configs = ov13850_onelane_configs, //單lane的配置信息(分辨率,刷新率等)
.num_configs = ARRAY_SIZE(ov13850_onelane_configs),

#else
.configs = ov13850_configs, //多lane的配置信息
.num_configs = ARRAY_SIZE(ov13850_configs),
#endif
.power_up_delays_ms = {5, 20, 0},
/*
*0: Exposure time valid fileds; 曝光時間
*1: Exposure gain valid fileds; 曝光增益
*(2 fileds == 1 frames)
*/
.exposure_valid_frame = {4, 4}
};
上面設置的回調基本都是去設置寄存器

(3)打開數據流

static int ov13850_start_streaming(struct ov_camera_module *cam_mod)
{
int ret = 0;

ov_camera_module_pr_debug(cam_mod,
"active config=%s\n", cam_mod->active_config->name);

ret = ov13850_g_VTS(cam_mod, &cam_mod->vts_min);
if (IS_ERR_VALUE(ret))
goto err;

mutex_lock(&cam_mod->lock);
ret = ov_camera_module_write_reg(cam_mod, 0x0100, 1); //寫0x0100寄存器, 選擇streaming模式 0:standby 1:streaming
mutex_unlock(&cam_mod->lock);
if (IS_ERR_VALUE(ret))
goto err;

msleep(25);

return 0;
err:
ov_camera_module_pr_err(cam_mod, "failed with error (%d)\n",
ret);
return ret;
}
主要就是操作寄存器,開啟數據流傳輸。其他的一些操作函數也基本類似。

總結

我們從上面的內容中可以看出,sensor端的驅動沒有特別復雜,主要是一些參數和控制相關的內容。sensor主要是生產數據,而數據的處理主要交給ISP。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11339

    瀏覽量

    210120
  • LINUX內核
    +關注

    關注

    1

    文章

    316

    瀏覽量

    21700
  • I2C接口
    +關注

    關注

    1

    文章

    125

    瀏覽量

    25303
  • OV13850
    +關注

    關注

    0

    文章

    2

    瀏覽量

    2341
收藏 人收藏

    評論

    相關推薦

    Linux編譯驅動內核及應用程序分析

    作為一名嵌入式Linux新手,在學習的過程中會遇到很多問題。寫了一個驅動程序怎么編譯?怎么加載進內核
    的頭像 發表于 01-17 13:46 ?6685次閱讀
    <b class='flag-5'>Linux</b>編譯<b class='flag-5'>驅動</b>、<b class='flag-5'>內核</b>及應用程序<b class='flag-5'>分析</b>

    Linux驅動分析input子系統

    Linux內核為了能夠處理各種不同類型的輸入設備,比如: 觸摸屏 ,鼠標 , 鍵盤 , 操縱桿等設備 ,設計并實現了Linux 輸入子系統 ,它為驅動和應用提供了統一的接口函數,方便實
    發表于 02-01 10:38 ?557次閱讀

    s3c2440 mmc和cameralinux驅動

    本站提供的s3c2440 mmc和cameralinux驅動資料,詳細講訴了s3c2440 mmc和cameralinux
    發表于 05-25 15:53 ?54次下載
    s3c2440 mmc和<b class='flag-5'>camera</b>的<b class='flag-5'>linux</b><b class='flag-5'>驅動</b>

    基于Linux內核輸入子系統的驅動研究

    Linux因其完全開放的特性和穩定優良的性能深受歡迎,當推出了內核輸入子系統后,更方便了嵌入式領域的驅動開放。介紹了Linux的設備驅動基礎
    發表于 09-12 16:38 ?23次下載

    linux內核啟動內核解壓過程分析

    linux啟動時內核解壓過程分析,一份不錯的文檔,深入了解內核必備
    發表于 03-09 13:39 ?1次下載

    linux2.6內核設備驅動模型精華

    linux 內核驅動部分詳解
    發表于 04-27 10:43 ?20次下載

    基于Linux 2.6內核Makefile分析

    基于2.4內核的,可以說關于2.6內核Makefile相關的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對
    發表于 09-18 19:09 ?0次下載
    基于<b class='flag-5'>Linux</b> 2.6<b class='flag-5'>內核</b>Makefile<b class='flag-5'>分析</b>

    Linux內核輸入子系統的驅動研究

    Linux內核輸入子系統的驅動研究
    發表于 10-31 14:41 ?14次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>輸入子系統的<b class='flag-5'>驅動</b>研究

    關于Linux 2.6內核Makefile的分析

    的介紹文章都是基于2.4內核的,可以說關于2.6內核Makefile相關的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對
    發表于 11-02 10:12 ?1次下載

    Embeded linuxsoc camera

    soc_camera_device_init(&icd->dev, icl);//設置soc_came_device對應device的bus為soc_camera_bus_type,這樣當我們注冊設備時,就會調用soc_camera
    發表于 05-15 13:49 ?1541次閱讀

    如何使用Linux內核實現USB驅動程序框架

    Linux內核提供了完整的USB驅動程序框架。USB總線采用樹形結構,在一條總線上只能有唯一的主機設備。 Linux內核從主機和設備兩個角度
    發表于 11-06 17:59 ?20次下載
    如何使用<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>實現USB<b class='flag-5'>驅動</b>程序框架

    Linux內核ISP驅動流程分析

    應用層就是通過訪問video_device生成的節點來進行操作Camera,所以video_device注冊時指定了很多ioctl函數。
    的頭像 發表于 08-07 16:13 ?5950次閱讀

    Linux內核SoftIrq源代碼分析

    我們在分析linux內核中斷剖析時,簡單的聊了一下SOFTIRQ, 而沒有進行深入分析. Linux內核
    發表于 06-23 15:22 ?624次閱讀

    Linux內核代碼60%都是驅動

    為什么Linux內核代碼60%都是驅動? 如果每支持新的設備就加入驅動內核會不會變得越來越臃腫?
    的頭像 發表于 07-11 11:48 ?1022次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>代碼60%都是<b class='flag-5'>驅動</b>?

    linux驅動程序如何加載進內核

    Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫
    的頭像 發表于 08-30 15:02 ?558次閱讀
    主站蜘蛛池模板: ewp绞死vk失禁编| 大桥未久电影在线观看| 大陆老熟女60岁| 欧美性视频xxxxhd| 717影院理论午夜伦不卡久久| 久久精品国产亚洲精品2020| 亚洲伊人久久综合影院2021| 极品少妇伦理一区二区| 亚洲综合免费视频| 精品人妻伦九区久久AAA片69| 亚洲综合中文字幕无线码| 久久国产精品自线拍免费| 永久免费在线看mv| 久久婷五月综合色啪网| 2020国产成人精品免费视频| 蜜桃传媒视频| 扒开美女嫩bbb| 色婷婷AV99XX| 国产亚洲福利在线视频| 亚洲综合网国产精品一区| 狼与美女谐音歌词| gogogo免费视频观看| 肉动漫h黄动漫日本免费观看| 国产精品无码AV天天爽人妻蜜桃| 亚洲精品福利一区二区在线观看| 久久久久久久久久综合情日本| 97精品国产高清在线看入口| 日韩欧美国产免费看清风阁| 国产嫩草影院精品免费网址| 一区二区三区内射美女毛片| 牛牛精品专区在线| 国产成人精品综合在线| 亚洲人成人毛片无遮挡| 美女胸禁止18以下看| 大桥未久电影在线观看| 亚洲粉嫩美白在线| 男生J桶进女人P又色又爽又黄| 动漫美女无衣| 亚洲永久免费视频| 免费人成视频X8X8国产更快乐 | 欧美人与动牲交XXXXBBBB免费|