SCL模块调试
1. cat¶
-
调试信息
# cat /proc/mi_modules/mi_scl/mi_scl0
-
调试信息分析
记录当前scaler的使用状况以及相关属性、可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 module info InitCnt 发生connected module次数 chip Chip index version Chip version UseSclMask 模块scaler使用情况 Device Info DevID 设备ID refcnt 重复创建dev次数 source 输入源 sclmask 设备使用Scaler id cmdq Cmdq 指针 IrqEn IRQ 使能状况 IrqMode IRQ 模式 Irqnum 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 DevId Device id ChnId Channel ID start Channel 是否start Crop Channel Crop位置 Rot Rotation 角度 Size input width/height pixel Input Pixel format Stride Input buffer stride Atom 底层拿住buffer 数量 Atom0Cnt 释放buffer后底层没有buffer数量 PreCnt/EnqCnt/BarCnt/checkin/
checkout/DeqCnt/DropCntCallback 接口执行次数 EnqOTNull Enq时OutBuffer 为Null次数统计 Outputport Info DevId Device id ChnId Channel ID PortId Port ID sclid scaler 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_scl/mi_scl0
图2-1 Echo help 查看可用命令
功能 | 打印所有channel 锁的使用function 和line和 time |
---|---|
命令 | echo debugmutex > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | 无 |
举例 | 无 |
功能 | 设置每一个scl port 的crop 参数,直接设置给driver, 不经过MI 流程 |
---|---|
命令 | echo setprecrop [chnid portid X Y Width Height] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Portid: port id X,Y,width,height: crop范围 |
举例 | echo setprecrop 0 0 0 0 800 200 > /proc/mi_modules/mi_scl/mi_scl0 |
功能 | 等待底层buffer 处理完之后,关掉channel,不再trig底层。 |
---|---|
命令 | echo stopchnl [chnid, ON/OFF] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id ON/OFF: on打开stopchannel 功能,也就是stop掉, OFF关闭stopchannel功能,打开channel |
举例 | echo stopchnl 0 ON > /proc/mi_modules/mi_scl/mi_scl0 |
echo stopchnl 0 OFF > /proc/mi_modules/mi_scl/mi_scl0 |
功能 | Dump选定的channel的output数据,并保存在/path路径下 |
---|---|
命令 | echo dumptaskfile [chnid, Cnt, /path/, bOnlyDumpResChange, bdumpport] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Cnt: dump 数量 Path: 存放dump出来文件的路径 bOnlyDumpResChange: 切换分辨率时可能产生花图,dump命令和切分辨率操作不好配合,可以先设置该参数, 然后切换分辨率, 当程序识别后会dump分辨率变化后的buffer。 (非必选参数) Bdumpport: 只dump 某一个portid, 默认是dump 所有在输出的port。 (非必选参数) |
举例 | echo dumptaskfile 0 2 /tmp > /proc/mi_modules/mi_scl/mi_scl0 |
功能 | 设置pass的atomvalue |
---|---|
命令 | echo setatom [AtomValue] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | AtomValue: Driver 最大持有buffer 数量 |
举例 | echo setatom 3 > /proc/mi_modules/mi_scl/mi_scl0 注意:有时候底层卡住,可以尝试增大该atom,加塞一张buffer 给driver,重新trig,看是否可以恢复,或者掉帧的时候,加大是否可以满帧。 |
功能 | 设置对应channel和port的输出画面是否做水平/上下翻转 |
---|---|
命令 | echo setmirrorflip [chnid, portid, bmirror, bflip] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Portid: port id bmirror: 水平翻转 bflip: 上下翻转 |
举例 | echo setmirrorflip 0 0 1 0 > /proc/mi_modules/mi_scl/mi_scl0 水平翻转 |
功能 | 清除指定channel port的input/output/done buffer |
---|---|
命令 | echo clearbuf [chnid, portid bClearInput, bclearoutput, bcleardonebuff] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Portid: port id bClearInput: 清除input的buffer bclearoutput: 清除output的buffer bcleardonebuff: 清除done的buffer |
举例 | echo clearbuf 0 0 1 0 0 > /proc/mi_modules/mi_scl/mi_scl0 |
功能 | 设置debug level |
---|---|
命令 | echo debuglv [level] >/proc/mi_modules/mi_scl/mi_scl0 |
echo debuglv [chnid][level] >/proc/mi_modules/mi_scl/mi_scl0 | |
参数说明 | Chnid: channel id Level: (1) 单个level参数时: 2:flow,4:check irq done (2) 两个参数时: 1:check buffer,2:check loop,4:check frame pts,8:check fence done,16:check func time,32:check sidebandmsg |
举例 | echo debuglv 4 > /proc/mi_modules/mi_scl/mi_scl0 //打开check irq done 相关的MI打印 echo debuglv 0 3 > /proc/mi_modules/mi_scl/mi_scl0 /打开channel0 level3的打印,打印buffer info和loop info |
功能 | 设置port是否enable |
---|---|
命令 | echo enableport [chnid, portid, bEn] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Portid: port id bEn: 1/0 |
举例 | echo enableport 0 0 1 > /proc/mi_modules/mi_scl/mi_scl0 |
功能 | 保护outputport buffer |
---|---|
命令 | echo protectport [chnid portid ben clientid] > |
/proc/mi_modules/mi_scl/mi_scl0 | |
参数说明 | Chnid: channel id Portid: port id ben: 使能 Clientid: scl(0,1,2):0x19, 0x1c, 0x1d |
举例 | echo protectport 0 0 1 0x19> /proc/mi_modules/mi_scl/mi_scl0 |
//保护channel0 port0 的scl0 |
功能 | 将Bind Q中缓存的buffer 消耗掉 |
---|---|
命令 | echo clearbindq [chnid bclear] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id bclear: 是否clear |
举例 | echo clearbindq 0 1 > /proc/mi_modules/mi_scl/mi_scl0 //clear channel0 bindQ 将Bind Q中缓存的buffer 消耗掉。 有时候前端拿不到buffer,发现是scl BindQ塞满, 判断scl是否拿的不够快, 将bindQ 清空,看BindQ中是否还会累加上来, 如果还累加说明scl 拿不够快, 如果不再增加,说明是之前一次异常塞在里面一直没有消耗掉。 |
功能 | 设置打印帧率,低于该值打印出来 |
---|---|
命令 | echo fpsth [chnid portid fpsint fpsfloat] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Chnid: channel id Portid: port id fpsint: 帧率整数位 fpsfloat: 帧率小数位 |
举例 | echo fpsth 0 0 30 30 > /proc/mi_modules/mi_scl/mi_scl0 // channel0 port0中小于30.30的fps打印出来 |
功能 | 设置输入源的irq 模式 |
---|---|
命令 | echo irqmode [source irqmode] > /proc/mi_modules/mi_scl/mi_scl0 |
参数说明 | Source: 0:isp realtime, 1:rdma0, 2:yuv realtime, 3:rdma1, 4:rdma rot Irqmode: 0x1:realtime, 0x2:framemode, 0x10:onlydoneint, 0x20:multiint |
举例 | echo irqmode 0 1 > /proc/mi_modules/mi_scl/mi_scl0 |