外观
CPUID读取示例
2026-04-02
概述
本文演示了如何通过 RT-Thread 设备驱动框架读取芯片 CPUID,帮助开发者掌握获取 CPUID 的方法。
CPUID 的作用
CPUID(Central Processing Unit Identifier)是芯片的唯一标识符,类似于芯片的"身份证"。每颗芯片在生产时都会被烧录一个唯一的 ID,可用于设备标识、加密认证、防复制等场景。
运行 CPUID 读取示例
本示例以通过 RT-Thread 设备驱动框架操作 cpuinfo 设备,获取芯片唯一标识符并打印输出,实现读取芯片的 16 字节 CPUID 数据。
创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
CPUID 读取相关 API
rt_device_find:查找指定名称的设备,返回设备句柄;rt_device_open:打开设备,获取设备操作权限;rt_device_read:从设备读取数据,用于获取 CPUID 信息;
applications/cpuid_example.c
static rt_err_t cpuid_read_example(void)
{
rt_device_t dev;
rt_uint8_t cpuid[16] = {0};
rt_ssize_t len;
int i;
dev = rt_device_find("cpuinfo");
if (dev == RT_NULL)
{
LOG_E("CPUINFO device not found");
return -RT_ERROR;
}
if (rt_device_open(dev, RT_DEVICE_OFLAG_RDONLY) != RT_EOK)
{
LOG_E("Failed to open CPUINFO device");
return -RT_ERROR;
}
len = rt_device_read(dev, 0, &cpuid, sizeof(cpuid));
if (len != sizeof(cpuid))
{
LOG_E("Failed to read CPUINFO data");
return -RT_ERROR;
}
LOG_I("CPUID read success!");
rt_kprintf("CPUID: ");
for (i = 0; i < sizeof(cpuid); i++)
{
rt_kprintf("%02X", cpuid[i]);
}
rt_kprintf("\n");
return RT_EOK;
}
MSH_CMD_EXPORT(cpuid_read_example, cpuid read example);运行示例
操作步骤
- 将程序下载到开发板
- 打开串口终端连接开发板
- 输入
cpuid_read_example命令
预期结果
成功读取 CPUID 并以十六进制格式输出,每颗芯片的 CPUID 值都是唯一的。
rtt 终端
msh />cpuid_read_example
[I/example.cpuid] CPUID read success!
CPUID: 4D364136333400000000000000035406