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模式;
