91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中攝像頭驅動編寫的示例分析

發布時間:2021-07-14 11:01:08 來源:億速云 閱讀:185 作者:小新 欄目:服務器

這篇文章主要為大家展示了“linux中攝像頭驅動編寫的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“linux中攝像頭驅動編寫的示例分析”這篇文章吧。

對于現代嵌入式設備,特別是手機來說,攝像頭是很重要的一個設備。很多同學買手機,一看顏值,第二就看攝像頭拍照如何。所以,從某個角度來說,攝像頭是各個廠家主打的應用功能。那么,linux是如何支持攝像頭的?

1、代碼目錄地址

drivers/media

2、v4l2框架

目前linux上的camera都是按照v4l2框架來設計,它的地址位于drivers/media/v4l2-core

3、查看三星soc是如何支持camera的,可以查看drviers/media/platform/Kconfig

config VIDEO_S3C_CAMIF 
  tristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver" 
  depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API 
  depends on PM 
  depends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TEST 
  depends on HAS_DMA 
  select VIDEOBUF2_DMA_CONTIG 
  ---help--- 
   This is a v4l2 driver for s3c24xx and s3c64xx SoC series camera 
   host interface (CAMIF). 
 
   To compile this driver as a module, choose M here: the module 
   will be called s3c-camif.

4、從Kconfig確認除了VIDEO_V4L2和VIDEO_V4L2_SUBDEV_API之外,它只依賴自己的目錄

obj-$(CONFIG_VIDEO_S3C_CAMIF)    += s3c-camif/

5、繼續查看s3c-camif目錄的代碼結構

# Makefile for s3c244x/s3c64xx CAMIF driver 
 
s3c-camif-objs := camif-core.o camif-capture.o camif-regs.o 
 
obj-$(CONFIG_VIDEO_S3C_CAMIF) += s3c-camif.o

6、Makefile說的很清楚,它主要依賴camif-*.c三個文件

通過閱讀,確認camif-core.c是注冊文件

camif-regs.c是寄存器讀寫文件

camif-capture.c是主要的操作文件、接口文件

7、確認v4l2的函數操作接口

static const struct v4l2_ioctl_ops s3c_camif_ioctl_ops = { 
  .vidioc_querycap   = s3c_camif_vidioc_querycap, 
  .vidioc_enum_input  = s3c_camif_vidioc_enum_input, 
  .vidioc_g_input    = s3c_camif_vidioc_g_input, 
  .vidioc_s_input    = s3c_camif_vidioc_s_input, 
  .vidioc_enum_fmt_vid_cap = s3c_camif_vidioc_enum_fmt, 
  .vidioc_try_fmt_vid_cap  = s3c_camif_vidioc_try_fmt, 
  .vidioc_s_fmt_vid_cap   = s3c_camif_vidioc_s_fmt, 
  .vidioc_g_fmt_vid_cap   = s3c_camif_vidioc_g_fmt, 
  .vidioc_g_selection  = s3c_camif_g_selection, 
  .vidioc_s_selection  = s3c_camif_s_selection, 
  .vidioc_reqbufs    = s3c_camif_reqbufs, 
  .vidioc_querybuf   = s3c_camif_querybuf, 
  .vidioc_prepare_buf  = s3c_camif_prepare_buf, 
  .vidioc_create_bufs  = s3c_camif_create_bufs, 
  .vidioc_qbuf     = s3c_camif_qbuf, 
  .vidioc_dqbuf     = s3c_camif_dqbuf, 
  .vidioc_streamon   = s3c_camif_streamon, 
  .vidioc_streamoff   = s3c_camif_streamoff, 
  .vidioc_subscribe_event  = v4l2_ctrl_subscribe_event, 
  .vidioc_unsubscribe_event = v4l2_event_unsubscribe, 
  .vidioc_log_status  = v4l2_ctrl_log_status, 
};

and

649 static const struct v4l2_file_operations s3c_camif_fops = { 
650     .owner     = THIS_MODULE, 
651     .open      = s3c_camif_open, 
652     .release    = s3c_camif_close, 
653     .poll      = s3c_camif_poll, 
654     .unlocked_ioctl = video_ioctl2, 
655     .mmap      = s3c_camif_mmap, 
656 };

8、和sd一樣,接口比較簡單,但是要深入了解camera,v4l2是繞不過去的。

這一點和sd卡、usb、asoc是一樣的。

以上是“linux中攝像頭驅動編寫的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金昌市| 漾濞| 东阳市| 潮安县| 湟中县| 三台县| 广东省| 酉阳| 嘉兴市| 鸡泽县| 贞丰县| 诸暨市| 吴川市| 汉源县| 东至县| 和政县| 布尔津县| 瑞安市| 二连浩特市| 铜山县| 新邵县| 沾益县| 古蔺县| 神农架林区| 兴仁县| 田阳县| 乐业县| 恩平市| 嘉荫县| 景宁| 富宁县| 繁昌县| 甘孜| 松原市| 襄垣县| 镇安县| 荣成市| 广灵县| 大新县| 陕西省| 东阿县|