IPU概述
(一)框架
首先来看看imx6q
整体系统框架图,看看IPU位于整个SOC
系统中的位置:
可以看出来,整个IPU挂接在AXI
与AHB
总线上面,通过总线,它可以与ARM,VPU,GPU和RAM等模块通信。
另外,每个IPU有两个camera接口,如下所示:
通过LDB控制到LVDS屏,直接控制LCD屏,并且可以通过HDMI或者MIPI来显示。
对于IPU的作用,在下面的图表中解释了:
或者用下图来表示更清楚:
以上是IPU的整体框架部分,对于BSP来说,我们比较关心它的驱动层次框架,如下所示:
从这个框架中可以看出来,对于一般的V4L2子系统,会通过IPU来与硬件通信。
图中各个模块的作用:
(二)代码框架文件
内核版本: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子系统驱动
(三) 分析步骤
从以下几点分析这个驱动:
- 概述
- master和slave的匹配过程
- 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函数的详细分析 - 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分析 - 举例说明,通过mxc_v4l2_capture.c应用程序中的调用过程来一步一步分析
5.1 mxc_v4l2_capture.c应用程序追踪分析
5.2 应用程序和驱动程序中buffer的传输流程 - 子系统的分析
6.1 ipu_prp_enc.c详细分析
6.2 ipu_csi_enc.c详细分析
6.3 ipu_still.c详细分析
6.4 ipu_ic.c详细分析 - ipu_device.c的分析
7.1 ipu_device.c分析(一)—流程分析
7.2 ipu_device.c分析(二)—具体函数分析 - 各个模块的分析
8.1 子模块分析之IDMAC
8.2 子模块分析之CSI
8.3 子模块分析之SMFC
8.4 子模块分析之IC
8.5 子模块分析之VDIC
8.6 子模块分析之CM
9. dts文件分析—以ov5640为例,修改dts文件使ov5640使用第二个IPU
10. 对ipu_init_channel的理解,为以后添加channel做准备
11. ov5640_mipi.c分析