VPE模块调试

Version 1.2


1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_vpe/mi_vpe0
    

  • 调试信息分析

    记录当前VPE的使用状况以及device属性、OutPort属性、可以动态地获取到这些信息,方便调试和测试。

  • 参数说明

    参数 描述
    Device Info DevID 0, 只有一个Device, ID为0
    InitCnt 发生connected module次数
    CreChnNum 创建Channel 数量
    Point 运行节点停住行号
    scllevel Scl½ level
    chip Chip number
    cmdq(0,1,2) Cmdq 指针,确认是否和其它pass有共用Cmdq
    IrqName IRQ类别
    En IRQ 使能状况
    Mode IRQ 模式
    num IRQ ID
    VsyncCnt ISR vsync Cnt
    FrameDoneCnt ISR Frame Done Cnt
    DropCnt IRQ Frame Drop or Double Vsync
    LowLatencyIsrCnt Low Lantency Mode Match Line IRQ Cnt
    Channel Info
    ChnId Channel ID
    status E_MI_VPE_CHANNEL_STATUS_INITED = 0,
    E_MI_VPE_CHANNEL_STATUS_START,
    E_MI_VPE_CHANNEL_STATUS_STOP,
    E_MI_VPE_CHANNEL_STATUS_DESTROYED,
    E_MI_VPE_CHANNEL_STATUS_NUM,
    MaxWH Max width/height
    bEnLdc Ldc 使能
    ChnPortMode Port mode,通过该参数选择SCL source是来自ISP Realtime还是RDMA
    SensorId Bind sensorId
    RunMode VPE Running mode :VIF-VPE
    Crop Channel Crop位置
    Rot Rotation 角度
    Mirror/Flip Chn 水平/竖直 翻转
    Gardient Isp画面复杂度
    ActEn ISP->SCL 连接状态 等于0代表有realtime连接
    3DNRLevel 3dnr level
    HdrMode Hdr 类型
    passid passid
    bUsed Pass 是否使用
    InSize input width/height
    Inpixel Input Pixel format
    InStride Input buffer stride
    SclOutMode Scl output mode设置
    SclInSize Scl input size
    Atom 底层拿住buffer 数量
    Atom0Cnt 释放buffer后底层没有buffer数量
    PreCnt/EnqCnt/BarCnt/checkin/checkout/DeqCnt/DropCnt Callback 接口执行次数
    EnqOTNull Enq时OutBuffer 为Null次数统计
    Outputport Info ChnId Channel ID
    PortId Port ID
    passid Pass ID
    bindtype 0: Real Time mode
    1: Ring mode
    2: frame mode
    Enable 使能状态
    Pixel Output pixel format
    bMirr/flip Port 水平/竖直 翻转
    PortCrop Port 裁剪范围
    OutputW /OutputH 输出宽/输出高
    Histogram Scl 画面复杂度
    MatchLine Low Lantency Mode Match Line Cnt
    Stride Output buffer stride,一行像素字节
    GetCnt 尝试获取outputbuffer的数量
    FailCnt 获取outputbuffer失败数量
    FinishCnt 处理完output buffer 数量
    fps Output port frame rate

2. echo


# echo help > /proc/mi_modules/mi_vpe/mi_vpe0

图 2-1 Echo help 查看可用命令

功能 打印所有channel 锁的使用function 和line和 time
命令 echo debugmutex > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明
举例
功能 设置每一个scl port 的crop 参数,该设置直接设置给driver, 不经过MI 流程
命令 echo setprecrop [chnid portid X Y Width Height] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Portid: port id
X,Y,width,height: crop范围
举例 echo setprecrop 0 0 0 0 800 200 > /proc/mi_modules/mi_vpe/mi_vpe0
功能 等待底层buffer 处理完之后,关掉channel,不再trig底层。
命令 echo stopchnl [chnid, ON/OFF] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
ON/OFF: on打开stopchannel 功能,也就是stop掉, OFF关闭stopchannel功能,打开channel
举例 echo stopchnl 0 ON > /proc/mi_modules/mi_vpe/mi_vpe0 echo stopchnl 0 OFF > /proc/mi_modules/mi_vpe/mi_vpe0
功能 Dump选定的channel和pass的output数据,并保存在/path路径下
命令 echo dumptaskfile [chnid, Passid, Cnt, /path/, bOnlyDumpResChange, bdumpport] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Passid: pass id
Cnt: dump 数量
Path: 存放dump出来文件的路径
bOnlyDumpResChange: 切换分辨率时可能产生花图,dump命令和切分辨率操作不好配合,可以先设置该参数, 然后切换分辨率, 当程序识别后会dump分辨率变化后的buffer。 (非必选参数)
Bdumpport: 只dump 某一个portid, 默认是dump 所有在输出的port。 (非必选参数)
举例 echo dumptaskfile 0 0 2 /tmp > /proc/mi_modules/mi_vpe/mi_vpe0
功能 设置pass的atomvalue
命令 echo setatom [passid AtomValue] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Passid: pass id
AtomValue: input realtime mode下Driver 最大持有buffer 数量
举例 echo setatom 0 3 > /proc/mi_modules/mi_vpe/mi_vpe0
注意:有时候底层卡住,可以尝试增大该atom,加塞一张buffer 给driver,重新trig,看是否可以恢复,或者掉帧的时候,加大是否可以满帧。
功能 设置对应channel和port的输出画面是否做水平/上下翻转
命令 echo setmirrorflip [chnid, portid, bmirror, bflip] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Portid: port id
bmirror: 水平翻转
bflip: 上下翻转
举例 echo setmirrorflip 0 0 1 0 > /proc/mi_modules/mi_vpe/mi_vpe0 水平翻转
功能 清除指定channel pass port的input/output/done buffer
命令 echo clearbuf [chnid, passid portid bClearInput, bclearoutput, bcleardonebuff] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Passid: pass id
Portid: port id
bClearInput: 清除input的buffer
bclearoutput: 清除output的buffer
bcleardonebuff: 清除done的buffer
举例 echo clearbuf 0 0 0 1 0 0 > /proc/mi_modules/mi_vpe/mi_vpe0
功能 设置debug level
命令 echo debuglv [level] >/proc/mi_modules/mi_vpe/mi_vpe0 echo debuglv [chnid][passid][level] >/proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
passid: pass id
Level: 单个level参数时: 1:isp api,2:flow,4:check irq done 三个参数时: 1:check buffer,2:check loop,4:check frame pts,8:check fence done,16:check func time,32:check sidebandmsg,64:check zoominfo
举例 echo debuglv 4 > /proc/mi_modules/mi_vpe/mi_vpe0 //打开check irq done 相关的MI打印 echo debuglv 0 0 3 > /proc/mi_modules/mi_vpe/mi_vpe0 /打开channel0 pass0 level3的打印,打印buffer info和loop info
功能 设置port是否enable
命令 echo enableport [chnid, portid, bEn] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Portid: port id
bEn: 1/0
举例 echo enableport 0 0 1 > /proc/mi_modules/mi_vpe/mi_vpe0
功能 主动drop frame 数量
命令 echo skipframe [chnid, skipnum] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
skipnum: drop frame count
举例 echo skipframe 0 60 > /proc/mi_modules/mi_vpe/mi_vpe0
功能 保护outputport buffer
命令 echo protectport [chnid passid portid clientid ben] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Passid: pass id
Portid: port id
Clientid: isp:0x23, LDC:0x0e, scl(0,1,2):0x19, 0x1c, 0x1d
ben: 使能
举例 echo protectport 0 0 0 0x23 1 > /proc/mi_modules/mi_vpe/mi_vpe0 //保护channel0 pass0 port0 的isp
功能 Dump LDC view table
命令 echo dumptablebin [chnid viewid /path/] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
viewid
path
举例 echo dumptablebin 0 1 /mnt > /proc/mi_modules/mi_vpe/mi_vpe0
功能 将Bind Q中缓存的buffer 消耗掉
命令 echo clearbindq [chnid passid bclear] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Passed: pass id
bclear: 是否clear
举例 echo clearbindq 0 0 1 > /proc/mi_modules/mi_vpe/mi_vpe0 //clear channel0 pass0 bindQ 将Bind Q中缓存的buffer 消耗掉。 有时候前端拿不到buffer,发现是Vpe BindQ塞满, 判断vpe是否拿的不够快, 将bindQ 清空,看BindQ中是否还会累加上来, 如果还累加说明vpe 拿不够快, 如果不再增加,说明是之前一次异常塞在里面一直没有消耗掉。
功能 设置打印帧率,低于该值打印出来
命令 echo fpsth [chnid passid portid fpsint fpsfloat] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
passid: pass id
Portid: port id
fpsint: 帧率整数位
fpsfloat: 帧率小数位
举例 echo fpsth 0 0 0 30 30 > /proc/mi_modules/mi_vpe/mi_vpe0 // channel0 pass0 port0中小于30.30的fps打印出来
功能 设置vpe outport depth 参数
命令 echo depth [chnid passid portid userdepth totaldepth] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Passid: pass id
Portid: port id
Userdepth: 用户可以拿的数量
Totaldepth: output buffer 总数
举例 echo depth 0 0 0 2 4 > /proc/mi_modules/mi_vpe/mi_vpe0