2023-07-12 19:14:51 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include<hgl/TypeFunc.h>
|
2023-07-13 21:10:46 +08:00
|
|
|
|
#include<hgl/CompOperator.h>
|
2023-07-12 19:14:51 +08:00
|
|
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
enum class SOCVendor
|
|
|
|
|
{
|
|
|
|
|
Unknow=0,
|
|
|
|
|
|
|
|
|
|
Qualcomm, ///<高通
|
|
|
|
|
Hisilicon, ///<海思
|
|
|
|
|
Samsung, ///<三星
|
|
|
|
|
MediaTek, ///<联发科
|
|
|
|
|
Unisoc, ///<展锐
|
|
|
|
|
Spreadtrum, ///<展讯
|
|
|
|
|
JLQ, ///<瓴盛
|
2023-07-13 00:58:57 +08:00
|
|
|
|
|
|
|
|
|
//Maxvell, ///<马维尔
|
|
|
|
|
//Broadcom, ///<博通
|
2023-07-12 19:14:51 +08:00
|
|
|
|
//TI, ///<德州仪器
|
2023-07-13 00:58:57 +08:00
|
|
|
|
//Rockchip, ///<瑞芯微
|
|
|
|
|
//Intel, ///<英特尔
|
|
|
|
|
//nVidia, ///<英伟达
|
|
|
|
|
//AMD, ///<AMD
|
|
|
|
|
//Google, ///<谷歌
|
2023-07-12 19:14:51 +08:00
|
|
|
|
|
|
|
|
|
ENUM_CLASS_RANGE(Unknow,JLQ)
|
|
|
|
|
};
|
|
|
|
|
|
2023-07-26 22:30:49 +08:00
|
|
|
|
constexpr const char *SOCVendorName[16]=
|
|
|
|
|
{
|
|
|
|
|
"Unknow",
|
|
|
|
|
"Qualcomm",
|
|
|
|
|
"Hisilicon",
|
|
|
|
|
"Samsung",
|
|
|
|
|
"MediaTek",
|
|
|
|
|
"Unisoc",
|
|
|
|
|
"Spreadtrum",
|
|
|
|
|
"JLQ",
|
|
|
|
|
};
|
|
|
|
|
|
2023-07-17 20:36:05 +08:00
|
|
|
|
enum class CpuArch
|
|
|
|
|
{
|
|
|
|
|
Unknow=0,
|
|
|
|
|
|
|
|
|
|
ARMv7, ///<ARMv7
|
|
|
|
|
ARMv8, ///<ARMv8
|
|
|
|
|
ARMv9, ///<ARMv9
|
|
|
|
|
|
|
|
|
|
MIPS,
|
|
|
|
|
|
|
|
|
|
X86_32,
|
|
|
|
|
X86_64,
|
|
|
|
|
|
|
|
|
|
ENUM_CLASS_RANGE(Unknow,X86_64)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class ARMArch
|
|
|
|
|
{
|
|
|
|
|
Unknow=0,
|
|
|
|
|
|
|
|
|
|
ARMv7, ///<ARMv7A
|
|
|
|
|
ARMv8,
|
|
|
|
|
ARMv8_2,
|
|
|
|
|
ARMv9,
|
|
|
|
|
ARMv9_2,
|
|
|
|
|
|
|
|
|
|
ENUM_CLASS_RANGE(Unknow,ARMv9_2)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
union ARMCpuName
|
|
|
|
|
{
|
|
|
|
|
//如A76,level为7,gen为6
|
|
|
|
|
//A710,level为7,gen为10
|
|
|
|
|
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
char family; ///<A或X
|
|
|
|
|
uint8 level; ///<级别,目前就0,1,3,5,7
|
|
|
|
|
uint8 gen; ///<代数
|
|
|
|
|
bool ae:1;
|
|
|
|
|
bool c:1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
uint32 value;
|
|
|
|
|
};
|
|
|
|
|
|
2023-07-28 10:34:27 +08:00
|
|
|
|
/**
|
|
|
|
|
* ARM CPU 核心信息
|
|
|
|
|
*/
|
|
|
|
|
struct ARMCpuCoreInfo
|
2023-07-17 20:36:05 +08:00
|
|
|
|
{
|
|
|
|
|
ARMCpuName name;
|
|
|
|
|
|
|
|
|
|
ARMArch arch;
|
|
|
|
|
|
|
|
|
|
bool support_32bit;
|
|
|
|
|
bool support_64bit;
|
|
|
|
|
};
|
|
|
|
|
|
2023-07-28 10:34:27 +08:00
|
|
|
|
const uint32 ParseARMCpuName(const char *); ///<根据字符串解晰ARM CPU名称ID
|
2023-07-17 20:36:05 +08:00
|
|
|
|
|
2023-07-28 10:34:27 +08:00
|
|
|
|
bool ParseARMCpuCoreInfo(ARMCpuCoreInfo *,const uint32 &cpu_name_id); ///<根据ARM CPU名字ID解晰CPU信息
|
2023-07-17 20:36:05 +08:00
|
|
|
|
|
|
|
|
|
enum class KryoArchLevel
|
|
|
|
|
{
|
|
|
|
|
Prime,
|
|
|
|
|
Gold,
|
|
|
|
|
Silver,
|
|
|
|
|
|
|
|
|
|
ENUM_CLASS_RANGE(Prime,Silver)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
2023-07-28 10:34:27 +08:00
|
|
|
|
* ARM CPU簇信息<br>
|
2023-07-17 20:36:05 +08:00
|
|
|
|
* 注:这里的频率单位为MHz,而且只是默认频率,实际频率可能会更高或更低
|
|
|
|
|
*/
|
2023-07-28 10:34:27 +08:00
|
|
|
|
struct ARMCpuClusterInfo
|
2023-07-17 20:36:05 +08:00
|
|
|
|
{
|
2023-07-28 10:34:27 +08:00
|
|
|
|
ARMCpuCoreInfo arm; ///<对应的ARM核心信息
|
2023-07-17 20:36:05 +08:00
|
|
|
|
|
|
|
|
|
uint core_count; ///<核心数量
|
|
|
|
|
|
|
|
|
|
uint base_freq; ///<基础频率
|
|
|
|
|
uint boost_freq; ///<最高频率
|
|
|
|
|
};
|
|
|
|
|
|
2023-07-28 10:34:27 +08:00
|
|
|
|
struct SOCInfo
|
2023-07-12 19:14:51 +08:00
|
|
|
|
{
|
|
|
|
|
SOCVendor vendor;
|
2023-07-13 21:10:46 +08:00
|
|
|
|
char model[32];
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2023-07-28 10:34:27 +08:00
|
|
|
|
CompOperatorMemcmp(const SOCInfo &);
|
2023-07-12 19:14:51 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据收集到的SOC信息,解晰具体的SOC厂商和主要型号
|
|
|
|
|
*/
|
2023-07-28 10:34:27 +08:00
|
|
|
|
bool ParseSOCInfo(SOCInfo &,const char *);
|
2023-07-28 10:36:42 +08:00
|
|
|
|
|
|
|
|
|
struct SOCCpuInfo
|
|
|
|
|
{
|
|
|
|
|
SOCInfo soc_info;
|
|
|
|
|
|
|
|
|
|
uint cluster_count; ///<CPU簇数量
|
|
|
|
|
ARMCpuClusterInfo cluster[4]; ///<CPU簇信息
|
|
|
|
|
};//struct SOCCpuInfo
|
2023-07-12 19:14:51 +08:00
|
|
|
|
}//namespace hgl
|