二)代码框架文件
内核版本:3.14.52
文件主要集中在:
.../drivers/mxc/ipu3/ 描述
ipu_device.c IPU tasks的操作等(IPU core driver)
ipu_common.c 底层的核心函数
ipu_capture.c 为ipu_common.c提供函数操作
ipu_disp.c IPU显示
ipu_ic.c IC的操作函数
ipu_param_mem.h CPMEM设置的头文件,操作函数
.../drivers/mxc/mipi/
mxc_mipi_csi2.c mipi摄像头的操作函数
.../drivers/media/platform/mxc/
capture/mxc_v4l2_capture.c 为应用程序提供open,ioctl等操作函数
capture/v4l2-int-device.c 子系统模块注册等操作函数
capture/ipu_prp_enc.c Pre-processing encoder驱动函数
capture/ipu_csi_enc.c CSI设备驱动操作函数
capture/ipu_still.c 静态图片捕获函数
capture/ipu_prp_vf_adc.c Pre-processing view finder (asynchronous)driver
capture/ipu_prp_vf_sdc.c Pre-processing view finder (synchronous foreground) driver
capture/ipu_fg_overlay_adc.c 前背景overlay异步驱动
capture/ipu_bg_overlay_sdb.c 后背景overlay同步驱动
capture/ov5640.c ov5640_mipi.c ov5640.c子系统驱动
(三) 分析步骤
从以下几点分析这个驱动:
1. 概述
2. master和slave的匹配过程
3. mxc_v4l2_capture.c分析
3.1 probe函数分析
3.2 vidioc_int_* 类函数的调用过程
3.3 应用程序中函数调用的底层执行流程
3.4 mxc_v4l_open函数分析
3.5 cam_data结构体详解
3.6 mxc_v4l_ioctl函数分析
3.7 ioctl函数中case的详细分析
3.8 poll函数的详细分析
4. ipu_common.c的分析
4.0 ipu_soc,ipu_channel_t ,ipu_channel_params_t结构体详解
4.1 ipu_common.c分析---入口函数及probe函数分析
4.2 ipu_common.c分析---ipu_init_channel函数的详细分析
4.3 ipu_common.c分析---ipu_init_channel_buffer函数的详细分析
4.4 ipu_param_mem.h头文件分析
4.5 ipu_request_irq函数详细分析
4.6 ipu_enable_channel函数详细分析
4.7 ipu_capture.c分析
5. 举例说明,通过mxc_v4l2_capture.c应用程序中的调用过程来一步一步分析
5.1 mxc_v4l2_capture.c应用程序追踪分析
5.2 应用程序和驱动程序中buffer的传输流程
6. 子系统的分析
6.1 ipu_prp_enc.c详细分析
6.2 ipu_csi_enc.c详细分析
6.3 ipu_still.c详细分析
6.4 ipu_ic.c详细分析
7. ipu_device.c的分析
7.1 ipu_device.c分析(一)---流程分析
7.2 ipu_device.c分析(二)---具体函数分析
8. 各个模块的分析
8.1 子模块分析之IDMAC
8.2 子模块分析之CSI
8.3 子模块分析之SMFC
8.4 子模块分析之IC
8.5 子模块分析之VDIC
8.6 子模块分析之CM
10. 对ipu_init_channel的理解,为以后添加channel做准备
11. ov5640_mipi.c分析
具体分析:http://blog.csdn.net/yanbixing123/article/details/52291177