SCL模块调试

Version 1.2


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/DropCnt
    Callback 接口执行次数
    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 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_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