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 |
处理结果:
|
异常处理
无。
约束说明
获取内存相关时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对应一个通道的厂商,且排布顺序按照通道数位的顺序排布,返回含义如下。
|
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; } …