DIVP模块调试
1. cat¶
-
调试信息
# cat /proc/mi_modules/mi_divp/mi_divp0
-
调试信息分析
记录当前某DIVP device的使用状况,以及device属性、layer属性、inputport属性,可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 channelinfo ChnId 0~16
16 Capture Channel 不对上层开放Status 0 INITED
1 CREATED
2 STARTED
3 STOPED
4 DISTROYEDAttrChg 0:not change
1:changedFieldType0, FieldType1 (last two fields's type) 0 NONE, //< no field.
1 TOP, //< Top field only.
2 BOTTOM, //< Bottom field only.
3 BOTH, //< Both fields.
4 NUMChnAttrPre channel的上一次设置属性 ChnAttrOrg channel的原始设置属性 CropX,CropY,CropW,CropH 上层设置的crop位置 bHMirror bVMirror 水平翻转使能
垂直翻转使能
0:disable
1:enableeDiType 0 OFF,//off
1 2D,///2.5D DI
2 3D,///3D DI
3 NUM,eRotateType 0 NONE, //Rotate 0 degrees
1 90, //Rotate 90 degrees
2 180, //Rotate 180 degrees
3 270, //Rotate 270 degrees
4 NUM,eTnrLevel 0 OFF,
1 LOW,
2 MIDDLE,
3 HIGH,
4 NUM,inputport info ChnId Channel ID 0~16 InputChg input port 属性是否发生变化 bIPChg 0 隔行和逐行之间没有发生变化
1 隔行切换到逐行,or 逐行到隔行PreWidth input port width PreHeight input port height Pixel E_MI_SYS_PIXEL_FRAME_YUV422_YUYV = 0,
E_MI_SYS_PIXEL_FRAME_ARGB8888,
E_MI_SYS_PIXEL_FRAME_ABGR8888,
E_MI_SYS_PIXEL_FRAME_RGB565,
E_MI_SYS_PIXEL_FRAME_ARGB1555,
E_MI_SYS_PIXEL_FRAME_I2,
E_MI_SYS_PIXEL_FRAME_I4,
E_MI_SYS_PIXEL_FRAME_I8,
E_MI_SYS_PIXEL_FRAME_YUV_SEMIPLANAR_422,
E_MI_SYS_PIXEL_FRAME_YUV_SEMIPLANAR_420,
E_MI_SYS_PIXEL_FRAME_YUV_MST_420,
//vdec mstar private video format
E_MI_SYS_PIXEL_FRAME_YC420_MSTTILE1_H264,
E_MI_SYS_PIXEL_FRAME_YC420_MSTTILE2_H265,
E_MI_SYS_PIXEL_FRAME_YC420_MSTTILE3_H265,
E_MI_SYS_PIXEL_FRAME_FORMAT_MAXStride Input的stride 2Pmode b2P_Enable值,1表示enable,0表示disable EnqueueTask Enqueue的task数目 GetInTaskCnt OnPreProcessInputTask的task数目 Outputport Info ChnId Channel ID 0~16 OutputChg Output 属性是否发生变化
0: not change
1: changedPixel 同input pixel CompMode 0 //no compress
1 //compress unit is 256 bytes as a segment
2 //compress unit is the whole line
3 //compress unit is the whole frame
4 //numberPreWidth PreHeight 上一次设置的output port 宽和高 Stride Output 的stride phyaddr Ouput buffer 的物理地址 FinishTaskCnt Finish task的数目 fps Output port的帧率 Common Info ChnNum Channel的总数 Pixel 同input pixel PassNum Pass的总数 InPortNum Input port的个数 OutPortNum Output port的个数 CollectSize Attach的pstAllocator数目 current_buf_size 当前申请的内存大小 Peak_buf_size 使用内存的峰值 user_pid 进程id user_buf_quota User可以拿的buffer最大个数 UsrInjectQ_cnt User inject buffer个数 BindInQ_cnt 前端给input port enqueue的buffer个数 TotalPendingBuf_size 当前input working队列中各个task总共所占的buffer size usrLockedInjectCnt 用户拿到buffer的个数 newPulseQ_cnt new_pulse_fifo_inputqueque的buffer个数 nextTodoPulseQ_cnt next_todo_pulse_inputqueue的buffer个数 curWorkingQ_cnt cur_working_input_queue的buffer个数 workingTask_cnt input_working_tasklist的task个数 lazzyRewindTask_cnt 需要retry的task个数 bind_module_id 绑定的模块id bind_module_name 绑定的模块名字 bind_ChnId 绑定模块的channel id bind_PortId 绑定模块的port id bind_Type 绑定方式:
E_MI_SYS_BIND_TYPE_FRAME_BASE = 0x00000001,
E_MI_SYS_BIND_TYPE_SW_LOW_LATENCY = 0x00000002,
E_MI_SYS_BIND_TYPE_REALTIME = 0x00000004,
E_MI_SYS_BIND_TYPE_HW_AUTOSYNC = 0x00000008,
E_MI_SYS_BIND_TYPE_HW_RING = 0x00000010bind_Param 绑定的参数 SrcFrmrate source 帧率 DstFrmrate destination帧率 GetFrame/Ms 实际帧数/所用时间 FPS 实际帧率 RewindCnt 需要retry的task个数 usrDepth User可以拿到output port buffer的最大个数 BufCntQuota Output 可以申请buffer的最大个数 usrLockedCnt User实际拿到的buffer个数 totalOutPortInUsed Outport实际申请到的buffer个数 DrvBkRefFifoQ_cnt for special driver which need to refer back pre-processed buffer DrvBkRefFifoQ_size stDrvBkRefFifoQueue 所占用的buffer size总数 UsrGetFifoQ_cnt Duplicate 到output port的buffer个数 UsrGetFifoQ_size Duplicate 到output port的buffer所占的总大小 UsrGetFifoQ_seqnum output拿到buffer的总数 UsrGetFifoQ_discardnum Output由于申请新的buffer需求而遗弃原来buffer的个数 finishedTask_cnt Output finish task的个数 GetTotalCnt Output拿到buffer总个数 GetOkCnt 统计index为E_MI_SYS_FRC_OBTAIN的帧数 ISRNum 收到的中断总数
2. Echo¶
功能 | 打印接收到每一帧的PTS,如果前端是VDEC,则打印送过来的FrameID和Debug丢帧问题,正常情况下FrameID和PTS的值都是递增的。 |
---|---|
命令 | echo checkframeid [ChnID] [Status] > /proc/mi_modules/mi_divp/mi_divp0 [ChnID] 通道号 [0~32] [Status] ON:开始打印; OFF:停止打印 |
举例 | echo checkframeid 0 ON/OFF > /proc/mi_modules/mi_divp/mi_divp0 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 63 , H = 0, L = 196615, PTS = 43956000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 64 , H = 0, L = 196616, PTS = 43989000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 65 , H = 0, L = 196615, PTS = 44022000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 66 , H = 0, L = 196615, PTS = 44055000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 67 , H = 0, L = 196615, PTS = 44088000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 68 , H = 0, L = 196615, PTS = 44121000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 69 , H = 0, L = 196614, PTS = 44154000 [MI DIVP PROCFS]:ChnID 0, receive buffer ID = 70 , H = 0, L = 196615, PTS = 44187000; receive buffer ID:每个channel接收到buffer的ID。 H,L:VDEC 送来的FrameID,H高32位,L低32位,前端不是VDEC则无该打印。 PTS:FrameBuffer的PTS。 |
功能 | 统计1秒时间内GetBuffer的数量,以及每拿到两个inputbuffer之间的间隔时间的平均值,最大值,最小值,Debug丢帧问题。 |
---|---|
命令 | echo statintervaltime [ChnID] ON/OFF > /proc/mi_modules/mi_divp/mi_divp0 |
参数说明 | [ChnID] 通道号 [0~32] [Status] ON: 开始统计并打印; OFF: 停止统计和打印 |
举例 | echo statintervaltime 0 ON > /proc/mi_modules/mi_divp/mi_divp0 [MI DIVP PROCFS]: ChnlID 0, 1s FrameCnt:19, Average time: 50393 us, MAX 59601 us, 57652 us,57534 us, MIN 41401 us, 42415 us, 42896 us [MI DIVP PROCFS]: ChnlID 0, 1s FrameCnt:19,Average time: 50247 us,MAX 63004 us,62889 us,62845 us,MIN 36896 us, 37120 us, 37130 us [MI DIVP PROCFS]: ChnlID 0, 1s FrameCnt:18, Average time: 51049 us, MAX 70431 us,59763 us, 59736 us, MIN 38873 us,40109 us,40283 us [MI DIVP PROCFS]: ChnlID 0,1s FrameCnt:20, Average time: 48537 us, MAX 67168 us,67117 us,66953 us, MIN 18513 us,31242 us,32681 us [MI DIVP PROCFS]: ChnlID 0,1s FrameCnt:19, Average time: 49962 us, MAX 61416 us, 61416 us, 61338 us, MIN 38564 us, 38736 us, 38762 us FrameCnt: 1秒时间GetBuffer的数量; Average time: 拿到两个buffer之间间隔时间的平均时间 ;MAX:间隔时间最大的三个值; MIN: 间隔时间最小的三个值 |
功能 | DIVP不再处理某一个channel,以节省频宽,验证频宽相关问题 |
---|---|
命令 | echo stoponechannel [ChnID] [Status] > /proc/mi_modules/mi_divp/mi_divp0 |
参数说明 | [ChnID] 通道号 [0~32] [Status] ON: 停止处理设置的channel ;OFF:继续处理设置的channel |
举例 | echo stoponechannel 0 ON > /proc/mi_modules/mi_divp/mi_divp0 通道0的画面将会停住 |
功能 | dump一张input frame。 |
---|---|
命令 | echo dumpframe [ChnID] [frameStorePath] > /proc/mi_modules/mi_divp/mi_divp0 |
参数说明 | [ChnID] 通道号 [0~16]。 [ frameStorePath ] 指定保存input frame的位置。 |
举例 | #echo dumpframe 0 /customer > /proc/mi_modules/mi_divp/mi_divp0 dump 一张 input frame保存在/customer这个路径下。 默认的input frame名字, 比如:dump_divp_chn0_frame_w_352_h_288.yuv |
功能 | 打开mi divp的debug信息。 |
---|---|
命令 | echo debug 0/1 > /proc/mi_modules/mi_divp/mi_divp0 |
参数说明 | [0/1] 0:表示关闭,1:表示打开。 |
举例 | #echo debug 1 > /proc/mi_modules/mi_divp/mi_divp0 printk in _MI_SYS_IMPL_Common_WriteProc divp debug:on #echo debug 0 > /proc/mi_modules/mi_divp/mi_divp0 printk in _MI_SYS_IMPL_Common_WriteProc divp debug: off |