camera驅動開發html
1)另外注意,在imx6平臺中,4.1.15kernel版本的代碼,mxc的mxc_v4l2_capture.c camera主控制器和ov5642.c的sensor驅動之間,經過v4l2-int-device.h和v4l2-int-device.c中的master和slave註冊attach鏈接的方式來關聯,關聯後,master(camera isp主控制器)經過ioctl來控制slave(sensor)。master和slave只有struct v4l2_int_ioctl_dest的ioctl的交互,這些交互包括init、power控制、g_fmt_cap、g_s_parm、g_ctrl等等。slave sensor驅動也僅僅是實現這些ioctl功能便可。
2)然而高通平臺和mtk平臺並無使用v4l2-int-device.c的方式和sensor驅動通訊。高通平臺的msm isp以v4l2_subdev的形式出現,參見msm_isp.c公共文件和具體的msm_isp47.c版本。高通的msm_sensor.c以subdev的形式出現(見msm_sd_register()),而後各個具體的camera sensor則是以msm_sensor_platform_probe(struct platform_device, const void data),其實data是struct msm_sensor_ctrl_t類型來傳入個msm_sensor.c做爲回調。
3)mtk平臺目前沒有看到他是否使用了v4l2的框架。
雖然每一個平臺的接口有區別,要求你提供的驅動代碼框架有必定區別,可是能夠從平臺中找個參考的驅動去實現。例如攝像頭ov5640驅動,例如imx6的drivers/media/platform/mxc/capture/ov5640.c或者ov5640_mipi.c。例如參考ov5640_mipi.c來實現pr2000k_mipi.c驅動。
另外:一個視頻捕獲驅動對進入的視頻流有兩種工做模式: Preview模式(非overlay模式)和overlay模式。 別的地方叫法不一樣。overlay模式可能叫preview模式。linux
具體請參考個人免費的linux各類驅動開發課程以下:
https://edu.51cto.com/course/17138.html框架
另外個人相關培訓視頻請看:
歡迎觀看我發佈的各個課程: https://edu.51cto.com/lecturer/8896847.htmlide