专栏算法工具链J5系统软件FAQ - J5 视频开发指导

J5系统软件FAQ - J5 视频开发指导

automan2022-09-26
561
2

视频开发指导FAQ


FAQ001:常见问题


问: 所有硬件直连还是多路模式使用,对用户说就是配置文件的问题,对用户来说是不是都是一样的?

答: 是的,对用户来说每路对应配置好配置文件即可,不需要关心内部实现,用户一般只需要关心最终数据获取。


问: 代码哪部分是开源的还是哪部分是开源的?

答:商务问题,请跟对应接口人对接。


问: 通路上latency 数据有么,大概是什么范围 ?

答:



问:通路上多个Sensor 多格式多尺寸,都能支持么?

答:能支持,同一个RX上支持RAW,YUV格式混用,尺寸也可以不同。


问:VIO 多进程共享的概念,是在什么使用场景下会用,为了解决一个什么样的问题?

答:针对多个用户想使用同一路硬件数据(例如同时做算法处理以及编码),如果不使用共享方式则只能由一个用户拿到。


问:图像处理,数据流从bpu转到cpu,相关接口能否介绍下

答:这个有相关的基础接口手册《J5平台AUTO媒体系统接口手册》。


问:关联场景描述
(结合典型的USE CASE 用例, 讲解一下软件处理的数据流和控制流。比如一个8MP FRONT WIDE CAMERA 接入进来了, 视频数据的处理流程, 直到输出到感知融合 和上层预测规划控制模块的整个流程)

答:视频处理的数据流会在VPS介绍中包括,感知与预测规划属于AUTO业务流程,系统软件不覆盖该部分。

问:Codec 编解码现在的数据是怎么跟目前的通路数据串联 ?

答:一般是从PYM模块输出的某层作为Codec的数据源作为编码处理,Code 部分目前的状态
方式1:用户使用vio的相关接口直接获取pym的数据,再通过media codec的接口进行编码;

方式2:用户使用media recorder接口配置recorder的输入源,比如pym,则由recorder内部自动调用vio接口获取pym数据。



问:多路摄像头的使用case 有么? 比如串联BPU处理以及Codec功能(265编码)的多路示例(7路 OR 8路)。

答:有的,详细信息可以通过接口人获取。

FAQ002: 功能特性

: 自带isp的yuv的相机,能直接用stitch拼接或者直接gdc?

:可以使用,支持格式一般是yuv420sp。

问:rx0 和rx1 yuv 直连pym,pym能拿到原始分辨率的数据吗?

答:通过PYM取YUV原(原始分辨率)图是可以的,但取的数据是YUV420SP的,pym最大尺寸3840x2160。

FAQ003: 性能规格

问: 最多能同时处理多大数据带宽?(多少路摄像头,多少像素,fps)

答:场景支持的最大通路能力,4X4K(3840x2160)@30fps 或者16X2M(1920x1080p)@30fps, 项目中实际能达到的帧率需要参考整体SOC的整体带宽压力。


FAQ004: 异常处理

问: 应用运行时相机数据流会卡顿或者断流的异常情况有监控或者诊断手段么?

答:目前数据流的内部丢帧会向诊断子系统发送对应的代码错误号,如果存在连续丢帧,超过一定超时后可在接口层面感知。



MIPI开发指导FAQ


FAQ001: 功能特性


问:MIPI RX2/RX3 只支持 CIM DMA,RX0/RX1 只支持 CIM?

:是的,硬件设计固定。


问:MIPI RX 数据crc校验出错时,是如何处理和恢复的? crc校验功能可以disable吗?

:RX数据crc报错目前未做特别处理,只报错,若外部数据状态恢复正常,理论上会自动恢复。crc校验功能不能disable。


问:MIPI 跟 CIM 异常处理异常中断,是有哪个核来处理,有独立的核做这些事情么,是怎么考虑的?

:目前处理都是在A55 核上做的,相关的错误诊断会有跟单独Mcore的交互。设计的考虑是结合硬件资源以及处理能力来考虑,并不是单独放到一个核就能解决所有问题,同时也会带来软硬件设计上的复杂度的提升。

问: SerDes都可以检测是否有数据?Ser可以检测是否拿到了sensor的数据,Des可以检测是否拿到了Ser的数据?

答:是的,SerDes一般都有相应的寄存器用于确认是否有收到数据,Ser可检测Sensor的MIPI输出,Des可检测Ser上的传输状态。

对于MAXIM的SerDes,其寄存器位命名一般为PCLKDET/VID_LOCK/VIDEO_LOCK,如: MAX9295A为0x102类,MAX9296A为0x108/0x1DC类;


FAQ002: 异常处理

问: mipi接口抓取相机数据流时出错,都有相关的错误的错误码么?

:MIPI接口的错误检测有时序检测与协议检测。其中初始化时Check STOP状态与开流时Check HS状态是对不同阶段MIPI状态要求的时序检查,可以直接反馈在API调用返回的错误码。协议检测则为在满足时序要求后,硬件对MIPI协议进行错误检测,并在中断中报出错误,此类错误有具体的错误信息,但由于不在API流程内无相关的错误码。

问: mipi协议报错有手段么?

:MIPI协调报错会有中断产生,同时驱动会打印对应的错误log信息(dmesg可查看),其中包括有phy层报错(phy/phy_fatal),协议层报错(bndry_frm_fatal/pld_crc_fatal/seq_frm_fatal/pkt_fatal等),应用连接层(ipi/ipi2/ipi3/ipi4等,打印信息中有具体的错误状态寄存器,具体可参考芯片手册。

针对不同层的报错相应的排查方向指导,可参考Seneor接入调试手册。


问:驱动里面对mipi hs reception check那里 error log 能不能加多点指向性的提示?

:目前MIPI驱动中对该错误的提示为硬件状态的指示,但实际引起该类错误的原因可能有多种,驱动本身也无法直接定位与指示错误原因。该类错误的分析方向在"典型错误"(J5 视频开发指导培训 -- Camera Sensor & MIPI)中有具体指导供参考。

FAQ003: 基本概念

问:J5的IPI是类似csi-2 的一种协议接口?

:IPI不是类似CSI-2的一种协议,是J5芯片内部MIPI与CIM/CIMDMA模块数据传输的硬件通路,全称为Image Pixel Interface,一般1路Sensor数据(对应MIPI的1个VC)使用1路IPI进行内部传输。


CIM开发指导FAQ


FAQ001: 功能特性


问:CIM DMA 用户场景是什么?

答:跟CIM的场景用法类似的,下到DDR也可以给ISP处理,形成数据流处理;同时如果需要获取Sensor RAW数据可以在CIM DMA这个部分获取。


问: CIM DMA输出到isp的场景可以同时获取CIM DMA输出的raw数据吗?

答:目前不支持,数据只能被一个用户使用。


问:CIM DMA能连到ISP么,前面提到数据只能下到DDR ?

答:CIM DMA下到DDR 的数据,可以送给ISP处理,前面也提到了ISP可以支持BUF输入的方式进行处理,CIM DMA 跟 ISP的数据交互就是通过ISP的这个方式支持的。并且CIM DMA输出的BUF就是送给ISP处理的BUF,不存在内存拷贝的动作。



问: Embdata是否能支持?

答: embdata的数据可以支持接入,但只能从CIM DMA端下到DDR的方式获取。

FAQ002:配置、移植相关

问:使用CIMDMA时PYM中的pym_hw_id与pym_mode的作用,为何pym_hw_id由2改成1也可工作?

答:pym_hw_id是选该pipeline所用的pym硬件,有0/1/2,CIM能用PYM0/1,CIMDMA可用PYM0/1/2,并不是CIMDMA只能用PYM2。 pym_mode是PYM具体工作模式,可参考VPS配置说明文档


问:CIMDMA配置中pack_mode为何会导致报错不能接入?

答:pack_mode用于配置数据为是否pack方式存储,对于CIMDMA会影响其申请及配置的buffer size,若配置错误会导致实际接收下到DDR的数据与buffer size不匹配,导致ipi overflow等MIPI及CIM报错。



PYM开发指导FAQ


FAQ001: 功能特性


问: pym的各种功能都可以并行工作吗?(线性、高斯、upscaller、roi、downscaller这些功能都可以并行工作?)

可以,可以同时输出。


问: 金字塔分好多层,这个分层主要是为了什么,设计的目的 ?

金字塔的分层输出为了算法处理多图像需求设计的。


问: 金字塔输出为什么区分双线性以及高斯图层,有什么区分?

:本身这两个方式是硬件内部采样方式的不同;对应到用户层面,算法处理时对于该类多图像的高频需求,高斯层数据推荐给光流使用,双线性层数据推荐给BPU使用。


问: PYM配置字段里有几个类似行blank参数,在范围内都是可以调整的么?

答:的,是硬件内部的调整参数,如无问题,建议使用默认值。

FAQ002: 工作原理

问:金字塔工作原理,ROI.BL等各模块可以详细介绍下么?

答:金字塔模块主要输出原图层,UpScale层,DownScale层(DS层可以指定原图或者BL/GS等其中一层作为一个处理源层,ROI层是指在DS层最终输出的时候还可以在缩小的图像上,设置ROI区域进行裁剪输出),双线性金字塔层,高斯金字塔层(金字塔图层的含义主要是每层图像都是上一层图像的宽高的1/2;双线性以及高斯是对应的图像下采样方式)。


GDC开发指导FAQ


FAQ001: 配置、移植相关


问:鱼眼镜头出厂自带的畸变参数,是否可直接导入到GDC的配置文件?

答:个不行,需要用户定制去生成GDC变换网格


问:hb_vio_gen_gdc_cfg API前三个参数传结构体的地址,结构体内容是从json中解析出来的?json解析需要应用自己解析?

答:hb_vio_gen_gdc_cfg 前三个入参结构体的内容是从json中解析出来的,解析的操作需要应用自己在上层完成,我们可提供参考的解析函数


FAQ002: 软件功能相关


问:VPM server 是一个什么实体

答:vpm server包括libvio.solibvio_client.so、vio_service,libvio.so 提供图像输入输出以及图像处理接口,libvio_client.so & vio_service 支持多进程处理以及数据共享。具体说明也可以参考VPS通路培训。


问:hb_vio_run_gdc_adr_user API,指定的输出buffer是否可指定从它的偏移地址开始输出?

答:这个理论可行,但是现在都是从输出buffer起始地址开始处理,所以还不支持。


FAQ003: 使用工具相关


问:怎么确认GDC变化了以后的这个图像?比如说它的好坏,这个是有一个什么标准吗?

答:出的图像可通过坐标点去核对图像是否校正精确。


问: GDC处理之后,要进到 Stitch模块里面做拼,怎么确认这个GDC的参数设置是比较合理的?然后拼起来效果比较好。有这种联动机制吗?

答:目前没有这个联动机制,GDC的效果可通过GDC GUI tool仿真工具进行仿真,达到满意效果后再跑GDC,最后进行Stitch拼接。


问: GDC GUI tool 6种变换模式下的网格是怎么指定的,需要手工指定还是一点点调?

答:首先,选定一种变换模式后,网格的基本形状就确定下来了,然后可以在GUI tool里面调整size等大小,最后一些pan,zoom,tite等一系列参数可以调整,使得网格产生变化。

FAQ004: opencv相关

问:如何处理opencv生成的txt文件?

:对设置的感兴趣区域(IPM配置),通过内参外参矩阵等计算,进行映射点投射,生成opencv的remap坐标点。

该坐标点txt文件可以在opencv上读取鱼眼图片进行仿真;也可以把坐标点的txt给到gdc,进行实际硬件处理。


问:GDC硬件加速模块 与OpenCV的去畸变差别有多大?

:去畸变效果是一样的,只是GDC硬件更快一点

问: 能否通过OpenCV的去畸变map表转换为J5 GDC模块上可以用的去畸变参数配置?

答:可以

Camera开发指导FAQ

FAQ001: 功能特性

问: 在实际场景中有用到HDR吗?因为HDR需要几张图合成一张图,这时会提高帧率来保证原有的30FPS需求吗,还是帧率不变是不是只能获得更少帧

答:在实际场景里,一般会使用到Sensor的HDR模式,在Sensor内部就已经合成了HDR模式的出图,对于SOC来说还是一样的一路数据;帧率的支持一般按照Sensor规格。


FAQ002: 异常处理

问: 如果配置了4个摄像头接入,但是假如某个摄像头故障,程序能否自适应保证剩余的3个摄像头能正常工作吗?

:若已正常初始化并工作之后再某颗模组故障,其他3路可继续正常运行不受影响。但若在已故障状态下做初始化,会初始化失败(硬件处于非正常状态下),不能正常接入运行。

FAQ003: 工作原理

问: CAMERA INIT 包括什么?包括对camera的上电控制吗?

:此处CAMERA INIT若是广义的VIN子系统初始化的话,其包括Deserial/MIPI/CIM/LPWM/Sensor等设备的初始化配置; 若单指Sensor的INIT操作,包括camera的上电控制,除此之外还包括SerDes的初始化配置,Sensor的初始化配置。

问: 压缩和解压缩使用的是同一个LUT的话,解压缩数据与原数据一样吗?

:压缩和解压使用是2个对应匹配的LUT,其分别描述X->Y与Y->X的转换曲线,因此该2个LUT内knee point实际是X、Y交换后对应,本质上是2个维度描述的同一条曲线。

FAQ004:调试方法

问:Sensor的bayer pattern配置错误有什么调试方法?

:ISP tuning提供有control-tool工具,可用于该类bayer pattern配置调试。

在板上执行: cd /app/bin/tuning_tool/control-tool; sh server_isp0_8000.sh

通过浏览器登录: http://<board IP>:8000/

算法工具链
征程5官方教程
评论2
0/1000
  • lsssss
    Lv.1

    vio配置文件详细说明文档有吗

    2023-07-26
    0
    0
  • wuxuehong
    Lv.1

    你好 请问 为什么 将经过gdc去畸变后的buf用memcpy拷贝到显示buf 的用时 比 将从ipu获取到的buf拷贝到显示buf 的用时要长很多(两个buf的大小一致 均为1920x1080)

    2023-08-22
    0
    0