NXP

ADAS系列-s32v234的图像数据流

2019-07-12 11:29发布

1.摄像头介绍

   摄像头是ADAS核心传感器,摄像头常见的结构如下图1所示,主要包括镜头,基座,传感器以及PCB部分。                                                                        图 1
  • CMOS Sensor部分
       对于现在来说,sensor主要分为两类,一类是cmos,一类是CCD。cmos是现在的趋势,对于镜头来讲,一个镜头只能适用于一种传感器,且一般镜头的尺寸应该和sensor的尺寸一致。对于sensor来说,现在依然延续着Bayer阵列的适用,如下图2所示。图3展示了其工作流程。                                                                              图 2                                                                         图 3

2.ISP部分介绍

       ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正,噪声去除,坏点去除,内插,白平衡,自动曝光控制等。依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像头的成像质量。可以分为独立与集成两种形式。如下图4所示是整体框图:                                                                              图 4               ISP的Firmware包含三部分,一部分是ISP控制单元和基础算法库,一部分是AE/AWB/AF算法库,一部分是sensor库。Firmware设计的基本思想是单独提供3A算法库,由ISP控制单元调度基础算法库和3A算法库,由ISP控制单元调度基础算法库和3A算法库,同时sensor库分别向ISP基础算法库和3A算法库注册函数回调,以实现差异化的sensor适配。ISPfirmware架构如下图5所示:                                                                             图 5        不同的sensor都以回调函数的形式,向ISP算法库注册控制函数。ISP控制单元调度基础算法库和3A算法库时,将通过这些回调函数获取初始化参数,并控制sensor,如调节曝光时间,模拟增益,数字增益,控制lens步进聚焦或旋转光圈等。         一般,ISP分为内置和外置二种,nxp的s32v234芯片内置ISP处理模块。

3.s32v234的整体图像数据流框图

4.camera驱动

     s32v234采用mipicsi(串行)或viu(并行)接口,使用i2c总线进行配置。camera的驱动程序软件有3层(见图6).第一层在内核空间中运行,实现所需的最小i2c的设备交互。     第二层是作为底层内核驱动程序API的用户空间抽象层,在第二层上实现一个特定的传感器设备代码。第三层完成大多数驱动程序功能。第二层和第三层一起称为通用camera用户库。    目前,s32v234的camera用户库支持一下传感器:
  • Sony IMX224MQV( MipiCsi-2)
  • Omnivision Ov10640 (VIU/MipiCsi-2)
  • Omnivision Ov10635(VIU)
  • Maxim Serializer/Deserializer HW setup with 4 OV10640 cameras

                                             图 6

5.FastDMA

        FDMA是s32v234SOC旨在实现vision ADAS应用而设计的。图像处理需要高带宽数据传输和大内存区域用于数据处理和存储。为了实现这点,正在处理的数据是分布在两个不同的内存块之间。
  • SRAM具有高速访问,但内存空间有限(4MB)仅允许立即要存储的输入/输出数据(最多几个图像行)
  • DDR是带宽低,大内存空间存储一系列完整图像帧
         为了有效的使用设置,数据必须在SRAM和DDR之间保持恒定的流量。这个fdma是专门为完成实际数据传输而设计的,为减少主机cpu和sequencer之间的负载消耗。图7显示了fdma相关的交互。sequencer具有重要作用。sequencer专门用于图像数据预处理的管理,除其功能外,sequencer还能够调度fdma transactions和接受事务完成信号。                                                                    图 7

6.SDI(Sensor Data Interface)

       传感器设备接口(SDI)是用于控制图像数据输入的运行时库,SDI被设计为作为s32v234soc内部的抽象处理图像信号预处理(isp)系统。ISP支持各种接口和其他hw块(一般为ISP引擎)作为图像传感器数据。
  • 输入:Mipi-Csi2,Viu,Ethernet,FDMA
  • 预处理:标量/矢量图像处理单元(IPU),H264解码器,Jpeg解码器,视觉加速器
  • 输出:H264编码器,Ethernet,FMDA
        为了实现预处理,设计了唯一的静态RAM(sram)块。为了减少主机cpu加载ISP子系统,包括了ArmM0的视觉加速块(主负责基于行处理),主要处理来自各种事件。由于这些特性,ISP提供了非常低的延时,高度可编程。        上图描述了SDI的功能,SDI功能设计主要覆盖了以下内容:
  • HW资源分配(ISP,SRMA/DDR存储)
  • 数据预处理的流水线配置
       SDI库旨在创建API的中间层用于用户应用程序。为了控制各种HW,SDI使用由驱动程序提供的API。为了最小化OS代码依赖性,SDI利用来自OAL(操作系统层)抽象层,主要包括SRAM和DDR分配。OAL是内核模块,用于连续物理内存分配。        SDI的初始化: