昇腾社区首页
中文
注册

DCMI_MAIN_CMD_MEMORY命令说明

函数原型

int dcmi_get_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, void *buf, unsigned int *size)

功能说明

获取系统中内存相关的信息。

参数说明

参数名称

输入/输出

类型

描述

card_id

输入

int

指定NPU管理单元的ID,当前实际支持的ID通过dcmi_get_card_list接口获取。

device_id

输入

int

指定设备编号,通过dcmi_get_device_id_in_card接口获取。取值范围如下

NPU芯片:[0, device_id_max-1]。

main_cmd

输入

enum dcmi_main_cmd

DCMI_MAIN_CMD_MEMORY

sub_cmd

输入

unsigned int

/* DCMI sub commond for memory */
#define DCMI_SUB_CMD_MEMORY_TYPE 0
#define DCMI_SUB_CMD_MEMORY_CAPACITY 1
#define DCMI_SUB_CMD_MEMORY_CHANNEL 2
#define DCMI_SUB_CMD_MEMORY_RANK_NUM 3
#define DCMI_SUB_CMD_MEMORY_ECC_ENABLE 4
#define DCMI_SUB_CMD_MEMORY_MANUFACTURES 5
#define DCMI_SUB_CMD_MEMORY_SET_MATA_READ_ONCE 30
#define DCMI_SUB_CMD_MEMORY_GET_MATA_READ_ONCE 31
#define DCMI_SUB_CMD_SERVICE_MEMORY 32
#define DCMI_SUB_CMD_SYSTEM_MEMORY 33
#define DCMI_SUB_CMD_DDR_MEMORY 34
#define DCMI_SUB_CMD_HBM_MEMORY 35

当前支持DCMI_SUB_CMD_MEMORY_TYPE、DCMI_SUB_CMD_MEMORY_CAPACITY、DCMI_SUB_CMD_MEMORY_CHANNEL、DCMI_SUB_CMD_MEMORY_RANK_NUM、DCMI_SUB_CMD_MEMORY_ECC_ENABLE和DCMI_SUB_CMD_MEMORY_MANUFACTURES。

buf

输出

void *

用于接收设备信息的返回值。

size

输入/输出

unsigned int *

buf数组的输入/输出长度。

返回值

类型

描述

int

处理结果:

  • 成功:返回0。
  • 失败:返回码请参见返回码

异常处理

无。

约束说明

获取内存相关时sub_cmd,buf和size之间必须要满足以下关系,如果不满足会导致接口调用失败

sub_cmd

buf对应的数据类型

size

参数说明

DCMI_SUB_CMD_MEMORY_TYPE

unsigned int

sizeof(unsigned int)

类型,返回值含义如下:

0: LPDDR4

1: LPDDR5

DCMI_SUB_CMD_MEMORY_CAPACITY

unsigned int

sizeof(unsigned int)

内存总容量,单位为MB。

DCMI_SUB_CMD_MEMORY_CHANNEL

unsigned int

sizeof(unsigned int)

通道数,通道按位表示通道是否存在:

1:表示该通道存在,

0:表示该通道不存在。

DCMI_SUB_CMD_MEMORY_RANK_NUM

unsigned int

sizeof(unsigned int)

表示rank数,返回值如下:

1:单rank

2:双rank

DCMI_SUB_CMD_MEMORY_ECC_ENABLE

unsigned int

sizeof(unsigned int)

表示ecc是否使能,返回值如下:

0:未使能。

1:使能。

DCMI_SUB_CMD_MEMORY_MANUFACTURES

unsigned char

sizeof(unsigned char) * 24

表示产商信息,每一个char对应一个通道的厂商,且排布顺序按照通道数位的顺序排布,返回含义如下。

  • 0x01:三星
  • 0x06:海力士
  • 0xFF:镁光
表1 部署场景

Linux物理机

Linux物理机容器

root用户

运行用户组(非root用户)

root用户

Y

Y

Y

因存在防攻击保护,故与其他存在防攻击保护接口不能大量并发,否则可能会返回失败。

调用示例

… 
int ret = 0;
int card_id = 0;
int device_id = 0;
int buf = 0;
unsigned int size = sizeof(int);
unsigned int sub_cmd = 0;
ret = dcmi_get_device_info(card_id, device_id, DCMI_MAIN_CMD_MEMORY, sub_cmd, &buf, &size);
if (ret != 0){
    //todo:记录日志
    return ret;
}
…