IPU概述

IPU概述

(一)框架

首先来看看imx6q整体系统框架图,看看IPU位于整个SOC系统中的位置:

可以看出来,整个IPU挂接在AXIAHB总线上面,通过总线,它可以与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子系统驱动

(三) 分析步骤

从以下几点分析这个驱动:

  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
9. dts文件分析—以ov5640为例,修改dts文件使ov5640使用第二个IPU
10. 对ipu_init_channel的理解,为以后添加channel做准备
11. ov5640_mipi.c分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值