MI调试手册

Version 1.2


1. 概述

使用Linux下的porc文件系统,可以打印出各个模块当前的运行状态,便于调试及分析问题。每个模块都自己特定的路径,部分模块有额外的echo命令。

路径: /proc/mi_modules

表1-1 文件清单

模块名称 说明
SYS SYS模块的信息
AI 音频输入的信息
AO 音频输出的信息
VIF 视频输入的信息
VPE 视频处理引擎的信息
VENC 编码视频的信息
DIVP 去隔行/图像引擎的信息
VDISP 虚拟显示模块的信息
DISP 显示模块的信息
HDMI HDMI的信息
FB Graphic图形层的信息
GFX 图像引擎的信息
REGION OSD的信息
VDEC 解码视频的信息

2. SYS


2.1. common

2.1.1. dump_mmap

  • 调试信息

    # ./config/dump_mmap
    

    图2-1

  • 调试信息分析

    Common下存放的是配置API,目的如下:

    1. 在用户态做iniparser,不进入内核。

    2. 便于调试时确认配置文件的内容,避免在parser时打印的内容与实际设置偏差。

    如下是导入config的配置文件:

    图2-2

    Systeminfo.c内parse的struct写入config_info。

    Pqloader.c内parse的struct写入pq_info和*_table,此处的table是连续的内存摆放,MISDK是一个间接数组指向一列一维数组。

    如下是导入mmap的配置文件:

    图2-3

    Mmapinfo.c内parse的struct写入mmap_info和memory_info。因为这里比较简单,所以从mmap_info和memory_info读出来是格式化的可读信息。

2.1.2. dump_config

  • 调试信息

    # ./config/dump_config
    
    panel size:24
    DBC Value=
            55,30,10
            254,66,0
            72,80,72
    start dump [motion_table](6, 8)
    {0xe8,0xcd,0xab,0x89,0x67,0x45,0x23,0x00,}
    {0xd8,0xbc,0x9a,0x78,0x56,0x34,0x12,0x00,}
    {0xc8,0xab,0x89,0x67,0x45,0x23,0x01,0x00,}
    {0xb8,0x9a,0x78,0x56,0x34,0x12,0x00,0x00,}
    {0xa8,0x89,0x67,0x45,0x23,0x01,0x00,0x00,}
    {0x98,0x78,0x56,0x34,0x12,0x00,0x00,0x00,}
    end dump
    start dump [motion_hdmi_dtv_table](4, 8)
    {0x68,0x45,0x23,0x01,0x00,0x00,0x00,0x00,}
    {0xa8,0x89,0x67,0x45,0x23,0x01,0x00,0x00,}
    {0xc8,0xab,0x89,0x67,0x45,0x23,0x01,0x00,}
    {0xe8,0xcd,0xab,0x89,0x67,0x45,0x23,0x00,}
    end dump
    start dump [motion_comp_pc_table](4, 8)
    {0x68,0x45,0x23,0x01,0x00,0x00,0x00,0x00,}
    {0x98,0x78,0x56,0x34,0x12,0x01,0x00,0x00,}
    {0xa8,0x89,0x67,0x45,0x23,0x12,0x01,0x00,}
    {0xb8,0x9a,0x78,0x56,0x34,0x12,0x01,0x00,}
    end dump
    start dump [misc_param_table](4, 4)
    {0x02,0xff,0x00,0x00,}
    {0x02,0xff,0x01,0x66,}
    {0x03,0x88,0x01,0x66,}
    {0x03,0xaa,0x01,0x66,}
    end dump
    start dump [misc_luma_table](8, 2)
    {0x33,0x08,}
    {0x33,0x07,}
    {0x22,0x06,}
    {0x22,0x05,}
    {0x11,0x04,}
    {0x11,0x03,}
    {0x00,0x02,}
    {0x00,0x01,}
    end dump
    start dump [noise_table](6, 8)
    {0x67,0x45,0x34,0x23,0x12,0x01,0x00,0x00,}
    {0xab,0x89,0x67,0x45,0x23,0x12,0x01,0x00,}
    {0xbc,0x9a,0x78,0x56,0x34,0x23,0x01,0x00,}
    {0xde,0xbc,0x9a,0x78,0x56,0x34,0x12,0x00,}
    {0xef,0xcd,0xab,0x89,0x67,0x45,0x23,0x00,}
    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}
    end dump
    start dump [misc_table](6, 15)
    {0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0xc0,0x9f,0x00,0x01,0x66,}
    {0x10,0x01,0xc1,0xc1,0xc1,0x04,0x09,0x1f,0x03,0x88,0xc0,0x9f,0x00,0x01,0x66,}
    {0x21,0x02,0xc2,0xc2,0xc2,0x08,0x09,0x1f,0x03,0x99,0x00,0x00,0x00,0x01,0x88,}
    {0x31,0x04,0xc2,0xc2,0xc2,0x0a,0x09,0x1f,0x03,0xaa,0x00,0x00,0x00,0x01,0xaa,}
    {0x41,0x06,0xc3,0xc3,0xc3,0x10,0x19,0x1f,0x03,0xbb,0x00,0x00,0x14,0x01,0xbb,}
    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}
    end dump
    
  • 调试信息分析

    ./config/dump_config得到的是/proc/mi_modules/common/里各文件的信息,含panel size、DBC Value、motion_table、motion_hdmi_dtv_table、motion_comp_pc_table、misc_param_table、misc_luma_table、noise_table、misc_table等。


2.2. mi_log_info

2.2.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_log_info
    
    ---------------- Log Path ------------------------
    log path:  
    ---------------- Store Path ----------------------
    store path:  /mnt
    ---------------- Module Log Level ----------------
    Log module        Level
    --------------------------
    mi_ive            2(WRN)
    mi_vdf            2(WRN)
    mi_venc           2(WRN)
    mi_rgn            2(WRN)
    mi_ai             2(WRN)
    mi_ao             2(WRN)
    mi_vif            2(WRN)
    mi_vpe            2(WRN)
    mi_vdec           2(WRN)
    mi_sys            2(WRN)
    mi_fb             2(WRN)
    mi_hdmi           2(WRN)
    mi_divp           2(WRN)
    mi_gfx            2(WRN)
    mi_vdisp          2(WRN)
    mi_disp           2(WRN)
    mi_os             2(WRN)
    mi_iae            2(WRN)
    mi_md             2(WRN)
    mi_od             2(WRN)
    mi_shadow         2(WRN)
    
  • 调试信息分析

    说明了默认的log pathstore path,同时说明了各module的debug_level的值。

  • 参数分析

    表2-1

    参数 描述
    mi_log_info log path 暂时无效果
    store path 暂时无效果
    Log module 各个模块的名称
    Level 打印等级

2.2.2. echo

表2-2

功能 修改模块debug_level
命令 echo [ModID]=[Level] > /proc/mi_modules/mi_log_info
[ModID] 模块的名字
mi_ive/ mi_vdf /mi_venc /mi_rgn /mi_ai /mi_ao /mi_vif /mi_vpe /mi_vdec /mi_sys/ mi_fb /mi_hdmi /mi_divp /mi_gfx /mi_vdisp /mi_disp/ mi_os /mi_iae /mi_md /mi_od /mi_shadow
参数说明 [Level]
0: 无Debug信息
1: 只显示error的信息 (MI_DBG_ERR)
2: 只显示waring的信息 (MI_DBG_WRN)
3: 只显示 info 的信息 (MI_DBG_INFO)
4 :显示所有信息
举例 echo mi_sys=2 > /proc/mi_modules/mi_log_info 将mi_sys 的debug_level修改为2

表2-3

功能 修改log的路径
命令 echo log=[Path] > /proc/mi_modules/mi_log_info
参数说明 [Path] 路径
举例 echo log=/mnt > /proc/mi_modules/mi_log_info

表2-4

功能 修改存储log的路径
命令 echo storepath=[Path] > /proc/mi_modules/mi_log_info
参数说明 [Path] 路径
举例 echo storepath=/mnt > /proc/mi_modules/mi_log_info

2.3. mi_global_info

2.3.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_global_info
    
    miu_and_lx_info:
    ARM_MIU0_BUS_BASE 0x20000000        ARM_MIU0_BASE_ADDR 0x0
    ARM_MIU1_BUS_BASE 0x60000000        ARM_MIU1_BASE_ADDR 0x80000000
    ARM_MIU2_BUS_BASE 0xffffffff            ARM_MIU2_BASE_ADDR 0xffffffff
    lx_mem_addr  0x20c00000         lx_mem_size  0xe300000
    lx_mem2_addr 0xffffffff             lx_mem2_size 0xffffffff
    lx_mem3_addr 0xffffffff             lx_mem3_size 0xffffffff
    
    KernelProtect IP white list:
    clientId    name
                43                   MIU_CLIENT_MIPS_RW
                50                   MIU_CLIENT_NAND_RW
                82              MIU_CLIENT_USB_UHC0_RW
                83              MIU_CLIENT_USB_UHC1_RW
                84              MIU_CLIENT_USB_UHC2_RW
                18                    MIU_CLIENT_G3D_RW
            140                   MIU_CLIENT_USB3_RW
            129                   MIU_CLIENT_SDIO_RW
            165                   MIU_CLIENT_SATA_RW
            133              MIU_CLIENT_USB_UHC3_RW
            225               MIU_CLIENT_USB30_1_RW
            226               MIU_CLIENT_USB30_2_RW
                5                   MIU_CLIENT_BDMA_RW
                14                   MIU_CLIENT_EMAC_RW
    
    PAGE_OFFSET - the virtual address of the start of the kernel image
    PAGE_OFFSET=0xc0000000
    TASK_SIZE - the maximum size of a user space task
    TASK_SIZE=0xbf000000
    MStar SDK version: commit.build_time 0be783c.2017121315
    CHIP_VERSION  U02
    
  • 调试信息分析

    该调试信息提供了一些global信息。

  • 参数分析

    表2-5

    参数 描述
    miu_and_lx_info(以只有一个MIU为例) ARM_MIU0_BUS_BASE Miu0 bus base
    ARM_MIU0_BASE_ADDR Miu0 base addr
    lx_mem_addr Linux镜像占的memory的起始地址(属于cpu bus address)
    lx_mem_size Linux镜像占的memory的size
    kernelProtect IP white list clientId Miu protect的IP白名单里的IP的id(从未分group的角度看的全局的id)
    name 与clientId对应的该IP的实际的名字
    MStar SDK version: commit.build_time commit sdk对应的commit
    build_time sdk的build时间
    CHIP_VERSION CHIP_VERSION 当前chip的版本,版本号是U01,U02,U03…


2.4. mi_bufqueue_status

2.4.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_bufqueue_status
    
    dump Queues in input port only for enabled port:
    
    ModId DevId ChnId PassId InPortId UsrInjectQ_cnt BindInQ_cnt
    
    12 0 0 0 0 0 0 0
    
    dump Queues in output port only for enabled port:
    
    ModId DevId ChnId PassId OutPortId DrvBkRefFifoQ_cnt DrvBkRefFifoQ_size
    UsrGetFifoQ_cnt
    
    12 0 0 0 0 0 0 0 0
    
  • 调试信息分析

    Dump当前各modules的enable input/output port 相关Queue的信息。

  • 参数分析

    表 2‑6

    参数 描述
    dump Queues in input port(only dump enabled Input port) ModId 该input port所在的module id
    DevId 该input port所在的device id
    ChnId 该input port所在的channel id
    PassId 该input port所在的pass id
    InPortId 该input port的id
    UsrInjectQ_cnt 该InputPort 里的UsrInjectBufQueue里的buff的总的size
    BindInQ_cnt 该InputPort 里的UsrPipeInBufQueue里的buff的总的size
    InputPendingQueueSize 该InputPort 里的WorkingQueue里的buff的总的size
    dump Queues in output port(only dump enabled output port) ModId 该output port所在的module id
    DevId 该output port所在的device id
    ChnId 该output port所在的channel id
    PassId 该output port所在的pass id
    OutPortId 该output port的id
    DrvBkRefFifoQ_cnt 该OutputPort的DrvBkRefFifoQueue里的buffer数目
    DrvBkRefFifoQ_size 该OutputPort的DrvBkRefFifoQueue里的buffer的总size
    UsrGetFifoQ_cnt 该OutputPort的UsrGetFifoBufQueue里的buffer数目


2.5. debug_level

2.5.1. cat/echo

  • 调试信息

    # cat /proc/mi_modules/mi_sys/debug_level 2
    
  • 调试信息分析

    为了控制打印级别, 每个module(包括sys)都有各自的debug level,分别由/proc/mi_modules/mi_modulename/debug_level控制,其中disp,divp,rgn等为modulename。上面以/proc/mi_modules/mi_sys/debug_level为例。

    表 2‑7

    功能 打印警告级别
    命令 cat /proc/mi_modules/[ModuleName]/debug_level
    参数说明 [ModuleName] 模块的名字 mi_disp / mi_gfx / mi_rgn / mi_vdec / mi_vpe / mi_ai / mi_divp / mi_shadow / mi_vdisp / mi_ao / mi_hdmi / mi_sys / mi_venc / mi_bar / mi_vif
    举例 cat /proc/mi_modules/mi_sys/debug_level 2
    mi_sys 的警告级别为2(只显示waring的信息)

    表 2‑8

    功能 修改警告级别
    命令 echo [Level] > /proc/mi_modules/[ModuleName]/debug_level
    参数说明 [Level]
    0: 无Debug信息
    1: 只显示error的信息 (MI_DBG_ERR)
    2 :只显示waring的信息 (MI_DBG_WRN)
    3: 只显示 info 的信息 (MI_DBG_INFO)
    4: 显示所有信息
    [ModuleName] 模块的名字 mi_disp / mi_gfx / mi_rgn / mi_vdec / mi_vpe / mi_ai / mi_divp / mi_shadow / mi_vdisp / mi_ao / mi_hdmi / mi_sys / mi_venc / mi_bar / mi_vif
    举例 echo 1 > /proc/mi_modules/mi_vdec/debug_level
    将mi_vdec 模块的警告级别修改为只显示error的信息

2.6. miu_protect

2.6.1. cat

  • 调试信息

    cat /proc/mi_modules/mi_sys_mma/miu_protect
    
    =================== start miu_protect_info ================================
    
    kernel protect enabled
    
    LX :
    
    cpu_start_addr:0x20c00000 size:0xe300000
    
    miu_index miuBlockIndex start_cpu_bus_pa length
    
    0x0 0x00 0x20c00000 0x460000
    
    KernelProtect IP white list:
    
    clientId name
    
    43 MIU_CLIENT_MIPS_RW
    
    50 MIU_CLIENT_NAND_RW
    
    82 MIU_CLIENT_USB_UHC0_RW
    
    83 MIU_CLIENT_USB_UHC1_RW
    
    84 MIU_CLIENT_USB_UHC2_RW
    
    18 MIU_CLIENT_G3D_RW
    
    140 MIU_CLIENT_USB3_RW
    
    129 MIU_CLIENT_SDIO_RW
    
    165 MIU_CLIENT_SATA_RW
    
    133 MIU_CLIENT_USB_UHC3_RW
    
    225 MIU_CLIENT_USB30_1_RW
    
    226 MIU_CLIENT_USB30_2_RW
    
    5 MIU_CLIENT_BDMA_RW
    
    14 MIU_CLIENT_EMAC_RW
    
  • 调试信息分析

    该命令显示了miu protect相关的信息。

  • 参数分析

    表 2‑9

    参数 描述
    kernel protect 值是enabled或者disabled,表示是否有enable kernel protect,默认是需要enable kernel protect的。
    LX(以只有一个LX为例,LX表示linux 镜像对应的memory) cpu_start_addr 该LX对应的起始CPU addr。
    size 该LX对应的size。
    某个kernel protect 的range的相关信息 miu_index 编号。
    miuBlockIndex 总共4个miu范围的编号信息。
    start_cpu_bus_pa 该range的起始cpu bus addr。
    length 该range的length。
    KernelProtect IP white list clientId Miu protect的IP白名单里的IP的id(从未分group的角度看的全局id)。
    name 与clientId对应的该IP的实际的名字。


2.7. mma_help_name

2.7.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sys_mma/mma_heap_name0
    
    mma heap name heap_base_cpu_bus_addr length chunk_mgr_avail
    
    mma_heap_name0 25200000 9d00000 79c6000
    
    chunk_mgr info:
    
    pst_chunk_mgr offset length avail
    
    c3545618 0 9d00000 79c6000
    
    each chunk info:
    
    offset length used_flag task_name
    
    0 1000 1 insmod
    
    1000 100000 1 insmod
    
    101000 200000 1 proc_rtsp
    
    301000 3f5000 1 vdisp-dev0
    
    6f6000 3f5000 1 vdisp-dev0
    
    aeb000 3f5000 1 vdisp-dev0
    
    ee0000 1f5000 0 NA
    
    10d5000 1000 1 proc_rtsp
    
    10d6000 64000 1 proc_rtsp
    
    113a000 200000 1 proc_rtsp
    
    133a000 700000 1 proc_rtsp
    
    1a3a000 3f5000 0 NA
    
    1e2f000 3f5000 1 vdisp-dev0
    
    2224000 700000 1 proc_rtsp
    
    2924000 73dc000 NA
    
  • 调试信息分析

    该cat信息对应的是该mma heap的基本信息和当前的一些状态。

  • 参数分析

    表 2‑10

    参数 描述
    heap basic info mma heap name mma heap的name
    heap_base_cpu_bus_addr heap的起始cpu bus addr
    length heap的length
    heap里的剩余的未用的memory的总量 chunk_mgr_avail
    chunk_mgr info pst_chunk_mgr chunk mgr的指针的值
    offset chunk mgr的offset,由于整个mma heap做为一个chunk mgr,因此该值永远为0
    length chunk mgr的length,由于整个mma heap做为一个chunk mgr,因此该值永远为mma heap length
    avail chunk mgr(即heap)里的剩余的未用的memory的总量
    each chunk info (chunk mgr里各chunk的信息和使用情况) offset 该chunk在chunk mgr里的offset
    length 该chunk的length
    used_flag 该chunk是否allocated。是,该值为1;否, 该值为0
    task_name 如果used flag为1,则task_name存的task使用它;否则该值为无效值NA

2.7.2. echo

表 2‑11

功能 即dump 指定offset和length的data到指定的路径
命令 echo [Path] [Offset] [Length] > /proc/mi_modules/mi_sys_mma/mma_heap_name[Num]
参数说明 [Path] 文件要保存的路径,只需提供路径,系统会根据参数自动生成对应的文件名。
[Offset] 从该mma heap的offset开始dump data,必须4KB对齐。
[Length] 在该mma heap里dump的总数据量, 必须4KB对齐
[Num] mma head 对应的数字,目前 mma_heap_name0 可通过 cat /proc/cmdline 查看
举例 echo /mnt/ 0 4096 > /proc/mi_modules/mi_sys_mma/mma_heap_name0 在 /mnt下产生 mma__mma_heap_name0__0__4096.bin 文件

2.8. imi_mma_heap

2.8.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sys_mma/imi_mma_heap
    
    mma heap name heap_base_cpu_bus_addr length chunk_mgr_avail mmuEnable
    
    mma_heap_name0 22000000 1f80000 1c8a000 1
    
    chunk_mgr info:
    
    offset length avail
    
    0 10000000 fd0a000
    
    each chunk info:
    
    offset length used_flag task_name pid Module
    
    0 20000 0 NA -1 mi_sys
    
  • 调试信息分析

    该cat信息对应的是该mma heap的基本信息和当前的一些状态。

  • 参数分析

    表 2‑12

    参数 描述
    heap basic info mma heap name mma heap的name
    heap_base_cpu_bus_addr heap的起始cpu bus addr
    length heap的length
    chunk_mgr_avail heap里的剩余的未用的memory的总量
    mmuEnable Mma heap是否支持HW_MMU。该值为1表示支持,为0表示不支持
    chunk_mgr info offset chunk mgr的offset,由于整个mma heap做为一个chunk mgr,因此该值永远为0
    length chunk mgr的length,由于整个mma heap做为一个chunk mgr,因此该值永远为mma heap length
    avail chunk mgr(即heap)里的剩余的未用的memory的总量
    each chunk info (chunk mgr里各chunk的信息和使用情况) offset 该chunk在chunk mgr里的offset
    length 该chunk的length
    used_flag 该chunk是否allocated。是,该值为1;否, 该值为0
    task_name 如果used flag为1,则task_name存的task使用它;否则该值为无效值NA
    pid 该chunk所属的current->tgid
    Module 该chunk所属的模块


2.9. vb_pool_qlobal

2.9.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sys_mma/vb_pool_global
    

    图 2‑4

  • 调试信息分析

    如果通过MI_SYS_IMPL_ConfGloPubPools API或者MI_SYS_ConfGloPubPools API配置了global public pools, 则有/proc/mi_modules/mi_sys_mma/vb_pool_global文件;如果没有配置的话,那么没有该文件。

  • 调试信息分析

    表 2‑13

    参数 描述
    collection_size 该pools的allocator个数
    其中某个vbpool_allocator 的info each_allocation_size 该allocator里的allocation的size(同一个vbpool allocator的不同allocation的size是相同的,同一个pools里的不同的allocator的不同的allocations的size可能不同)
    total_allocation_count 该allocator里的allocations的数目
    total_not_used_allocation_count 该allocator里的allocations中未被使用的数目
    kern_map_ptr 该allocator的offset0位置的kernel space va;如果没有的话,该值为NULL
    指定的vbpool_allocator的某个vbpool_allocation的 info offset_in_vb_pool 该allocation在对应的allocator里的逻辑offset
    real_used_flag 是否被使用中,否的话则后续参数为无效值NA
    u64Pts 如果有效,该值为pts
    u64SidebandMsg 如果有效,该值为SidebandMsg
    bEndOfStream 如果有效,该值为是否是end stream的flag
    bUsrBuf 如果有效,该值为表示是否是UsrBuf
    eBufType 如果有效,该值表示buf的type


2.9.2. echo

表 2‑14

功能 即dump 指定offset和length的data到指定的路径
命令 echo [Path] [Offset] [Length] > /proc/mi_modules/mi_sys_mma/ vb_pool_global
参数说明 [Path] 文件要保存的路径,只需提供路径,系统会根据参数自动生成对应的文件名。
[Offset] 从该pools的哪个offset开始dump data,是pools的逻辑offset。
[Length] 在该pools里dump的总的数据量的大小。
举例 / # echo /mnt/ 0 1024 > /proc/mi_modules/mi_sys_mma/vb_pool_global 在 /mnt 下产生 vb_pool__global__0__1024.bin

2.10. vb_pool

2.10.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sys_mma/vb_pool_mi_divp0
    

    图 2‑5

  • 调试信息分析

    如果配置了某个device的vb pool, 则会生成/proc/mi_modules/mi_sys_mma/vb_pool_modnamedevid文件, (modname,如divp,vpe等,devid,如0,1等。)它对应的是该device, vb_pool_global对应全局共享的vb pool。

    上面以vb_pool_mi_divp0为例,cat命令显示各种信息,有且只有”echo path offset length >”来dump数据,这都和vb_pool_global类似。

2.10.2. echo

表 2‑15

功能 即dump 指定offset和length的data到指定的路径
命令 echo [Path] [Offset] [Length] > /proc/mi_modules/mi_sys_mma/[ModID]
参数说明 [Path] 文件要保存的路径,只需提供路径,系统会根据参数自动生成对应的文件名。
[Offset] 从该pools的哪个offset开始dump data,是pools的逻辑offset。
[Length] 在该pools里dump的总的数据量的大小。
[ModID] vb_pool的文件名, 如 vb_pool_mi_divp0
举例 echo /mnt/ 0 4096 >  /proc/mi_modules/mi_sys_mma/vb_pool_mi_divp0 在/mnt/下 产生vb_pool__mi_divp0__0__4096.bin

2.11. meta

2.11.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sys_mma/meta
    
    =================== start meta_info ================================
    
    basic info:
    
    total page count:16 each meta data size:256 total_count_with_metadatasize 256
    total_free_count_with_metadatasize:254
    
    meta info :
    
    ref_cnt=3
    
    each allocation info:
    
    offset_in_pool length phy_addr va_in_kern real_used_flag
    
    0x0 0x100 0x2336000 c1736000 0
    
    0x100 0x100 0x2336100 c1736100 0
    
    0x200 0x100 0x2336200 c1736200 0
    
    0x300 0x100 0x2336300 c1736300 0
    
    0x400 0x100 0x2336400 c1736400 0
    
    0x500 0x100 0x2336500 c1736500 0
    
    0x600 0x100 0x2336600 c1736600 0
    
    0x700 0x100 0x2336700 c1736700 0
    
    0x800 0x100 0x2336800 c1736800 0
    
    0x900 0x100 0x2336900 c1736900 0
    
    0xa00 0x100 0x2336a00 c1736a00 0
    
    ……
    
    =================== end meta_info ================================
    
  • 调试信息分析

    只要用过meta allocator(只有一个meta allocator),就会生成/proc/mi_modules/mi_sys_mma/meta,且其对应的memory就会完全alloc,等待被使用。

2.11.2. echo

表 2‑16

功能 即dump 指定offset和length的data到指定的路径
命令 echo [Path] [Offset] [Length] > /proc/mi_modules/mi_sys_mma/ vb_pool_global
参数说明 [Path] 文件要保存的路径,只需提供路径,系统会根据参数自动生成对应的文件名。
[Offset] 从该allocator的哪个offset开始dump data,是allocator的逻辑offset。
[Length]在该allocator里dump的总的数据量的大小。
举例 echo /mt 0 1024 > /proc/mi_modules/mi_sys_mma/meta 在 /mnt 下产生 meta__0__1024.bin

2.12. mi_modulenamedevid

2.12.1. cat

  • 调试信息

    cat /proc/mi_modules/mi_disp/mi_disp0
    

    图 2‑6

  • 调试信息分析

    cat操作的结果分为2部分:

    • 第一部分是MI_SYS提供的针对该device的通用的调试信息,从device、channel、input port、output port四个角度提供;

    • 第二部分是该device私有的信息。私有的信息各module的内容别处会阐述,这里SYS角度只阐述通用的信息。

    以cat /proc/mi_modules/mi_vdisp/mi_vdisp0为例,得到上面的结果。

  • 参数说明

    表 2‑17

    参数 描述
    Common info for device ChnNum 该device的总的channel 的数目
    EnChnNum 该device的enabled了的channel的数目
    InPortNum 该device的input port的数目
    OutPortNum 该device的output port的数目
    CollectSize 该dev对应的AllocatorCollection含有的allocator的数目总和
    Common info for channel(only dump enabled channel) ChnId Channel 的id值
    EnInPNum 该channel的enabled input port数量
    EnOutPNum 该channel的enabled output port数量
    MMAHeapName 如果设置了SetChnMMAConf,该值为对应的mma heap name;如果没有,该值为NULL
    Input port common info(only dump enabled Input port) ChnId 该input port所在的channel id
    PortId 该input port的id
    SrcFrmrate Src帧率
    DstFrmrate Dst帧率
    user_buf_quota 该InputPort的buff数目的Quota
    UsrInjectQ_cnt 该InputPort 里的UsrInjectBufQueue里的buff数目
    UsrInjectQ_size 该InputPort 里的UsrInjectBufQueue里的buff的总的size
    BindInQ_cnt 该InputPort 里的BindInputBufQueue里的buff数目
    BindInQ_size 该InputPort 里的BindInputBufQueue里的buff的总的size
    WorkingQ_cnt 该InputPort 里的WorkingQueue里的buff数目
    WorkingQ_size 该InputPort 里的WorkingQueue里的buff的总的size
    usrLockedInjectCnt 用户当前拿到了多少个buf
    Input port bind info(only dump enabled Input port) ChnId 该input port所在的channel id
    PortId 该input port的id
    bind_module_id 与该input port 进行了binded的output port所在的module的id
    bind_module_name 与该input port 进行了binded的output port所在的module的name
    bind_ChnId 与该input port 进行了binded的output port所在的channel的id
    bind_PortId 与该input port 进行了binded的output port的id
    Output port common info (only dump enabled Output port) ChnId 该output port所在的channel的id
    PortId 该output port的id
    BufCntQuota 该OutputPort的 buff数目的Quota
    usrLockedCnt 从UsrGetFifoBufQueue里用户实际拿走了多少个buffer
    totalOutPortInUsed totalOutputPortInUsedBuf数目
    DrvBkRefFifoQ_cnt 该OutputPort的DrvBkRefFifoQueue里的buffer数目
    DrvBkRefFifoQ_size 该OutputPort的DrvBkRefFifoQueue里的buffer的总size
    UsrGetFifoQ_cnt 该OutputPort的UsrGetFifoBufQueue里的buffer数目
    UsrGetFifoQ_size 该OutputPort的UsrGetFifoBufQueue里的buffer的总size
    WorkingQ_cnt 该OutputPort的WorkingQueue里的buffer数目
    WorkingQ_size 该OutputPort的WorkingQueue里的buffer的总size
    Output port BindPeerInputPortList info(only dump enabled Output port) ChnId 该output port所在的channel的id
    PortId 该output port的id
    bind_module_id 与该output port 进行了binded的input port list中的其中一个input port(以下简称该binded input port)所在的module的id
    bind_module_name 该binded input port所在的module的name
    bind_ChnId 该binded input port所在的channel id
    bind_PortId 该binded input port的id

2.12.2. echo

表 2‑18

功能 获得模块的help信息
命令 echo help > /proc/mi_modules/[ModName]/[ModID]
参数说明 [ModName] 模块的名字 mi_disp / mi_gfx / mi_rgn / mi_vdec / mi_vpe / mi_ai / mi_divp / mi_shadow / mi_vdisp / mi_ao / mi_hdmi / mi_sys / mi_venc / mi_bar / mi_vif
[ModID] 模块中对应的文件, 一般为Module name +数字
如mi_disp0 / mi_gfx0 / mi_rgn0
举例 echo help > /proc/mi_modules/mi_disp/mi_disp0 ; 得到mi_disp0 节点文件的帮助信息

表 2‑19

功能 Dump Port 的信息
命令 echo dump_buffer [ChnID] [PortType] [PortID] [QueueName][Path] [EndMethod] > /proc/mi_modules/[ModName]/[ModID]
参数说明 [ChnID] 通道的ID
[PortType] iport 或 oport 分别代表input port output port
[PortID] 该port的id
[QueueName] 如果是input port,值只能是"UsrInject" 或者"BindInput" , 如果是output port,值只能是"UsrGetFifo"
[Path] 数据保存的文件路径。注意是绝对路径,系统会根据参数自动生成文件名,不同的buffer保存在不同的文件
[EndMethod] dump buffer的结束方法。仅支持三类:
(1). "bufnum=xxx":dump指定数目的buffer
(2) "time=xxx"(unit: ms):dump过程持续time对应的时间
(3). "start/end" pair:用start开始dump,用end结束dump,使用时其他5个参数需完全一致。
[ModName] 模块的名字 mi_disp / mi_gfx / mi_rgn / mi_vdec / mi_vpe / mi_ai / mi_divp / mi_shadow / mi_vdisp / mi_ao / mi_hdmi / mi_sys / mi_venc / mi_bar / mi_vif
[ModID] 模块中对应的文件, 一般为Module name +数字
举例 echo dump_buffer 0 iport 0 BindInput /mnt bufnum=1 > /proc/mi_modules/mi_disp/mi_disp0; dump disp模块 iport 的数据

2.13. mi_dump_buffer_delay_worker

2.13.1. cat

  • 调试信息

    cat /proc/mi_modules/mi_dump_buffer_delay_worker
    
    delay_worker_id module_name force_stop dev_id chn_id port_type port_id
    
    0 mi_disp 0 0 0 inport 0
    
    Queue_name stored_dir dump_method dump_method_value
    
    BindInput /mnt bunfnum 2
    
  • 调试信息分析

    /proc/mi_modules/mi_dump_buffer_delay_worker是和mi_modulenamedevid相连的概念,采用delay worker的方式dump device Queue里的buffer,可以通过对mi_dump_buffer_delay_worker的cat操作查看还有哪些delay worker正在进行中,echo force_stop_dump delay_worker_id是强制结束指定的一个delay worker。

  • 参数说明

    表 2‑20

    参数 描述
    delay_worker_id 该delay worker 的id。如果delay worker完成的话,该id会回收,给后续其他的delay worker作为id使用。
    module_name 该delay worker对应的module的id。
    force_stop 该delay worker是否在强制结束阶段。1:是,0:否。
    dev_id 该delay worker对应的device id。
    chn_id 该delay worker对应的channel id。
    port_type 该delay worker对应的port的type,是input port,还是output port
    port_id 该delay worker对应的port的id
    Queue_name 该delay worker对应的Queue的name
    stored_dir 该delay worker对应的要dump的data所要存放的绝对路径(不含最终存放的文件名)
    dump_method 该delay worker对应的dump方法:bufnum,还是time,还是start
    dump_method_value Dump方法对应的值.

2.13.2. echo

表 2‑21

功能 强制结束delay worker
命令 echo force_stop_dump [WorkID] >/proc/mi_modules/mi_dump_buffer_delay_worker
参数说明 [WorkID] delay_work 的ID
举例 echo force_stop_dump 0 > /proc/mi_modules/mi_dump_buffer_delay_worker 强制停止 delay_work 0

2.14. module version

2.14.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_ai/module_version_file
    
    MStar Module version: project_commit.sdk_commit.build_time
    c1799df.fd2d52b.20171225180033
    
    # cat /proc/mi_modules/mi_global_info
    
    ..
    
    MStar Module version: project_commit.sdk_commit.build_time
    cb68bfd.44aca45.20171226100257
    
    ..
    
  • 调试信息分析

    xxxx_version_file提供了version信息,/proc/mi_modules/mi_global_info里我们也提供了version信息,不过其本质上指的是mi_sys模块的version信息, 上面只是以mi_vi 和 mi_global_info 为例子,每个模块都有自己对应的version file。

  • 参数说明

    表 2‑22

    参数 描述
    Version Info project_commit 模块编译ko时的整包project commit,如果单独替换ko,模块基于的commit有变化,ko version里得到的commit也会变更。
    sdk_commit 模块编译ko时的整包sdk commit,如果单独替换ko,模块基于的commit有变化,ko version里得到的commit也会变更。
    build_time 实际的build时间,精确到秒,即使make clean;make image整体来build的话,各个ko的时间也会有差别。


2.15. show threads

2.15.1. echo

  • 调试信息

    # echo show_threads > /proc/mi_modules/mi_sys/mi_sys0
    
    <3>printk in _MI_SYS_IMPL_Common_WriteProc
    
    <6>  task                PC stack   pid father
    
    <6>busybox         S    1      0 0x00000000
    
    <3>[<c01d3a6f>] (__schedule) from [<c01d3bb7>] (schedule+0x57/0x64)
    
    <3>[<c01d3bb7>] (schedule) from [<c001bfbd>] (do_wait+0xed/0x134)
    
    <3>[<c001bfbd>] (do_wait) from [<c001c367>] (SyS_wait4+0x69/0x7e)
    
    <3>[<c001c367>] (SyS_wait4) from [<c000d2a1>] (ret_fast_syscall+0x1/0x54)
    
    <6>kthreadd        S    2      0 0x00000000
    
    <3>[<c01d3a6f>] (__schedule) from [<c01d3bb7>] (schedule+0x57/0x64)
    
    <3>[<c01d3bb7>] (schedule) from [<c002b077>] (kthreadd+0x6d/0xf6)
    
    <3>[<c002b077>] (kthreadd) from [<c000d381>] (ret_from_fork+0x11/0x30)
    
    <6>ksoftirqd/0     S    3      2 0x00000000
    
    <3>[<c01d3a6f>] (__schedule) from [<c01d3bb7>] (schedule+0x57/0x64)
    
    <3>[<c01d3bb7>] (schedule) from [<c002c9af>] (smpboot_thread_fn+0xff/0x12c)
    
    <3>[<c002c9af>] (smpboot_thread_fn) from [<c002a911>] (kthread+0xa1/0xb4)
    
    <3>[<c002a911>] (kthread) from [<c000d381>] (ret_from_fork+0x11/0x30)
    
    ……
    
    ……
    
    <6>du              R  running task     3641   3640 0x00000000
    
    <3>[<c01d3a6f>] (__schedule) from [<c01d3c5b>] (preempt_schedule_common+0x1b/0x28)
    
    <3>[<c01d3c5b>] (preempt_schedule_common) from [<c00a0c7f>] (__find_get_block+0x159/0x176)
    
    <3>[<c00a0c7f>] (__find_get_block) from [<c00a1013>] (__getblk_gfp+0x11/0x1e2)
    
    <3>[<c00a1013>] (__getblk_gfp) from [<c00a1a4d>] (__bread_gfp+0x7/0x86)
    
  • 调试信息分析

    打印当前所有线程的call stack。

  • 参数说明

    表 2‑23

    参数 描述
    show_threads task 线程名p->comm
    state 线程运行状态
    pid 线程的pid
    father 线程的父进程id
    flags low level flags


2.16. debug_frc

2.16.1. echo

  • 调试信息

    # echo debug_frc on 12 0 0 0 0 "out" > /proc/mi_modules/mi_sys/mi_sys0
    
    printk in _MI_SYS_IMPL_Common_WriteProc
    
    Switch enable debug FRC, Modid:12, Dev:0, Chn:0, Pass:0, Port:0, BufType:1
    

    表 2‑24

    功能 打开对应port的frc debug。
    命令 Switch enable debug FRC:echo debug_frc on [Modid] [Devid] [Chnid] [Passid] [Portid] \"in/out\" > /proc/mi_modules/mi_sys/mi_sys0 Switch disable debug FRC:echo debug_frc \"off\" > /proc/mi_modules/mi_sys/mi_sys0
    参数说明 [Modid] : module id。
    [Devid] : device id。
    [Chnid] : channel id。
    [Passid] : pass id。
    [Portid] : port id。 in/out : input or output port。
    举例 echo debug_frc on 12 0 0 0 0 "out" > /proc/mi_modules/mi_sys/mi_sys0

2.17. mi_deadlock_info

2.17.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_deadlock_info
    
    thread_name:divp0_P0_MAIN pid:601
    
    owned_lock_name:mi_sys_global_devLastCmdqLock
    
    caller_func_name:mi_sys_internal_main_worker_thread
    
    caller_func_line:10157
    
  • 调试信息分析

    打印出可能造成deadlock的位置。

  • 参数说明

    表 2‑25

    参数 描述
    deadlock Info thread_name 造成deadlock的线程名字
    pid 线程的task pid
    owned_lock_name 锁的名字
    caller_func_name 拿锁的function name
    caller_func_line 拿锁的具体位置


3. AI


3.1. cat

  • 调试信息

    图3-1

  • 调试信息分析

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

  • 参数说明

    表 3‑1

    参数 描述
    AI Device Attr(AI 设备属性) AiDev AI设备的名字
    SamR Sample Rate(采样率):8000, 16000, 32000, 48000
    BitWidth 采样精度:16bit
    SoundMod 声音模式
    mono: 单声道
    stereo: 立体声
    queue: 所有声道都在一个buffer中
    PtNumPerFrm 每帧的采样点个数
    TotalReadFrmCnt 从mhal读取数据的次数
    ChnCnt 当前设备的通道数
    I2sMode I2S Rx的工作模式(仅设备为I2S Rx时有效)
    i2s-mas: I2S master
    i2s-sla: I2S slave
    tdm-mas: TDM master
    tdm-sla: TDM slave
    I2sMclk I2S Rx的Mclk的频率(仅设备为I2S Rx时有效)
    disable: 不使用Mclk
    其他值为当前的Mclk频率
    I2sFmt I2S Rx的数据格式(仅设备为I2S Rx时有效)
    I2S-MSB: I2S格式
    LEFT-MSB: I2S左对齐格式
    bI2sSync I2S RX和TX是否共用clock(仅设备为I2S Rx时有效)
    1: 4 wire mode,RX和TX共用clock
    0: 6 wire mode,RX和TX都有独立的clock
    TdmSlots I2S Rx的TDM slot数目(仅设备为I2S Rx为TDM模式时有效)
    I2sBitWidth I2S RX的位宽(仅设备为I2S Rx,且需要支持TDM模式的芯片有效)

    表 3‑2

    参数 描述
    AI Chn Status(AI 通道信息) AiDev AI设备的名字
    AiChn AI通道号
    bChnEnable AI通道是否使能
    1: Enable
    0: Disable
    Volume AI通道的增益设置:(前级增益,后级增益),仅Amic/Line有两级增益,分别对应模拟增益和数字增益;Dmic仅有数字增益,I2S Rx不支持增益设置。
    ReadFrmCnt AI通道获取到的帧数
    bMute AI通道是否使用软件静音功能

3.1.1. echo

表3-3

功能 动态启用/关闭AI设备dump pcm数据
命令 echo dump [Path] [ON/on/1, OFF/off/0] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [Path] dump文件保存的路径
[ON/on/1, OFF/off/0] 是否使能
[ID] AI设备号
举例 echo dump /tmp 1 > proc/mi_modules/mi_ao/mi_ai0

表3-4

功能 动态启用/关闭AI设备dump pcm数据dump DMA中的所有通道
命令 echo dump_mhal_chn [Path] [ON/on/1, OFF/off/0] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [Path] dump文件保存的路径
[ON/on/1, OFF/off/0] 是否使能
[ID] AI设备号
举例 echo dump_mhal_chn /tmp 1 > proc/mi_modules/mi_ao/mi_ai0

表3-5

功能 动态设定AI通道的增益
命令 echo set_ai_volume [ChnID] [Front Gain] [Rear Gain] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [ChnID] AI通道号
[Front Gain] 前级增益
[Rear Gain] 后级增益,没有后级增益的设备填0
举例 echo set_ai_volume 0 15 0 > proc/mi_modules/mi_ao/mi_ai0

4. AO


4.1. cat

  • 调试信息

    # cat proc/mi_modules/mi_ao/mi_ao0
    

    图4-1

  • 调试信息分析

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

  • 参数说明

    表 4‑1

    参数 描述
    AO Device Attr(AO设备属性) AoDev AO设备名字
    SamR Sample Rate(采样率):8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
    BitWidth 采样精度:16bit
    SondMod 声音模式
    mono:单声道
    stereo:立体声
    PtNumPerFrm 每帧的采样点个数
    VolumeDb AO设备的增益(左声道,右声道)
    bStartPcmOut 是否起播
    ChnCnt AO设备通道数
    TotalFrmCnt APP送给AO设备的帧数
    TotalSize APP送给AO设备的数据量
    I2sMode I2S Tx的工作模式(仅设备为I2S Tx时有效)
    i2s-mas: I2S master
    i2s-sla: I2S slave
    tdm-mas: TDM master
    tdm-sla: TDM slave
    I2sMclk I2S Tx的Mclk的频率(仅设备为I2S Tx时有效)
    disable: 不使用Mclk
    其他值为当前的Mclk频率
    I2sFmt I2S Tx的数据格式(仅设备为I2S Tx时有效)
    I2S-MSB: I2S格式
    LEFT-MSB: I2S左对齐格式
    bI2sSync I2S RX和TX是否共用clock(仅设备为I2S Tx时有效)
    1: 4 wire mode,RX和TX共用clock
    0: 6 wire mode,RX和TX都有独立的clock
    TdmSlots I2S Tx的TDM slot数目(仅设备为I2S Tx为TDM模式时有效)
    I2sBitWidth I2S TX的位宽(仅设备为I2S Tx,且需要支持TDM模式的芯片有效)

    表4-2

    参数 描述
    AO Chn Status
    (AO 通道信息)
    AoDev AO设备的名字
    AoChn AO通道号
    bMuteEnable AO通道是否使能软件静音
    1: Enable
    0: Disable
    RunTime AO通道的使能时间(秒)

    表4-3

    参数 描述
    AO Chn Usr Queue Status(AO 通道Queue信息) AoDev AO设备的名字
    AoChn AO通道号
    MaxSize AO通道Queue的大小(byte)
    RemainSize AO通道Queue中当前的数据量(byte)
    TotalSize APP往AO通道送的数据量(byte)
    RunTime AO通道Queue的已创建的时间(秒)


4.2. echo

表 4‑4

功能 动态启用/关闭AO设备静音模式
命令 echo set_ao_mute [ON/on/1, OFF/off/0] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [ON/on/1, OFF/off/0] 开启/关闭静音
[ID] 设备号
举例 echo set_ao_mute 1 > proc/mi_modules/mi_ao/mi_ao[ID]

表4-5

功能 动态修改AO通道volume大小
命令 echo set_ao_volume [ChnID] [-60 ~ 30dB] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [ChnID] AO设备物理通道号
[-60 ~ 30dB] AO设备物理通道的音量
举例 echo set_ao_volume 0 0 > proc/mi_modules/mi_ao/mi_ao0

表4-6

功能 动态修改AO通道回采数据的volume大小
命令 echo set_ao_src_volume [ChnID] [-60 ~ 30dB] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [ChnID] AO设备物理通道号
[-60 ~ 30dB] AO设备物理通道的回采音量
举例 echo set_ao_src_volume 0 0 > proc/mi_modules/mi_ao/mi_ao0

表4-7

功能 动态开启/关闭AO设备dump数据功能
命令 echo dump [Path] [ON/on/1, OFF/off/0] > proc/mi_modules/mi_ao/mi_ao[ID]
参数说明 [Path] dump数据的保存路径
[ON/on/1, OFF/off/0] 开启/关闭dump数据功能
举例 echo dump /tmp 1 > proc/mi_modules/mi_ao/mi_ao0

5. VIF 2.0


5.1. cat

  • 调试信息

    #cat /proc/mi_modules/mi_vif/mi_vif0
    

    图5-1

  • 调试信息分析

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

  • 参数说明

    表 5‑1

    参数 描述
    Dev Attr u32VifDevIdx Dev号
    Intf 输入数据的协议
    Work 工作模式,Runmode
    Clk 时钟边沿触发模式,与Intf有关系
    Hdr Hdr类型
    IsrCnt Frame start callback count
    AsyncCnt/EnqCnt/ BarCnt/CheckCnt/ DequCnt Callback接口执行次数

    表 5‑2

    参数 描述
    OutPort Attr Chn Channel id
    Pipe Pipe id
    Port Port id
    Cap_size 输入size
    Dest_size 输出size
    Sel 帧场选择
    Scan 扫描模式,P or I
    Fmt Out put pixel format
    Rate Frame rate type
    LineCnt Frame mode line count
    Atom 底层拿住buffer 数量
    MetaInfo Frame id
    Outcount 输出frame count
    Failcount 获取outputbuffer失败次数
    Fps Frame per second
    Recv_size Vif 硬件收到size
    Out_size Write dma size
    SubOut_size Write sub dma size
    ReadIdx/WriteIdx/ DequeIdx Read,write,deque的index
    FrameStartCnt 处理到第几frame
    FrameDoneCnt 处理完多少frame
    VbFail VbFail计数
    DropFrameCnt Drop frame的数量
    RingBufStatus Ring buf 状态


5.1.1. echo

表 5‑3

功能 Dump frame 到指定路径
命令 echo dump [chnid portid /path] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Portid: port id
Path: 路径存放
举例 echo dump 0 0 /tmp > /proc/mi_modules/mi_vif/mi_vif0

表 5‑4

功能 设置vif的atom 数量
命令 echo initatom [chnid InitAtom] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
InitAtom: Driver 最大持有buffer 数量
举例 echo initatom 0 2 > /proc/mi_modules/mi_vif/mi_vif0

表 5‑5

功能 设置timer
命令 echo usetimer [devid bUseTimer] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 devid: device id
bUseTimer: 使能timer
举例 echo usetimer 0 1 > /proc/mi_modules/mi_vif/mi_vif0

6. VIF 3.0


6.1. cat

  • 调试信息

    #cat /proc/mi_modules/mi_vif/mi_vif0
    

    图6-1

  • 调试信息分析

    记录当前VIF的使用状况以及Group/ Dev/ pipe/ outport属性,可以动态地获取到这些信息,方便调试和测试。

  • 参数说明

    表6-1

    参数 描述
    Group Attr GroupId Dev号
    Intf 输入数据的协议
    Work 工作模式
    Clkedge 时钟边沿触发模式,与Intf有关系
    Hdr Hdr类型

    表6-2

    参数 描述
    Dev Attr Dev Dev号
    IsrCnt 收到的中断总数
    incrop Input Corp Size
    infmt 输入数据格式
    AsyncCnt/EnqCnt/ BarCnt/CheckCnt/ DequCnt Callback接口执行次数

    表6-3

    参数 描述
    Pipe Attr PipeId Pipe号
    PortId Port号
    DevId Dev号
    Hdn Hdn使能
    crop Input Corp Size
    Dest Output Size
    Pixel Output Pixel
    wkmode Pipe工作模式
    Fbc Fbc使能

    表6-4

    参数 描述
    OutPort Attr Dev Channel id
    Port Pipe id
    Cap_size 输入size
    Dest_size 输出size
    Fmt Out put pixel format
    Rate Frame rate type
    Atom 底层拿住buffer 数量
    MetaInfo Frame id
    OutCount 输出frame count
    Addr0Cnt Frame地址0的次数
    FailCount 获取outputbuffer失败次数
    Fps Frame per second
    Recv_size Vif 硬件收到size
    Out_size Write dma size
    SubOut_size Write sub dma size
    ReadIdx/WriteIdx/ DequeIdx Read,write,deque的index
    FrameStartCnt 处理到第几frame
    FrameDoneCnt 处理完多少frame
    VbFail VbFail计数
    DropFrameCnt Drop frame的数量
    RingBufStatus Ring buf 状态


6.2. echo

# echo help >/proc/mi_modules/mi_vif/mi_vif0

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

表6-5

功能 Dump frame 到指定路径
命令 echo dump [chnid portid /path] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
Portid: port id
Path: 路径存放
举例 echo dump 0 0 /tmp > /proc/mi_modules/mi_vif/mi_vif0

表6-6

功能 设置vif的atom 数量
命令 echo initatom [chnid InitAtom] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 Chnid: channel id
InitAtom: Driver 最大持有buffer 数量
举例 echo initatom 0 2 > /proc/mi_modules/mi_vif/mi_vif0

表6-7

功能 设置timer
命令 echo usetimer [devid bUseTimer] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 devid: device id
bUseTimer: 使能timer
举例 echo usetimer 0 1 > /proc/mi_modules/mi_vif/mi_vif0

表6-8

功能 擦除vif缓存
命令 echo erasebuffer [devid portid bEraseBuffer] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 devid: device id
portid: port id
EraseBuffer: 使能擦除缓存
举例 echo erasebuffer 0 0 1 > /proc/mi_modules/mi_vif/mi_vif0

表6-9

功能 设置Dev Mask
命令 echo devmask [devid bMask] > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明 devid: device id
bmask: 使能mask
举例 echo devmask 0 1 > /proc/mi_modules/mi_vif/mi_vif0

7. VPE


7.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_vpe/mi_vpe0
    

    图 7‑1

    图 7‑2

  • 调试信息分析

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

  • 参数说明

    表 7‑1

    参数 描述
    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

    表 7‑2

    参数 描述
    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次数统计

    表 7‑3

    参数 描述
    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

7.2. echo


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

图 7‑3 Echo help 查看可用命令

表 7‑4

功能 打印所有channel 锁的使用function 和line和 time
命令 echo debugmutex > /proc/mi_modules/mi_vpe/mi_vpe0
参数说明
举例

表 7‑5

功能 设置每一个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

表 7‑6

功能 等待底层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

表 7‑7

功能 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

表 7‑8

功能 设置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,看是否可以恢复,或者掉帧的时候,加大是否可以满帧。

表 7‑9

功能 设置对应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 水平翻转

表 7‑10

功能 清除指定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

表 7‑11

功能 设置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

表 7‑12

功能 设置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

表 7‑13

功能 主动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

表 7‑14

功能 保护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

表 7‑15

功能 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

表 7‑16

功能 将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 拿不够快, 如果不再增加,说明是之前一次异常塞在里面一直没有消耗掉。

表 7‑17

功能 设置打印帧率,低于该值打印出来
命令 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打印出来

表 7‑18

功能 设置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

8. VENC


8.1. cat

  • 调试信息

    #cat /proc/mi_modules/mi_venc/mi_vencN   //Venc 3.0之前,N取0/1,0表示编码h264和h265的device0,1表示编码jpeg的device1;Venc 3.0,N取0/8,0表示编码h264/h265的device0,8表示编码jpeg的device8。
    

    图8-1

  • 调试信息分析

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

  • 参数说明

    表 8-1

    参数 描述
    Dev info DevId 设备号,作为Dev ID使用 (对映内核MI_VENC_Dev_e)
    IrqNum 中断号
    IsrTotalCnt 各种类型的irq总数
    IsrFrmDoneCnt frame done类型的irq总数
    IsrBufFullCnt buffer full类型的irq总数
    IsrSliceDoneCnt slice done的isr 总数
    IsrRingFullCnt ring buffer full类型的irq总数
    IsrTimeoutCnt 超时的isr总数
    IsrOtherCnt other类型的irq总数
    MaxTaskCnt 支持同时处理的最多task个数
    WorkingTaskCnt 正在处理的task个数
    SupportRing 是否支持HW RING
    SupportImi 是否支持HW REALTIME
    NeedPadding 是否需要MI SYS clear padding
    CmdqHandle cmdq handle value
    CmdqBufSize CmdqBufSize
    ResetTime 设备重启时间
    MaxW 设备使用最大分辨率的宽度
    MaxH 设备使用最大分辨率的高度
    AlignMaxw 对齐的最大宽度
    AlignMaxH 对齐的最大高度

    表 8-2

    参数 描述
    CHN info ChnId Channel ID 通道号
    bStart 是否已开始接收数据
    RefMemPA 底层driver要求的硬件物理位址
    RefMemSize 底层driver要求的硬件内存大小
    AlMemPA 底层driver要求的CPU物理位址
    AlMemVA 底层driver要求的CPU虚拟位址
    AlMemSize 底层driver要求的CPU内存大小
    State 底层处理状态:
    typedef enum
    {
    E_MI_VENC_BUFSTATE_IDLE = 0,
    E_MI_VENC_BUFSTATE_ENCODE,
    E_MI_VENC_BUFSTATE_WAIT_CMDQ,
    E_MI_VENC_BUFSTATE_CHECK,
    E_MI_VENC_BUFSTATE_DROP,
    E_MI_VENC_BUFSTATE_DROP_FORCE,
    E_MI_VENC_BUFSTATE_RECOVER,
    E_MI_VENC_BUFSTATE_BUF_FULL,
    E_MI_VENC_BUFSTATE_MAX
    } MI_VENC_BufferState_e;
    EnPred 代表base层的帧是否被base层其它帧用作参考
    base base层的周期,取值范围:(0, +∞)
    enhance enhance层的周期,取值范围:[0, 255]
    MaxStreamCnt 最大输出缓存张数
    FrameIdx 当前frame的序号:
    before venc3.0, 取值为:1,2,3,4
    after venc3.0,取值为:1,2,4
    Gardient 前端isp传递过来的梯度值
    Fps_1s 统计1s内的输出帧率
    kbps 统计1s内的输出码率
    Fps10s 统计10s内的输出帧率
    kbps 统计10s内的输出码率
    RingBufStartLine ring start line in ring mode
    RingBufHeight ring buffer height in ring mode
    QueryCnt APP调用MI_VENC_Query的次数
    GetStreamCnt APP调用MI_VENC_GetStream的次数
    RlsStreamCnt APP调用MI_VENC_ReleaseStream的次数
    PollReadyCnt APP调用select/poll成功的次数
    PollFailCnt APP调用select/poll失败的次数

    表 8-3

    参数 描述
    Inputport info ChnId Channel ID 通道号
    Width 画面宽度 (pixels)
    Height 画面高度 (pixels)
    SrcFrmRate 来源每秒帧数,通常以此作为rate control的参数
    MaxW 最大画面宽度 (pixels)
    MaxH 最大画面高度 (pixels)
    FrameCnt 已处理的帧数
    DropFrameCnt 已丢弃的帧数
    BlockCnt 已接收到的input picture总数,但当前还在处理上一张input picture从而需rewind

    表 8-4

    参数 描述
    Outputport info ChnId Channel ID 通道号
    CODEC 使用何种CODEC: H264,H265,MJPG Profile Profile值
    BufSize 由user设定的每帧最大缓存 (bytes)
    MinAllocSize 允许的最小的Size
    RefNum 最大参考帧数
    bByFrame 后级是否一次取走一帧?
    0:否,通常代表按包取数据
    1:是
    FrameCnt 已处理的帧数
    DropCnt 已经编码完但丢掉的帧总数
    ReEncCnt 重编码的帧总数
    RingUnreadCnt output pool里还未被取走的帧总数
    RingTotalCnt output pool里的帧总数
    UsrLockedCnt user已拿住的帧总数
    RateCtl Rate Control的算法:CBR, VBR, FixQp等
    GOP Group of Picture大小
    MaxBitrate CBR, VBR时,最大的目标码率。(bits per second)
    IPQPDelta 平均QP值与当前I帧QP的差值
    MaxQp VBR时,允许的最大QP
    MinQp VBR时,允许的最小QP
    MaxIQP VBR时,允许的最大的I帧QP
    MinIQP VBR时,允许的最小的I帧QP
    QpMap QPMAP模式下允许用户自由决定码率控制的策略
    AbsQp 使用绝对Qp的值
    ModeMap 0 decided byhw;1 force skip;2 force intra


8.2. echo

表 8-5

功能 dump input buffer
命令 echo dump_in [ChnId] [num] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[num] : 需要dump_in的总张数
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dump_in 0 10 /mnt > /proc/mi_modules/mi_venc/mi_venc0

表 8‑6

功能 dump output stream
命令 echo dump_out [ChnId] [num] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[num] : 需要dump_out的总张数
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dump_out 0 100 /mnt > /proc/mi_modules/mi_venc/mi_venc1

表 8‑7

功能 Show all used device info
命令 echo show all [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [Status] :0-1
0:Show only requested device info
1:Show all used device info. with created channels
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo show_all 1 > /proc/mi_modules/mi_venc/mi_venc0

表 8-8

功能 show output frame countparam
命令 echo frame_cnt [ChnId] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo frame_cnt 0 > /proc/mi_modules/mi_venc/mi_venc0

表 8-9

功能 Drop/Release the corresponding channel output task
命令 echo drop_out [ChnId] [Status]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号,为a时代表所有通道
[Status] :
r : release the corresponding channel output task
d : drop the corresponding channel output task
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo drop_out 0 d > /proc/mi_modules/mi_venc/mi_venc0
说明:drop channel 0 output task
echo drop_out 0 r > /proc/mi_modules/mi_venc/mi_venc0
说明:release channel 0 output task
echo drop_out a d > /proc/mi_modules/mi_venc/mi_venc0
说明:drop the whole channel output task
echo drop_out a r > /proc/mi_modules/mi_venc/mi_venc0
说明: release the whole channel output task

表 8-10

功能 Drop/Release the corresponding channel input task
命令 echo drop_in [ChnId] [Status]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号,为a时代表所有通道
[Status] :
r : release the corresponding channel input task
d : drop the corresponding channel input task
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo drop_in 0 d > /proc/mi_modules/mi_venc/mi_venc0
说明:drop channel 0 input task
echo drop_in 0 r > /proc/mi_modules/mi_venc/mi_venc0
说明:release channel 0 input task
echo drop_in a d > /proc/mi_modules/mi_venc/mi_venc0
说明:drop the whole channel input task
echo drop_in a r > /proc/mi_modules/mi_venc/mi_venc0
说明: release the whole channel input task

表 8-11

功能 Set debug level for super frame flow
命令 echo dbg_supfrm [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[debug_level]: 0.none 1.warn 2.info
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dbg_supfrm 0 2 > /proc/mi_modules/mi_venc/mi_venc0

表 8-12

功能 Set debug level for super frame lost flow
命令 echo dbg_frmlost [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[debug_level]: 0.none 1.warn 2.info
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dbg_frmlost 0 2 > /proc/mi_modules/mi_venc/mi_venc0

表 8-13

功能 Set debug level for get frame flow
命令 echo dbg_getout [ChnId] [debug_level]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[debug_level]: 0.none 1.warn 2.info
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dbg_getout 0 2 > /proc/mi_modules/mi_venc/mi_venc0

表 8-14

功能 dump dump customer qp map
命令 echo  dump_map $channel_num $dump_times $dump_path > /proc/mi_modules/mi_venc/mi_venc0
参数说明 [ChnId] :通道号
$channel_num : channel_num
$dump_times : dump 次数
$dump_path : dump目标路径
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
举例 echo dump_map 0 1 /mnt > /proc/mi_modules/mi_venc/mi_venc0

表 8-15

功能 Dump the corresponding phyAddr
命令 echo dump_dram [ChnId]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] :通道号
[DevID] :设备号[0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo dump_dram 0 /mnt > /proc/mi_modules/mi_venc/mi_venc0

表 8-16

功能 Enable to run shell scripts when hang
命令 echo run_sh [Status] [path]> /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [Status]: 1:enable 0:disable
[path]: 文件的路径
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo run_sh 1 /mnt/dump_mhal_venc_status_hook.sh > /proc/mi_modules/mi_venc/mi_venc0

表 8-17

功能 Enable to recover when hang
命令 echo en_recover [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [Status]: 1:enable 0:disable; 2:show
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo en_recover 0 > /proc/mi_modules/mi_venc/mi_venc0

表 8-18

功能 show output stream info
命令 echo show_out [ChnId] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] : 通道号
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo show_out 0 > /proc/mi_modules/mi_venc/mi_venc0

表 8-19

功能 dynamic debug sed roi info or sad info
命令 echo debug_sed [ChnId] [SedType] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] : 通道号
[SedType]:
0: show/disable ive detector algorithm roi info
1: show/disable cnn detector algorithm roi info
2: show/disable motion detector algorithm roi info
[Status] : ture:enable false:disable
[DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo debug_sed 0 0 true > /proc/mi_modules/mi_venc/mi_venc0
说明:show ive detector algorithm roi info echo debug_sed 0 1 true > /proc/mi_modules/mi_venc/mi_venc0
说明:show cnn detector algorithm roi info echo debug_sed 0 2 true > /proc/mi_modules/mi_venc/mi_venc0
说明:show motion detector algorithm roi info

表 8-20

功能 enable show sram info (m6 platform)
命令 echo debug_sram [ChnId] [Status] > /proc/mi_modules/mi_venc/mi_venc[DevID]
参数说明 [ChnId] : 通道号
[Status] : ture:enable false:disable [DevID] :设备号 [0~1]
0:表示编码h264和h265的device0
1: 表示编码jpeg的device1
举例 echo debug_sram 0 true > /proc/mi_modules/mi_venc/mi_venc0

9. DIVP


9.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_divp/mi_divp0
    

    图 9‑1

    图 9‑2

    图 9‑3

  • 调试信息分析

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

  • 参数说明

    表 9‑1

    参数 描述
    channelinfo ChnId 0~16; 16 Capture Channel 不对上层开放
    Status 0 INITED 1 CREATED 2 STARTED 3 STOPED 4 DISTROYED
    AttrChg 0:not change 1:changed
    FieldType0, 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 NUM
    ChnAttrPre channel上一次的设置属性
    ChnAttrOrg channel的原始设置属性
    CropX,CropY,CropW,CropH 上层设置的crop位置
    bHMirror, bVMirror 水平翻转使能; 垂直翻转使能
    0:disable ; 1:enable
    eDiType 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,

    表 9-2

    参数 描述
    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_MAX
    Stride Input的stride
    2Pmode b2P_Enable值,1表示enable,0表示disable
    EnqueueTask Enqueue的task数目
    GetInTaskCnt OnPreProcessInputTask的task数目

    表 9-3

    参数 描述
    Outputport Info ChnId Channel ID 0~16
    OutputChg Output 属性是否发生变化; 0: not change 1: changed
    Pixel 同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 //number
    PreWidth PreHeight 上一次设置的output port 宽和高
    Stride Output 的stride
    phyaddr Ouput buffer 的物理地址
    FinishTaskCnt Finish task的数目
    fps Output port的帧率

    表 9-4

    参数 描述
    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 = 0x00000010
    bind_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 收到的中断总数

9.2. Echo

表 9-5

功能 打印接收到每一帧的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。

表 9-6

功能 统计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: 间隔时间最小的三个值

表 9-7

功能 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的画面将会停住

表 9-8

功能 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

表 9-9

功能 打开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

10. VDISP


10.1. cat

  • 调试信息

    # cat proc/mi_modules/mi_vdisp/mi_vdisp0
    
    ============================Private Vdisp0 Info ===============================
    
    DevStatus
    
    Start
    
    ------------------------------------------------------- Input Port Info
    ---------------------------------------------
    
    PortID PortStatus ChnX ChnY ChnW ChnH IsFreeRun TryOk RecvOk
    
    0 Enabled 0 0 960 540 1 245356299 313332
    
    1 Enabled 960 0 960 540 1 355670297 313332
    
    2 Enabled 0 540 960 540 1 578760014 313331
    
    3 Enabled 960 540 960 540 1 757579130 313330
    
    ------------------------------------------------------ Output Port Info
    -------------------------------------------------
    
    Inited FrmInterval BgColor PixelFmt FrmRate Width Height SendOk
    
    1 33333 8388736 0 30 1920 1080 471418
    
  • 调试信息分析

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

  • 参数说明

    表 10‑1

    参数 描述
    device info DevStatus Vdisp设备的工作状态; Uninit:未初始化 Init:初始化 Start:运行状态 Stop:停止状态

    表 10‑2

    参数 描述
    layer info PortID Inport ID ; 取值范围:[0~16],16为overlay通道,即PIP通道。
    PortStatus Port口状态; Uninit:inport未初始化 Init:inport已初始化 Enabled:inport已经使能 Disabled:inport已经禁用
    ChnX 输入inport的起始坐标X地址 ; 取值范围:[0~4094],需要根据chip的align对齐
    ChnY 输入inport的起始坐标Y地址 ; 取值范围:[0~2159]
    ChnW 输入inport的图像宽度,需要根据chip的align对齐
    取值范围:[0~4096]
    ChnH 输入inport的图像高度; 取值范围:[0~4096]
    IsFreeRun 是否不做帧率控制; 0:按pts控制播放; 1:自由播放
    TryOk 尝试取前级绑定端口的数据次数
    RecvOk 从前级绑定端口成功拿到数据的次数

    表 10‑3

    参数 描述
    Output port info Inited 是否有初始化Output Port ; 0:未初始化 1:已初始化
    FrmInterval 出帧时间间隔,单位US
    BgColor 背景色,此处打印的是10进制
    PixelFmt 色彩空间; 取值范围[0~E_MI_SYS_PIXEL_FRAME_FORMAT_MAX-1] 0-YUYV422,9-YUVSP420
    FrmRate 输出帧率
    Width 图像输出宽度; 取值范围[0~4096],需要根据chip的align对齐
    Height 图像输出高度 ; 取值范围:[0~2160],需要根据chip的align对齐
    SendOk 成功推往后级的帧数统计

11. DISP


11.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_disp/mi_disp0
    
    ============================== disp dev info ============================
    DevStatus         IrqNum         IrqCnt        BgColor
    1             31              0         800080
    ================================ disp layer info ===========================
    LayerId          BindedDevID           LayerWidth           LayerHeight
        0                    0                    0                     0
    LayerId          LayDispWidth        LayDispHeight         Toleration           rotatemode
        0              1024                  600                 0                 NONE
    --------------------------------- disp layer[0] port Info ---------------------------------
    PortId    enable    CurStatus     src_w     src_h    crop_x    crop_y    crop_w    crop_h    show_x 
    0         1          0         1024      600       0         0        1024      600        0
    show_y    show_w    show_h
    0        1024       600
    PortId     RecvBufCnt      RecvBuf_W      RecvBuf_H      Content_W      Content_H  RecvBufStride
    0           1661           1024            600           1024            600           1024
    PixFmt              syncmode
    semiplanar_420           Invalid
    PortId     OnScreenTask      FiredTask    LastDropTask    DropTaskCnt    StepTaskCnt   bClearAllTask
    0           (null)          c2639db8       (null)              0              0              0
    fps
    0
    
  • 调试信息分析

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

  • 参数说明

    表 11‑1

    参数 描述
    device info DevStatus 使能或者禁用; 0:禁用 1:使能
    IrqNum 中断号
    IrqCnt 中断发生次数
    BgColor 背景色(RGB format)

    表 11-2

    参数 描述
    layer info LayerId layer ID 取值范围:[0~1]
    BindedDevID 绑定的device ID; 取值范围:[0~1]
    LayerWidth Layer的宽
    LayerHeight Layer的高
    LayDispWidth Layer显示的宽
    LayDispHeight Layer显示的高
    Toleration PTS误差允许阈值,单位毫秒
    rotatemode 旋转模式 取值范围: [E_MI_DISP_ROTATE_NONE~E_MI_DISP_ROTATE_270]

    表10-3

    参数 描述
    port info port info PortId port ID 取值范围:[0-15]
    enable 使能或者禁用; 0:禁用 1:使能
    CurStatus port状态 取值范围:[E_MI_LAYER_INPUTPORT_STATUS_INVALID~ E_MI_LAYER_INPUTPORT_STATUS_HIDE]
    src_w 原始图像宽度
    src_h 原始图像高度
    crop_x 局部放大区域起始横坐标
    crop_y 局部放大区域起始纵坐标
    crop_w 局部放大区域宽度
    crop_h 局部放大区域高度
    show_x 该port在layer上的起始横坐标
    show_y 该port在layer上的起始纵坐标
    show_w 该port显示的宽度
    show_h 该port显示的高度
    RecvBufCnt 当前接收到buff的总量
    RecvBuf_W 输入的图像宽
    RecvBuf_H 输入的图像高
    Content_W 输入图像有效宽
    Content_H 输入图像有效高
    RecvBufStride 输入图像的lineoffset
    PixFmt 输入图像像素格式
    syncmode Check PTS/Free Run ; 0:无效; 1:Check PTS; 2:Free Run
    OnScreenTask 当前正在显示的Task
    FiredTask 即将要显示的Task
    LastDropTask 刚释放掉的Task
    DropTaskCnt 丢弃掉的Task数量
    StepTaskCnt 步进处理的Task数量
    bClearAllTask 是否丢弃所有Task; 0:不丢弃; 1:丢弃所有Task
    fps 帧率

12. HDMI


12.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_hdmi/mi_hdmi0
    
    --------------------------------------- HDMI0 Dev Info
    -------------------------------------
    
    InitFlag AvMute PowerOn
    
    Y N Y
    
    EnableVideo TimingType OutputMode ColorType DeepColorMode
    
    1 9 0 2 4
    
    EnableAudio IsMultiChannel BitDepth CodeType SampleRate
    
    1 0 16 0 3
    
  • 调试信息分析

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

  • 参数说明

    表 12‑1

    参数 描述
    device info InitFlag HDMI模块是否初始化; Y:已初始化; N:未初始化
    AvMute 音视频是否处于MUTE状态; Y:被MUTE; N:未被MUTE
    PowerOn HDMI是否使能电源管理; Y:是; N:否
    EnableVideo 是否使能视频; 0:未使能; 1:使能
    TimingType 当前HDMI的输出分辨率; 取值范围[0~ E_MI_HDMI_TIMING_MAX]
    OutputMode HDMI输出模式; 0:HDMI模式; 2:DVI模式; ⅓为HDCP模式,当前暂不支持
    ColorType 颜色空间; 0:RGB44; 1:YUV422; 2:YUV444; 3:YUV420
    DeepColorMode 色彩位深; 0:8Bit; 1:10Bit; 2:12Bit; 3:16Bit
    EnableAudio 是否使能音频; 0:未使能; 1:使能
    IsMultiChannel 是否多通道; 0:否; 1:是
    BitDepth 音频采样位深; 8:8Bit; 16:16Bit; 32:32Bit
    CodeType 音频输出的压缩格式; 0:PCM; 1:非PCM
    SampleRate 音频输出采样率; 0:未知; 1:32K; 2:44K; 3:48K; 4:88K; 5:96K; 6:176K; 7:192K

13. FB


13.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_fb0
    
    ############################ 13.1.1. OnDumpOSDAttr####################################
    Framebuffer id = MStar FB0
    xres=1280, yres=720
    xres_virtual=1280, yres_virtual=1440
    xoffset=0,yoffset=0
    fix.line_length=0xa00 Bytes
    fix.smem_start=0xf800000
    Memory Size=0x400000 Bytes
    Gop ID=0
    Gwin ID=0
    Open Count=1
    Visible State=0
    MIU Sel=0
    ColorSpace=YUV
    ColorFomrmat=ARGB1555
    StretchWindow Pos[0,0]
    StretchWindow Src[1280,720],StretchWindow Dst[1920,1080]
    Gwin Pos[0,0]
    Gwin Size[1280,720]
    Gwin PhyAddr=0x0
    ColorKey Enable=0
    ColorKey Val=[0,0,0]
    Enable Alpha Blend=1
    Enalbe Multi Alpha=0
    Global Alpha Val=0x0
    Alpha0=0x0,Alpha1=0x0,(Only for ARGB1555)
    GOP Hstart=192
    Current TimingWidth=1920,TimingWidth=1080,hstar=192
    ################################## 13.1.1.1. end##########################################
    
    #########################OnDumpHwcursorAttr####################################
    Cursor Gop ID=4
    Cursor Gwin ID=6
    Cursor MIU Sel=0
    Cursor PhyAddr=0x166000
    Cursor ColorFmt=ARGB8888
    Cursor Icon Width=44,Height=56
    Cursor HotSpot[18,9]
    Cursor request pos[712,207]
    Cursor Visible=1
    Cursor Gwin Pos[694,198]
    Cursor Gwin Size[44,56]
    Cursor Gwin Pitch=0x200 Bytes
    Curosr StretchWindow pos[0,0]
    Cursor StretchWin Src[1280,720],Dst[1920,1080]
    Cursor ColorKey Enable=0
    Cursor ColorKey Value=[0xff,0xff,0xff]
    ############################OnDumpHwcursorAttr#################################
    
  • 调试信息分析

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

  • 参数说明

    表 13‑1

    参数 描述
    OSD info Framebuffer id Framebuffer设备ID
    xres 可见分辨率宽度
    yres 可见分辨率高度
    xres_virtual 虚拟分辨率的宽度
    yres_virtual 虚拟分辨率的高度
    xoffset 可见分辨率到虚拟分辨率的x偏移量
    yoffset 可见分辨率到虚拟分辨率的y偏移量
    fix.line_length 虚拟分辨率每行的字节数
    fix.smem_start 帧缓冲内起始地址
    Memory Size 帧缓冲内存长度,单位字节数

    表 13‑2

    参数 描述
    OSD device info Gop ID 图层硬件ID
    Gwin ID 图层硬件显示窗口ID
    Open Count 该图形层打开次数。在用户调用open()时增1;调用close()时减1
    Visible State 该图层显示状态。 取值:{1表示可见,0表示不可见} 用户显示调用FBIOSET_SHOW设置图层可见状态。
    MIU Sel 保存帧缓冲数据的物理内存编号。 对于MSR620设备该值为0
    ColorSpace 该图形层输出的颜色空间。 取值:{YUV表示输出YUV color space;RGB表示输出RGB color space }。默认为YUV
    ColorFomrmat 图形层格式 取值:{ARGB1555,ARGB4444,ARGB8888,RGB565}。 用户设置可变屏幕信息中的格式项后更新
    StretchWindow Pos 图形层在显示设备上的起始位置。 单位:像素 默认为0,用户可调用FBIOSET_SCREEN_LOCATION设置
    StretchWindow Src 图形层原始分辨率的宽度和高度。 单位:像素 通过硬件放大功能放大到当前timing。用户设置可变屏幕信息中的可见分辨率后更新
    StretchWindow Dst 图形层在显示设备上的宽度和高度。 默认设置为输出timing大小。可以通过FBIOSET_SCREEN_LOCATION设置
    Gwin Pos 图形层显示窗口的起始位置 单位:像素 对于OSD图层来说,该值总是为(0,0)
    Gwin Size 图形层显示窗口的宽度、高度。 单位:像素 对于OSD图层来说,该值总是被设置为可见分辨率的宽度、高度。用户设置可变屏幕信息中的可见分辨率后更新。
    Gwin PhyAddr 图形层当前显示数据的物理地址
    ColorKey Enable 图形层ColorKey是否使能 取值:{0表示Disable ColorKey; 1表示Enable ColorKey}用户设置可通过FBIOSET_COLORKEY设置
    ColorKey Val 图形层ColorKey的RED,GREEN,BLUE通道数值 取值:每个通道的取值范围从0-255。ColorKey val的数值用RGB888格式表示 用户可通过FBIOSET_COLORKEY设置后更新
    Enable Alpha Blend 图形层alpha是否使能。 取值:{0表示否,1表示是},默认为1。 用户可通过FBIOSET_GLOBAL_ALPHA设置后更新。 该项关闭,则像素alpha配置不生效。该项开启且Enable Multi Alpha关闭,仅像素alpha生效(对于ARGB1555格式,Alpha bit为1的像素使用Global Alpha作为像素alpha,Alpha bit为0的像素使用0xff作为像素alpha)。当该项目开启且Enable Multi Alpha生效时,则像素alpha和Global Alpha都生效
    Enable Multi Alpha 全局alpha是否生效开关 取值{0是,1否}默认值为0 Enable Multi Alpha使能,Global Alpha便生效
    Global Alpha Val 全局Alpha
    Alpha0 ARGB1555格式时,当最高位为0时,选择Alpha0作为Alpha混合的Alpha数值 取值: 0~255默认为0
    Alpha1 ARGB1555格式时,当最高位为1时,选择Alpha1作为Alpha混合的Alpha数值 取值: 0~255默认为0
    GOP Hstart 图层硬件向显示窗口的偏移。该值和当前输出timing相关,当输出timing发生变化时,通过FBIOSET_DISPLAYLAYER_ATTRIBUTES并将输入参数MI_FB_DisplayLayerAttr_s的u32SetAttrMask数值包含E_MI_FB_DISPLAYLAYER_ATTR_MASK_SCREEN_SIZE mask位来通知图层驱动。图层驱动会根据当前timing设置相应的hstart数值
    Current TimingWidth, 当前输出timing的宽度、高度以及当前timing下应该给图形层硬件设置的相对于显示窗口的偏移。 该项与GOP Hstart配合使用,用于检查设置给硬件图层的hstart数值是否和当前timing一致。
    Current TimingHeight,
    hstar

    表 13‑3

    参数 描述
    Hwcursor info Cursor Gop ID 鼠标图层硬件ID
    Cursor Gwin ID 鼠标图层硬件显示窗口ID
    Cursor MIU Sel 用于保存鼠标图标数据的物理内存编号。 对于MSR620设备该值为0
    Cursor PhyAddr 鼠标层当前显示数据的物理地址
    Cursor ColorFmt 鼠标图层格式 值:{ARGB1555,ARGB4444,ARGB8888,RGB565}。 用户可通过FBIOSET_CURSOR_ATTRIBUTE 设置
    Cursor Icon Width 鼠标图标的宽度、高度。 单位:像素 用户可通过FBIOSET_CURSOR_ATTRIBUTE设置
    Cursor HotSpot 鼠标图标的热点信息 单位:像素 热点信息通常和鼠标图标相关,用户可通过FBIOSET_CURSOR_ATTRIBUTE设置
    Cursor request pos 鼠标图标的位置信息 单位: 像素 用户通过FBIOSET_CURSOR_ATTRIBUTE设置
    Cursor Visible 鼠标图层是否可见 取值:{0,表示不可见,1表示可见} 用户通过FBIOSET_CURSOR_ATTRIBUTE设置
    Cursor Gwin Pos 鼠标图层显示窗口的起始位置 单位:像素
    Cursor Gwin Pitch 鼠标图层每行的字节数。 对于鼠标图层来说,该值固定为0x200
    Curosr StretchWindow pos 鼠标图层在显示设备上的起始位置。 单位:像素
    Cursor StretchWin Src 鼠标图层原始大小 单位:像素。该值通常和OSD的显示分辨率一致。
    Cursor StretchWin Dst 鼠标图层在显示设备上的宽度、高度 该值和输出timing一致。
    Cursor ColorKey Enable 鼠标图层ColorKey是否使能 取值:{0表示Disable ColorKey; 1表示Enable ColorKey}。 用户通过FBIOSET_CURSOR_ATTRIBUTE设置
    Cursor ColorKey Value 鼠标图层ColorKey的RED,GREEN,BLUE通道数值 取值:每个通道的取值范围从0-255。ColorKey val的数值用RGB888格式表示 用户可通过FBIOSET_CURSOR_ATTRIBUTE设置后更新

13.2. echo

表 13‑4

功能 打开或关闭指定的图层
命令 echo GUI_SHOW [LayerID] [Status] > /proc/mi_modules/mi_fb0
参数说明 [LayerID] 图层号
[Status] on: 打开; off: 关闭
举例 echo GUI_SHOW 0 on > /proc/mi_modules/mi_fb0 显示图层fb0 echo GUI_SHOW 0 off > /proc/mi_modules/mi_fb0 显示图层fb0

表 13‑5

功能 打开或关闭硬件鼠标
命令 echo CURSOR_SHOW [Status] > /proc/mi_modules/mi_fb0
参数说明 [Status] on: 打开; off: 关闭
举例 echo CURSOR_SHOW on > /proc/mi_modules/mi_fb0 显示鼠标图标 echo CURSOR_SHOW off > /proc/mi_modules/mi_fb0 关闭鼠标图标

表 13‑6

功能 为指定的图层设置Colorkey
命令 echo GUI_SET_CLRKEY [LayerID] [Red] [Green] [Blue] > /proc/mi_modules/mi_fb0
参数说明 [LayerID] 图层号
[Red] 红色分量 以16进制,ARGB888 格式表示
[Green] 绿色分量 以16进制,ARGB888 格式表示
[Blue] 蓝色分量 以16进制,ARGB888 格式表示
举例 echo GUI_SET_CLRKEY 0 ff 00 00 > /proc/mi_modules/mi_fb0 设置fb0的Colorkey为红色

表 13‑7

功能 Dump当前正在显示的鼠标图标
命令 echo CURSOR_DUMP [Path] >/proc/mi_modules/mi_fb0
参数说明 [Path] dump 的路径
举例 echo CURSOR_DUMP /mnt > /proc/mi_modules/mi_fb0 dump cursor Icon到/mnt路径,文件名为CursorData.raw,用7yuv打开,宽高设置为128,128,格式按照cursor icon的格式设置即可显示Rawdata

表 13‑8

功能 分别为ARGB1555格式的alpha bit0,alpha bi1设置pixel alpha数值。因为目前msr620不支持这个feature,暂时未实现
命令 echo GUI_SETALPHA_ARGB1555 [LayerID] [Alpha0] [Alpha1]> /proc/mi_modules/mi_fb0
参数说明 [LayerID] 图层号
[Alpha0] alpha0 的数值
[Alpha1] alpha1 的数值
举例

14. GFX


14.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_gfx/mi_gfx0
    

    图 14‑1

  • 调试信息分析

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

  • 参数说明

    表 14‑1

    参数 描述
    device info InitCnt 设备被Open的次数,由于GFX会有多个模块进行调用,并且不能确定是哪一个module会先调用GFX的初始化,所以设备允许多次Open,会记录Open次数来在Close的时候做对应的计数判断是否需要真的Close Device。
    ARGB1555AlphaThreshold ARGB8888转ARGB1555时,GFX内部的alpha判定阈值,如大于N则alpha为1,反之alpha为0.
    ARGB1555AlphaValue ARGB1555转ARGB8888时,GFX将ARGB1555 alpha bit 为1的像素的alpha转为ARGB1555AlphaValue
    ScalingCoefficient 图像几何中心偏移= ScalingCoefficient/1000
    QuickFillColorFormt 最后一次做QuickFill的颜色格式
    取值参考:GFX_Buffer_Format
    BitblitSrcColorFormt 最后一次做BitBlit的Src Surface的颜色格式
    BitblitDstColorFormt 最后一次做BitBlit的Dst Surface的颜色格式


15. REGION


15.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_rgn0
    

    图 15‑1

    图 15‑2

    图 15‑3

  • 调试信息分析

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

  • 参数说明

    表 15‑1

    参数 描述
    Region capability Region handle 创建region的最大数量为1024个,句柄取值为[0~1023]
    channel 最大通道数量为64个,通道取值为[0~63]
    Osd attach 每个输出端口每个通道能绑定的Osd数量上限为128个
    Cover attach 每个输出端口每个通道能绑定的Cover数量上限为4个
    Overlay Supported Format Osd支持的颜色格式:
    0: ARGB1555,宽度按2个像素对齐
    1: ARGB4444,宽度按2个像素对齐
    2: I2,宽度按4个像素对齐
    3: I4,宽度按2个像素对齐
    4:I8
    5:RGB565
    6:ARGB8888
    Osd support Width : Osd宽取值范围为1 ~ 4096
    Height :Osd高取值范围为1~ 4096
    Color key value:系统默认的colorkey的值,除了index的格式,不管osd的format是多少,只要内存中的值是此就表示colorkey
    X pos overlap: 支持多个osd在x方向上重叠。
    Overlap:osd是否支持重叠
    HW mode:Osd的frontbuff数量,目前设置为8
    Cover support Width :Osd宽取值范围为1 ~ 8192
    Height :Osd高取值范围为1~ 8192
    Overlap:Cover是否支持重叠

    表 15‑2

    参数 描述
    Region attr Handle 句柄
    Type 类型,Osd或是Cover
    Width
    Height
    Stride 宽补齐
    Format 颜色格式[0-6],ARGB1555,ARGB4444,I2,I4,I8,RGB565,ARGB8888
    VirAddr Canvas的虚拟地址
    PhyAddr Canvas的物理地址

    表 15‑3

    参数 描述
    Channel port Info Frontbuffer info Index Frontbuffer索引
    bShow 是否显示
    OffsetX X偏移
    OffsetY Y偏移
    Width
    Height
    Stride 宽补齐
    Format 颜色格式
    VirAddr 虚拟地址
    PhyAddr 物理地址
    AlphaMode Alpha模式,指Pixel alpha还是constant alpha
    AlphaVal 如果是constant alpha,alpha的值
    BgAlpha 如果是pixle alpha,argb1555的背景alpha
    FgAlpha 如果是pixle alpha,argb1555的前景alpha
    BufCnt 通道上front buffer的个数
    OsdCnt 通道上一个front buffer由多少个back buffer拼接而成
    Attach info Handle 绑定Region句柄
    Type 绑定Region类型
    bShow 是否显示
    Layer 绑定Cover的层级
    Color 绑定Cover的颜色值
    Width
    Height
    Stride 宽补齐
    PositionX X偏移
    PositionY Y偏移
    Format 绑定Osd的颜色格式
    VirAddr 虚拟地址
    PhyAddr 物理地址
    AlphaVal 如果是constant alpha,alpha的值
    BgAlpha 如果是pixle alpha,argb1555的背景alpha
    FgAlpha 如果是pixle alpha,argb1555的前景alpha

    表 15‑4

    参数 描述
    Buffer info kmalloc Region模块内部申请内存字节数。
    mma alloc Region模块通过Sys模块申请内存字节数。

15.2. echo

表 15‑5

功能 Dump指定Region的buffer
命令 echo dumpRgnBuf [Handle] [Path] > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明 [Handle] region句柄
[Path] 保存dump数据的路径。保存内容为region的canvas内容
举例 echo dumpRgnBuf 0 /mnt > /proc/mi_modules/mi_rgn0 在/mnt 下产生文件 Rgn0_canvasInfo_fmt0_64X48 表示dump句柄为0,颜色格式为ARGB1555,Stride为64,高为48的region的canvas数据 文件格式为Rgn[Handle]canvasInfo_fmt[Format][Stride]X[Height] [Handle]: region句柄。 [Format]:颜色格式,ARGB1555为0,ARGB4444为1,I2为2,I4为3。 [Stride]:宽补齐 [Height]:高

表 15‑6

功能 Dump指定channel和port的frontbuffer
命令 echo dumpFrontBuf [ModId] [DevId] [ChnID] [PortID] [Path] > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明 [ModId] 模块号,参考mi_common_datatype.h中的模块定义枚举值
[DevId] 模块的设备号
[ChnID] 通道号 [0 ~ 63]
[PortID] 端口号 [0~3]
[Path] 保存dump数据的路径。会根据当前实际使用的frontbuffer数量生成0 ~ 2个文件
举例 echo dumpFrontBuf 34 1 0 0 /mnt > /proc/mi_modules/mi_rgn/mi_rgn0
在/mnt下产生 Mod34_Dev1_Chn0_Port0_frontbuf0_fmt0_64X48, 表示dump通道为0,输出端口为34号端口,索引为0的frontbuffer的数据,颜色格式为ARGB1555,Stride为64,高为48
文件格式
Mod[ModId]Dev[DevId]_Chn[Channel]_Port[Port]_frontbuf
[Index]_fmt[Format]
[Stride]X[Height]
[ModId] 输出模块号。
[DevId] 输出模块的设备号
[Channel] 通道号。
[Port] 输出端口。
[Index] frontbuffer索引号。
[Format] 颜色格式,ARGB1555为0,ARGB4444为1,I2为2,I4为3。
[Stride] 宽补齐
[Height] 高

表 15‑7

功能 获取region能力级信息
命令 echo getcap > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明
举例

表 15‑8

功能 获取已创建region信息
命令 echo dumprgn > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明
举例

表 15‑9

功能 获取channel和port的信息
命令 echo dumpchport > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明
举例

表 15‑10

功能 获取内存使用信息
命令 echo bufcnt > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明
举例

表 15‑11

功能 开关某个gwin
命令 echo setDispOnOff [ModId] [DevId] [ChnID] [PortID] [Idx] [OnOff] > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明 [ModId] 模块号,参考mi_common_datatype.h中的模块定义枚举值。
[DevId] 模块的设备号
[ChnID] 通道号 [0 ~ 63]
[PortID] 端口号 [0~3]
[Idx] 当前通道上osd显示gwin的序号。
[OnOff] 是否开关,0表示关、1表示开。
举例 echo setDispOnOff 34 1 0 0 0 0 > /proc/mi_modules/mi_rgn/mi_rgn0

表 15‑12

功能 强制更新osd的back buffer
命令 echo forceUpdate [handle] > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明 [handle] Osd hander。
举例 echo forceUpdate 0 > /proc/mi_modules/mi_rgn/mi_rgn0

表 15‑13

功能 设置显示front buffer的个数
命令 echo setFbListMaxCnt [ModId] [DevId] [ChnID] [PortID] [SetByUsr] [Cnt] > /proc/mi_modules/mi_rgn/mi_rgn0
参数说明 [ModId] 模块号,参考mi_common_datatype.h中的模块定义枚举值。
[DevId] 模块的设备号
[ChnID] 通道号 [0 ~ 63]
[PortID] 端口号 [0~3]
[SetByUsr] 是否通过手动设置,1:是,0:否,系统默认是0;
[Cnt] 若是手动设置,则front buffer用于显示的个数,此设定设置完后会在Frontbuffer info的BufCnt中查看到
举例 echo setFbListMaxCnt 34 1 0 0 1 3 > /proc/mi_modules/mi_rgn/mi_rgn0

16. VDEC


16.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_vdec/mi_vdec0
    

    图 16‑1

  • 调试信息分析

    打印分为两部分,使用Private Vdec0 Info分隔开。上半部分为common信息,下半部分为vdec模块信息。

    主要记录了解码通道的使用情况及配置属性,可用于检查属性配置和当前通道的工作状态,便于debug。

  • 参数说明

    表 16-1

    参数 描述
    DEV Info DevID 解码设备ID.
    UUID 芯片识别码。
    MaxChnNum 最大解码通道数目。
    bDisableLowLatency 关闭低延时开关,用于B帧解码。默认打开,即仅支持IP帧解码。 Y: 关闭低延时; N: 打开低延时。
    CHN ATTR Info ChnID 通道号。
    CodecType 解码协议类型 0:H264; 1:H265; 2:JPEG。
    Width 解码图像最大宽度。
    Height 解码图像最大高度。
    BufSize VDEC码流buffer大小,单位:byte。
    VideoMode 发送码流方式。 STREAM:按流发送; FRAME:按帧发送。
    DpbBufMode DPB buffer 模式 INPLACE1:一个解码图像buffer; INPLACE2:两个解码图像buffer; NORMAL:普通模式,不能省frame buffer。
    RefFrmNum 最大参考帧个数,JPEG通道无效。
    CHN PARAM Info ChnID 通道号。
    bCusPolicy 对于错误宏块,用户策略开关。 Y: 打开用户设置; N: 关闭用户设置,即默认值。
    ErrMBDropThrd 错误宏块丢帧阈值。
    DisplayMode 显示模式。 0:预览模式,不参考PTS输出。 1:回放模式,参考PTS数值输出。
    Scale & Crop Info ChnID 通道号。
    bScale 缩放开关。 Y:开启; N:关闭。
    ScaleW  缩放宽。
    ScaleH  缩放高。
    bCrop 裁剪开关。 Y:开启; N:关闭。
    CropX 裁剪起始坐标X。
    CropY 裁剪起始坐标Y。
    CropW 裁剪图象宽。
    CropH 裁剪图象高。
    Decode Frame Info ChnID 通道号。
    DecW 解码图像宽。
    DecH 解码图像高。
    DispW 显示图像宽。
    DispH 显示图像高。
    LinearFrmCnt 线性帧buffer数目
    Output Frame Info ChnID 通道号。
    bTileMode Tilemode开关。 Y:开启; N:关闭。
    TileFormat Tile格式。 仅支持128x64
    Width 输出图像宽。
    Height 输出图像高。
    Stride 输出图像stride。
    PixelFmt 输出图像像素格式。
    CHN STATE ChnID 通道号。
    bStart 解码器是否启动接收码流。
    DecState 解码器状态。 1:打开解码器; 2:初始化解码器; 3:等待初始化完成; 4:注册frame buffer 5:正在解码; 6:关闭解码器。
    SendCnt Api发送码流成功的次数。
    SendStrmSize Api发送成功的码流总数据量。
    LeftStrmBytes 码流buffer中待解码的byte数。
    DecFrmCnt 码流buffer中已解码帧数。
    fps 解码帧率。
    CHN STATE ChnID 通道号。
    Start 开始解码的次数。
    Get 获取解码输出信息的次数。
    Drop 丢帧次数。
    Run 返回running状态的次数。
    SeqChange 序列切换的次数。
    InitSeq 初始化序列的中断数。
    VlcInsuff Vlc buffer不足中断数。
    FrmDone 解码成功中断数。
    ISR STATE IsrCnt 中断总数目。
    InitSeq 初始化序列的中断总数目。
    VlcInsuff Vlc buffer不足中断总数目。
    FrmDone 解码成功中断总数目。
    UnderRun 正在解码中断总数目。
    HwTimeout 硬件超时中断总数目。
    Other 其他类型中断中数目。

16.2. echo

表 16-2

功能 设置打印模式。
命令 echo setprint [Mode] [Level] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [Mode] log打印模式 0 log输出到kmsg; 1 log输出到串口。
[Level] log打印等级 0 只打印ERROR信息; 1 打印WARNING和ERROR信息; 2 打印INFO,WARNING和ERROR信息。
举例 echo SetPrint 0 0 > /proc/mi_modules/mi_vdec/mi_vdec0 Log输出到kmsg,只打印ERROR信息。

表 16-3

功能 将写入码流buffer的码流同时存文件。
命令 echo dumpbs [ChnID] [Path] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 ChnID 通道号 [0~31]
[Path] 存储路径,输入off则停止存储码流
举例 echo dumpbs 0 /mnt/dump/ > /proc/mi_modules/mi_vdec/mi_vdec0 通道0,按显示顺序输出

表 16-4

功能 将输出的YUV同时存储文件。
命令 echo dumpfb [ChnID] [Path] [FrmCnt] [bDumpAll] [bDetile] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [ChnID] 通道号 [0~31]
[Path] 存储路径
[FrmCnt] 存储YUV帧数
[bDumpAll] 同时存储Y buffer,UV buffer和YUV buffer
[bDetile]
0 不对将要存储的YUV做detile  
1 对将要存储的YUV做detile
举例 echo dumpfb 0 /mnt/dump/ 1 0 1 > /proc/mi_modules/mi_vdec/mi_vdec0 通道0,存储路径为/mnt/dump/,存储1帧,不单独保存Y buffer和UV buffer,对将要存储的YUV做detile

表 16-5

功能 将码流buffer内容写入文件。
命令 echo dumpbsb [ChnID] [Path] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [ChnID] 通道号 [0~31]
[Path] 存储路径
举例 echo dumpbsb 0 /mnt/dump/ > /proc/mi_modules/mi_vdec/mi_vdec0 通道0,存储路径为/mnt/dump/

表 16-5

功能 打开/关闭flow checkpoint
命令 echo flowdbg [Status] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [Status] on 打开 off 关闭
举例 echo flowdbg on > /proc/mi_modules/mi_vdec/mi_vdec0 打开vdec flow checkpoint,然后再敲cat /proc/mi_modules/mi_vdec/mi_vdec0可以在vdec procfs查看当前多个函数的checkpoint

表 16-6

功能 打开/关闭丢帧开关
命令 echo dropoutbuf [Status] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [Status] on 打开 off 关闭
举例 echo dropoutbuf on > /proc/mi_modules/mi_vdec/mi_vdec0 丢弃将要输出的frame buffer
功能 打开/关闭vdec性能统计开关
命令 echo setperf [Status] > /proc/mi_modules/mi_vdec/mi_vdec0
参数说明 [Status] on 打开 off 关闭
举例 echo setperf on > /proc/mi_modules/mi_vdec/mi_vdec0 打开vdec性能统计开关,然后再敲cat /proc/mi_modules/mi_vdec/mi_vdec0可以在vdec procfs查看当前解码耗时等数据。

17. WARP


17.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_warp/mi_warp0
    

    图 17‑1

  • 调试信息分析

    打印分为两部分,common信息和warp模块信息。

    主要记录了warp设备各通道的使用情况及端口状态,可用于检查属性配置和当前通道的工作状态,便于debug。

  • 参数说明

    表 17‑1

    参数 描述
    Dev InputPort Info ChnId 通道号。
    Format Pixel format: YUV422_YUYV; YUV420_SP; Unknown。
    Width 帧宽度。
    Height 帧高度。
    GetInput InputPort接收到的buffer数量。
    FinishInput InputPort结束的buffer数量,包括正常处理完成和丢弃的帧数。
    RewindInput InputPort放回的buffer数量。
    Fps InputPort端的帧率。根据两帧时间间隔进行采样,先计算平均两帧时间间隔,再计算帧率。
    StatDepth 采样样本大小。取值范围为(1~100)。
    Dev OutputPort Info ChnId 通道号。
    Format Pixel format: YUV422_YUYV; YUV420_SP; Unknown。
    Width 帧宽度。
    Height 帧高度。
    GetOutput OutputPort接收到的buffer数量。
    FinishOutput OutputPort正常处理完成的buffer数量。
    RewindOutput OutputPort放回的buffer数量。
    Fps OutputPort端的帧率。根据两帧时间间隔进行采样,先计算平均两帧时间间隔,再计算帧率。
    StatDepth 采样样本大小。取值范围为(1~100),默认值为20。
    Dev Hal Info ChnId 通道号。
    AvgTime Hal执行单次trigger平均耗时。单位us。
    MaxTime Hal执行单次trigger最大耗时。单位us。
    MinTime Hal执行单次trigger最小耗时。单位us。
    TotalTrigger Hal层总共trigger数量。
    FinishTrigger Hal层执行成功的trigger数量。

17.2. echo

表 17‑2

功能 Dump模块配置文件。
命令 echo dump_table2file [ChnID] [BinType] [BinPath] > /proc/mi_modules/mi_warp/mi_warp0
参数说明 [ChnID] 通道号 0
[BinType] Bin文件类型 0 -> Bounding Box Table dump文件名称为Warp_BbTable.bin 1 -> Displayment Table dump文件名称为Disp_absolute.bin或Disp_relative.bin (根据warpConfig中disp_table类型不同,生成不同文件)。
[BinPath] Bin文件路径
举例 echo 0 0 /mnt/warp > /proc/mi_modules/mi_vdec/mi_vdec0 通道0,Bin文件类型为Bounding Box,路径为/mnt/warp。最后在/mnt/warp目录生成文件Warp_BbTable.bin。

表 17‑3

功能 Dump输入/输出端口帧率。
命令 echo dump_fps > /proc/mi_modules/mi_warp/mi_warp0
参数说明 无。
举例 无。

表 17‑4

功能 统计输入/输出端口数据帧状态。
命令 echo dump_frameCnt > /proc/mi_modules/mi_warp/mi_warp0
参数说明 无。
举例 无。

表 17‑5

功能 统计hal时间消耗。
命令 echo dump_halTimeConsume > /proc/mi_modules/mi_warp/mi_warp0
参数说明 无。
举例 无。

表 17‑6

功能 设置统计样本大小。
命令 echo dump_SetStatDepth [Depth] > /proc/mi_modules/mi_warp/mi_warp0
参数说明 [Depth] 样本大小。
举例 echo dump_SetStatDepth 30 /mnt/warp > /proc/mi_modules/mi_vdec/mi_vdec0 设置统计样本大小为30。会统计两帧间的pts差值,放入样本集合中,最多可放置30个,不足30时,根据实际样本数量计算fps;达到30时,按照30个pts差值计算fps。

18. Sensor


18.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_sensor/mi_sensor0
    

    图 18‑1

  • 调试信息分析

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

  • 参数说明

    表 18‑1

    参数 描述
    Pad info Padid Sensor pad id
    Planemode Planemode开关
    bEnable Sensor enable
    bmirror 水平翻转
    bflip 垂直翻转
    fps 帧率
    ResCnt Sensor 支持分辨率的数量
    Intfmode 接口协议
    Hdrmode Hdr hw mode
    Planecnt Plane通道数量
    Mipiattr Yuvorder Yuv数据排列
    Hdrhwmode Hdr hw mode
    Datafmt 数据格式,yuv/rgb
    HdrVchNum Sensor支持的HDR 虚拟通道数量
    HsyncMode 0:同步前一条 1:同步后一条line的hsync 信号
    LaneNum 支持同时传输数据的信号线数量
    LPackType0 数据打包格式0
    LPackType1 数据打包格式1
    samDelay 延时跳过数据头部分
    BT656Attr BitSwap 数据排列方向
    ClkEdge 采样时钟模式
    Multinum 复合模式的路数
    HPol H sync 极性
    PcPol Pclk极性
    VPol V sync极性
    HDelay H sync delay
    VDelay V sync delay
    PcDelay Pclk delay
    ParallelAttr HPol H sync 极性
    PcPol Pclk极性
    VPol V sync极性
    HDelay H sync delay
    VDelay V sync delay
    PcDelay Pclk delay
    Res Sensor 支持的分辨率信息
    strResDesc 分辨率
    CropX/CropY/CropW/CropH Crop 参数
    OutW/OutH 输出的宽高
    MaxFps/MinFps 最大最小帧率
    Cur 当前使用的分辨率信息

    表 18‑2

    参数 描述
    Plane info Padid pad id
    Planeid Plane id
    SnrName Sensor name
    BayerId Bayer id
    ePixPrec Pixel 精确度 (12bpp,10bpp ….)
    eHdrSrc HDR 通道号
    CropX/CropY/CropW/CropH Crop 参数

18.2. echo

  • 调试信息

    # echo help > /proc/mi_modules/mi_sensor/mi_sensor0
    

    图 18‑2 Echo help 查看可用命令

    表 18‑3

    功能 设置sensor的翻转
    命令 echo setmirrorflip [PadId, bMirror, bFlip] > /proc/mi_modules/mi_sensor/mi_sensor0
    参数说明 PadId: pad id
    bMirror: 水平翻转
    bFlip: 上下翻转
    举例 echo setmirrorflip 0 1 0 > /proc/mi_modules/mi_sensor/mi_sensor0

    表 18‑4

    功能 设置sensor的帧率
    命令 echo setfps [Padid, fps] > /proc/mi_modules/mi_sensor/mi_sensor0
    参数说明 PadId: pad id
    fps: 帧率
    举例 echo setfps 0 15 > /proc/mi_modules/mi_sensor/mi_sensor0

19. ISP


19.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_isp/mi_isp0
    

    图19-1

  • 调试信息分析

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

  • 参数说明

    表19-1

    参数 描述
    ISP Dev info DevId Isp Dev Id
    CreChnNum 当前Chn数量
    DevMask Stitch Dev Mask
    cmdq Cmdq指针
    En ISR中断使能标志
    Mode ISR中断模式
    num ISR ID
    VsyncCnt ISR VsyncCnt
    FrameDoneCnt ISR Frame Done Cnt
    DropCnt ISR Frame Drop Cnt

    表19-2

    参数 描述
    ISP Chn info DevId Isp Dev Id
    ChnId Isp Chn Id
    start Chn Start Flag
    SnrId Bind sensorId
    Sync3A Sync 3A type
    chnNum Muti chn Num
    Crop Input Crop Size
    InSize Input Size
    pixel Input pixel format
    Stride Input Buffer Stride
    Atom 底层拿住buffer数量
    Atom0 释放buffer后底层没有buffer数量
    Rot Rotation 角度
    bMirror/Flip 水平/竖直 翻转
    3DNRLevel 3DNR Level
    HdrMode HDR mode
    PreCnt/EnqCnt/BarCnt
    /checkin/checkout/DeqCnt/DropCnt
    Callback 接口执行次数
    EnqOTNull Enq时OutBuffer 为Null次数统计

    表19-3

    参数 描述
    ISP OutPut Port info DevId Isp Dev Id
    ChnId Isp Chn Id
    PortID Port Id
    Bindtype 与后级绑定模式
    Enable Port enable flag
    Pixel Port output pixel format
    PortCrop output Crop Size
    Stride Output Stride
    GetCnt 尝试获取OutPut buffer数量
    Failcnt 获取OutPut buffer失败数量
    FinishCnt 处理完OutPut buffer 数量
    fps Output port frame rate


19.2. Echo

echo help > /proc/mi_modules/mi_isp/mi_isp0

表19-4

功能 打印所有channel 锁的使用function 和line和 time
命令 echo debugmutex > /proc/mi_modules/mi_isp/mi_isp0
参数说明
举例

表19-5

功能 Stop 指定channel
命令 echo stopchnl [ChnID] [ON/OFF] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 [ChnId] :通道号
[ON/OFF]
ON:stop chn
OFF:start chn
举例 echo stopchnl 0 ON > /proc/mi_modules/mi_isp/mi_isp0

表19-6

功能 Dump选定channel的output数据,并保存在/path路径下
命令 echo dumptaskfile [chnid, Cnt, /path/, bOnlyDumpResChange, bdumpport] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
Cnt: dump 数量
Path: 存放dump出来文件的路径
bOnlyDumpResChange: 切换分辨率时可能产生花图,dump命令和切分辨率操作不好配合,可以先设置该参数, 然后切换分辨率, 当程序识别后会dump分辨率变化后的buffer。 (非必选参数)
Bdumpport: 只dump 某一个portid, 默认是dump 所有在输出的port。 (非必选参数)
举例 echo dumptaskfile 0 1 /mnt > /proc/mi_modules/mi_isp/mi_isp0

表19-7

功能 设置Dev的atomvalue
命令 echo setatom [AtomValue] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 AtomValue: input realtime mode下Driver 最大持有buffer 数量
举例 echo setatom 3 > /proc/mi_modules/mi_isp/mi_isp0
注意:有时候底层卡住,可以尝试增大该atom,加塞一张buffer 给driver,重新trig,看是否可以恢复,或者掉帧的时候,加大是否可以满帧。

表19-8

功能 清除指定channel port的input/output/done buffer
命令 echo clearbuf [chnid, portid bClearInput, bclearoutput, bcleardonebuff] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 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_isp/mi_isp0

表19-9

功能 设置debug level
命令 echo debuglv [level] >/proc/mi_modules/mi_isp/mi_isp0
echo debuglv [chnid][level] >/proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
Level:
(3) 单个level参数时: 1:isp api,2:flow,4:check irq done
(4) 两个参数时: 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_isp/mi_isp0 //打开check irq done 相关的MI打印
echo debuglv 0 3 > /proc/mi_modules/mi_isp/mi_isp0 //打开channel0 level3的打印,打印buffer info和loop info

表19-10

功能 主动drop frame 数量
命令 echo skipframe [chnid, skipnum] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
skipnum: drop frame count
举例 echo skipframe 0 60 > /proc/mi_modules/mi_isp/mi_isp0

表19-11

功能 保护outputport buffer
命令 echo protectport [chnid portid clientid ben] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
Portid: port id
Clientid: isp:0x23, LDC:0x0e, scl(0,1,2):0x19, 0x1c, 0x1d
ben: 使能
举例 echo protectport 0 0 0x23 1 > /proc/mi_modules/mi_isp/mi_isp0 //保护channel0 pass0 port0 的isp

表19-12

功能 消耗Bind Q中的buffer
命令 echo clearbindq [chnid bclear] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
bclear: 是否clear
举例 echo clearbindq 0 0 1 > /proc/mi_modules/mi_isp/mi_isp0 //clear channel0 pass0 bindQ
消耗Bind Q中的buffer。
scl BindQ塞满导致前端无法获取buffer, 判断scl是否过慢。 清空bindQ,观察它是否还会累加, 如果是则scl过慢, 如果不,说明是之前的异常没有消耗掉。

表19-13

功能 设置打印帧率,低于该值打印出来
命令 echo fpsth [chnid portid fpsint fpsfloat] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
Portid: port id
fpsint: 帧率整数位
fpsfloat: 帧率小数位
举例 echo fpsth 0 0 30 30 > /proc/mi_modules/mi_isp/mi_isp0 // channel0 port0中小于30.30的fps打印出来

表19-14

功能 设置port是否enable
命令 echo enableport [chnid, portid, bEn] > /proc/mi_modules/mi_isp/mi_isp0
参数说明 Chnid: channel id
Portid: port id
bEn: 1/0
举例 echo enableport 0 0 1 > /proc/mi_modules/mi_isp/mi_isp0

20. SCL


20.1. cat

  • 调试信息

    # cat /proc/mi_modules/mi_scl/mi_scl0
    

    图20-1

  • 调试信息分析

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

  • 参数说明

    表20-1

    参数 描述
    module info InitCnt 发生connected module次数
    chip Chip index
    version Chip version
    UseSclMask 模块scaler使用情况

    表20-2

    参数 描述
    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

    表20-3

    参数 描述
    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次数统计

    表20-4

    参数 描述
    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


20.2. echo

# echo help > /proc/mi_modules/mi_scl/mi_scl0

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

表20-5

功能 打印所有channel 锁的使用function 和line和 time
命令 echo debugmutex > /proc/mi_modules/mi_scl/mi_scl0
参数说明
举例

表20-6

功能 设置每一个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

表20-7

功能 等待底层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

表20-8

功能 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

表20-9

功能 设置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,看是否可以恢复,或者掉帧的时候,加大是否可以满帧。

表20-10

功能 设置对应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 水平翻转

表20-11

功能 清除指定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

表20-12

功能 设置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

表20-13

功能 设置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

表20-14

功能 保护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

表20-15

功能 将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 拿不够快, 如果不再增加,说明是之前一次异常塞在里面一直没有消耗掉。

表20-16

功能 设置打印帧率,低于该值打印出来
命令 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打印出来

表20-17

功能 设置输入源的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