跳转至

DEVSTAT开发参考

前言

概述

本文为使用DEVSTAT(Device status)的软件开发工程师而写,目的是为您在开发过程中提供使用指导和帮助。

产品版本

与本文档相对应的产品版本如下:

产品名称

产品版本

Hi3516C

V608

Hi3516C

V610

Hi3511C

V100

读者对象

本文档主要适用于软件开发工程师。

修改记录

文档版本

发布日期

修改说明

00B01

2026-06-30

第一次临时版本发布。

概述

DEVSTAT全称为Device status,是为用户提供的能够查询芯片部分设备状态的模块。本文主要介绍DEVSTAT的接口说明和使用注意事项。

功能描述

使用DEVSTAT提供的接口,用户可以查询芯片内部的设备状态信息,如DDR时钟、DDR位宽、FMC时钟等。

除DEVSTAT模块外,其他模块查询状态的接口汇总如下:

  • 使用ss_mpi_sys_query_mmz_status接口查询MMZ的总内存和剩余可用内存,可参考文档《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节。
  • 使用ss_mpi_vi_query_pipe_status接口查询VI PIPE状态,使用ss_mpi_vi_query_chn_status接口查询VI通道状态,可参考文档《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节。
  • 使用ss_mpi_venc_query_status接口查询VENC通道状态,可参考文档《MPP 媒体处理软件 V6.0 开发参考》的“视频编码”章节。
  • 使用ss_mpi_ai_query_file_status/ss_mpi_ao_query_chn_status/ss_mpi_ao_query_file_status/ss_mpi_adec_query_chn_status等接口查询音频相关状态,可参考文档《MPP 媒体处理软件 V6.0 开发参考》的“音频”章节。
  • 使用svp_acl_query_status接口查询当前设备上NPU核的状态,可参考SVP NPU的文档《应用开发指南》。

API参考

该模块为用户提供以下API:

ss_mpi_devstat_query_device_status:获取设备状态。

ss_mpi_devstat_query_device_status

【描述】

查询设备状态。

【语法】

td_s32 ss_mpi_devstat_query_device_status(ot_devstat_device_status *device_status);

【参数】

参数名称

描述

输入/输出

device_status

设备状态指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ot_common_devstat.h、ss_mpi_devstat.h
  • 库文件:libss_mpi_devstat.a

【注意】

调用本接口时,需要先指定device_status中的type字段,否则无法获取到对应设备的状态。

【举例】

ot_devstat_device_status ds = {0};
td_s32 ret;
ds.type = OT_DEVSTAT_DEVICE_TYPE_DDR;
ret = ss_mpi_devstat_query_device_status(&ds);
if (ret != TD_SUCCESS) {
    printf("get ddr status failed\n");
    return ret;
}

【相关主题】

无。

数据类型

DEVSTAT模块相关数据类型定义如下:

ot_devstat_ddr_status

【说明】

定义ddr设备状态。

【定义】

typedef struct {
    td_u32 clk; /* RO; unit: MHz */
    td_u32 bit_width; /* RO; unit: bit */
} ot_devstat_ddr_status;

【成员】

成员名称

描述

clk

时钟,单位MHz。

bit_width

位宽,单位bit。

【注意事项】

无。

【相关数据类型及接口】

ot_devstat_fmc_status

【说明】

定义fmc设备状态。

【定义】

typedef struct {
    td_u32 clk; /* RO; unit: MHz */
} ot_devstat_fmc_status;

【成员】

成员名称

描述

clk

时钟,单位MHz。

【注意事项】

无。

【相关数据类型及接口】

ot_devstat_device_type

【说明】

定义获取设备类型。

【定义】

typedef enum {
    OT_DEVSTAT_DEVICE_TYPE_DDR,
    OT_DEVSTAT_DEVICE_TYPE_FMC,
    OT_DEVSTAT_DEVICE_TYPE_BUTT
} ot_devstat_device_type;

【成员】

成员名称

描述

OT_DEVSTAT_DEVICE_TYPE_DDR

DDR设备类型。

OT_DEVSTAT_DEVICE_TYPE_FMC

FMC设备类型。

【注意事项】

无。

【相关数据类型及接口】

ot_devstat_device_status

【说明】

定义查询设备状态。

【定义】

typedef struct {
    ot_devstat_device_type type;
    union {
        ot_devstat_ddr_status ddr;
        ot_devstat_fmc_status fmc;
    };
} ot_devstat_device_status;

【成员】

成员名称

描述

type

要查询的设备类型。

ddr

DDR设备状态。

fmc

FMC设备状态。

【注意事项】

无。

【相关数据类型及接口】

注意事项

芯片版本中load脚本默认不加载ot_devstat.ko。执行load脚本后,需要手动加载ot_devstat.ko:insmod ot_devstat.ko。加载后方可使用DEVSTAT提供的接口。

错误码

DEVSTAT API错误码如表1所示。

表 1 DEVSTAT API错误码

错误代码

宏定义

描述

0xa060800a

OT_ERR_DEVSTAT_NULL_PTR

输入参数空指针错误

0xa0608018

OT_ERR_DEVSTAT_NOT_READY

系统未准备就绪

0xa0608008

OT_ERR_DEVSTAT_EXIST

对象已存在

0xa0608009

OT_ERR_DEVSTAT_UNEXIST

对象不存在

0xa060800c

OT_ERR_DEVSTAT_NOT_SUPPORT

操作不支持

0xa060800d

OT_ERR_DEVSTAT_NOT_PERM

权限不足导致操作不允许

0xa0608014

OT_ERR_DEVSTAT_NOMEM

分配内存失败

0xa0608015

OT_ERR_DEVSTAT_NOBUF

分配BUF失败

0xa0608007

OT_ERR_DEVSTAT_ILLEGAL_PARAM

非法参数

0xa0608022

OT_ERR_DEVSTAT_BUSY

系统忙

0xa0608016

OT_ERR_DEVSTAT_BUF_EMPTY

缓冲区中无数据