VPE模块调试
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 modeEnable 使能状态 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 |