专栏算法工具链J5 Pyramid软硬件功能介绍

J5 Pyramid软硬件功能介绍

sunkai22024-04-14
186
0

1.硬件功能

1.1 输出

  • 原图层输出

  • UV通道可单独bypass

  • 可crop输出

  • 可配置输出stride

  • 双线性下采样图层(BL)输出

  • 层数:5

  • 每层图像支持输出可单独配置,UV可单独bypass

  • 可crop输出

  • 可配置输出stride

  • 高斯下采样图层(GS)输出

  • 层数:5

  • 每层图像支持输出可单独配置,UV可单独bypass

  • 可crop输出

  • 可配置输出stride

  • 可配置垂直5x1和水平1x5的滤波系数

  • ROI Downscale 图层输出

  • 层数:6

  • 每层图像支持输出可单独配置,UV可单独bypass

  • 可crop输出

  • 可配置输出stride

  • 缩小ratio(1/2,1]

  • 可配置垂直水平相位

  • Upscale图层输出

  • UV可单独bypass

  • 可先crop输入

  • 可配置输出stride

  • 放大ratio(1,4]

  • 可配置垂直水平相位

1.2 输入

  • 支持online或者offline输入,online来源可选择CIM或者ISP;

  • online输入是line by line输入,不支持分时复用;

2.软件功能

  • 支持16路context配置

  • 支持提前中断

2.1 qbuf workflow

  • Pym driver会生成pymx_src和pymx_cap

  • pym hal 通过pymx_cap节点调用qbuf函数,释放frame buffer;

  • pym hal 通过pymx_src节点调用qbuf函数,传递source frame buffer;

  • pym driver会把frame作为一个work,放到worker队列里面,遵循先进先出;

  • Worker队列以gtask semaphore为驱动来执行work,往pym硬件更新src buffer address和output buffer addess;

  • pym FE中断处理函数,会释放semaphore给gtask;

2.2 dqbuf workflow

  • pym hal先调用/dev/pymx_src poll函数,获知当前frame buffer状态;如果没有frame buffer处于complete队列,就会阻塞在wait_queue;

  • pym FE中断处理函数,会先把frame从process队列切换到complete队列,并唤醒wait_queue;

  • pym hal poll返回,调用/dev/pymx_src dqbuf函数,从frame manager获取frame buffer;

  • pym hal先调用/dev/pymx_cap poll函数,当前有buffer处于complete队列,就直接返回;

  • Pym hal紧接着直接调用/dev/pymx_cap dqbuf函数获取完成帧;

3.常见错误日志

3.1 GP0(res 0, rcnt 0, bcnt 3, scnt 164)

释义:

  • 此IP是online输入,FS中断处理函数中判断vio_gwx线程未处于等待信号量状态,预示着下一帧不会写到DDR,丢帧打印;

推荐检查:

  • 检查上层是否长时间未获取数据帧并进行释放;

3.2 qbuf failed

释义:

  • 当前frame index 4处于request队列,HAL 还buffer的状态不对,只有used/free队列的frame,才能被Hal层还;

推荐检查:

  • 应用获取帧之后,同一帧重复释放;

  • 应用获取帧之后,等stop/start操作才释放;

3.3 dqbuf failed

释义:

  • 表示request队列有8个buffer,process/complete/used队列都没有buffer,因此dqbuf报错;

推荐检查:

  • 出现在vio stop阶段,属于正常warning上报,可以不用管;出现在其他阶段,则轮转逻辑异常,需要检查驱动代码逻辑;

3.4 pym hw drop

释义:

  • 一般因为带宽吃紧导致PYM丢一帧,PYM硬件以中断的形式上报;

推荐检查:

  • 检查当前带宽压力是否过大;

  • 检查DS层是否开太多了,建议减少试试;

3.5 pym sw timeout

释义:

  • 表示pym 长时间(目前设置的是300ms)没有buffer可用于输出;

推荐检查:

  • 检查上层是否长时间未获取数据帧并进行释放;

  • 检查上层是否尝试持有数据帧,导致底层buffer不够用;

3.6 pym hw timeout

释义:

  • 有两种可能性:

  • 配置异常导致PYM输出DDR 挂死;

  • 前级模块数据断流;

推荐检查:

  • 首先检查前级数据流是否存在断流现象,如果不是,则需要查看PYM配置参数是否异常导致PYM挂死,需得着重注意;

3.7 PYM PROCESS queue has no member

释义:

  • frame done中断处理函数中,检查到process队列里没有frame;该log出现意味着buffer存在复写的可能,需重视;

推荐检查:

  • 轮转逻辑异常,需要检查驱动代码逻辑;

3.8 pym drop frame because of isp crc error

释义:

  • TDMF模式下,因ISP CRC校验错误,丢一帧;

推荐检查:

  • 硬件逻辑导致的丢帧,暂时无法规避,一般出现在带宽吃紧的情况;

3.9 pym transfer to request queue

释义:

  • TDMF模式,每一路底层预留2块buffer,当底层可用buffer为2块时,便会报该log,意指丢一帧;

推荐检查:

  • 检查上层是否长时间持有buffer导致底层buffer不够;

  • 检查上层是否长时间未获取buffer导致所有buffer堆积在底层;

3.10 pym lost frame start

释义:

  • 该log代表frame start中断丢失,一般是因为系统负载过高导致中断丢失;

推荐检查:

  • TDMF和passthrough模式情况下,才有可能出现,检查系统CPU 负载,如果负载过高,且没办法降低,请把TDMF模式改成manual模式;


算法工具链
征程5社区征文技术深度解析官方教程
评论0
0/1000