[RK3399][Android7.1] 调试笔记 --- CPU的serial number读取

Ubuntu 读取树莓派cpu info的序列号 【代码】Ubuntu 读取树莓派cpu info的序列号。 阅读详情

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

描述:
系统除了device id, WiFi MAC,Andoid ID这些值以外,cpu的serial也是唯一的,因此也可以用它来做授权判断等应用。


读取:

rk3399_mid:/ $ cat /proc/cpuinfo

......
processor	: 5
BogoMIPS	: 48.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd08
CPU revision	: 2

Serial		: b8a0bcb99f6bf8b1

代码分析:
对应读取接口在cpuinfo.c

static int c_show(struct seq_file *m, void *v)
{
	......

	seq_printf(m, "Serial\t\t: %08x%08x\n",
		   system_serial_high, system_serial_low);

	return 0;
}

system_serial_high/system_serial_low的设置是在rockchip-cpuinfo.c中:

static int rockchip_cpuinfo_probe(struct platform_device *pdev)
{
	......
	//从efuse中读取
	cell = nvmem_cell_get(dev, "cpu-version");

	......
	for (i = 0; i < 8; i++) {
		buf[i] = efuse_buf[1 + (i << 1)];
		buf[i + 8] = efuse_buf[i << 1];
	}

	system_serial_low = crc32(0, buf, 8);
	system_serial_high = crc32(system_serial_low, buf + 8, 8);

	dev_info(dev, "Serial\t\t: %08x%08x\n",
		 system_serial_high, system_serial_low);

	return 0;
}

开机能看到如下log:
[ 0.700224] rockchip-cpuinfo cpuinfo: Serial : b8a0bcb99f6bf8b1


加粗样式参考:
cat /proc/cpuinfo

Android源码修改cpu信息 一直以为这种东西没法改呢,我还是太天真了。/proc/cpuinfo是个文件,只读,想直接写肯定不行的。它的输出逻辑在: kernel/[品牌]/[机型代号]/arch/[架构]/kernel/setup.c,修改static int c_show(struct seq_file *m, void *v)方法,用seq_printf方法,想输出啥都可以。特地下Linux内核源码下来看,不止And... 阅读详情

相关推荐

手把手教你用Qt5打造二次元游戏启动器(附鸣潮同款UI源码

本文详细介绍了如何使用Qt5框架从零开始构建一个功能完整、UI风格贴近《鸣潮》的二次元游戏启动器。教程涵盖无边框窗口、动态背景、自定义控件绘制、多线程资源加载以及下载管理等核心模块的实现,并提供了可运行的源码参考,帮助C++开发者和Qt爱好者深入掌握现代桌面应用开发技术。

weixin_29291863的博客 237

rk3288 8.1修改cpu序列号作为系统序列号.patch

rk系统的系统序列号是经过算法转换而来的。RK3288 8.1修改CPU 序列号作为系统序列号,解决原来的序列号可能出现相同的现象。

从Mate到Mate40 Pro+:华为旗舰核心配置演进与选购避坑指南

本文回顾了华为Mate系列从初代到Mate40 Pro+的核心配置演进历程,重点分析了处理器性能、影像系统、屏幕设计及续航快充的技术突破。针对选购需求,提供了区分版本、5G选择及存储配置的实用避坑建议,帮助消费者明智选择华为旗舰机型。

weixin_30015371的博客 452

cpuinfo相关

这两天客户提出来,我们的平板cat /proc/cpuinfo出来的信息中的serial怎么是0. 客户就是上帝啊,没办法,分析找问题贝。 我们先看一下目前的cat /proc/cpuinfo的信息: Processor : ARMv7 Processor rev 5 (v7l) BogoMIPS : 799.53 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41

qq_41795122的博客 1481

Android cpu信息获取/修改

随笔

tq501501的博客 3950

基于RK3568的UBoot实战:持续更新

基于正点原子RK3568开发板进行UBoot实战

weixin_43390831的博客 281

基于RK3568打包TPL,SPL,UBoot镜像并运行:实战角度

结合正点原子RK3568开发板理解TPL,SPL,UBoot启动运行流程

weixin_43390831的博客 248

Android中获取CPU序列号

Android中获取CPU序列号。

Tobin的专栏 5889

Android系统/proc/cpuinfo文件分析

1.原本只是想查看/proc/cpuinfo文件的第一行,来确认系统是64位还是32位的,然后发现了很多信息可以从该文件中得到。 如何通过该文件的第一行来判断系统是64位还是32位的? 输入cat /proc/cpuinfo,若系统是64位的,第一行显示的内容为Processor : AArch64 Processor rev 4 (aarch64),若是32为系统则没有该行信息。 2.基于不同指令集(ISA)的CPU产生的/proc/cpuinfo文件不一样,基于X86指令集CPU的/proc...

weixin_43738701的博客 2522

Android设备唯一码的获取

Android设备唯一码的获取 UTDID是集团无线设备统一ID方案,目的是给每一台设备一个ID,作为唯一标识。UTDID由客户端生成,并在设备中各个客户端之间共享。UTDID的生成中包含时间戳和随机数等,因此重新生成的UTDID一定是会改变的,UTDID的稳定性强依赖于手机存储,UTDID方案是一个重在持久化存储的方案。 1.老UTDID方案面临的问题 1.1 权限问题

zhangcanyan的博客 5万+

rk3288获取唯一性ID方法

cat /proc/cpuinfo Serial       : bb926ccd2079fa94    //cpuID

Reasonss的博客 5589

获取安卓应用芯片CPU序列号(芯片ID)

前提是需要有root权限,才能执行adb命令。 主要是通过adb 命令:"cat /proc/cpuinfo"来读取cpu信息。 然后重数据流中截取Serial。 流程简单。 若是没有root权限,尝试使用以下adb命令获取root权限: adb root adb remount adb disable-verity adb reboot adb root adb remount adb sh...

awenshim的专栏 4060

Android rom开发:自定义序列号ro.serialno

本文基于Android 5.1版本SDK。 客户需求:自定义sn,统一规则编号。 第一部分:背景知识 Android的sn由SystemProperties.get("ro.serialno", "");而来。 ro.serialno并不像常见的其他属性一样存在于build.prop等prop文件中,而是在/system/core/init/init.c里由ro.boot.serialno转换而来...

Android 6475

为什么阿里巴巴要求程序员谨慎修改serialVersionUID 字段的

序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。类通过实现java.io.Serializable接口以启用其序列化功能。在我的博客中,其实已经有多篇文章介绍过序列化了,对序列化的基础知识不够了解的朋友可以参考以下几篇文章:Java对象的序列化与反序列化深入分析Java的序列化与反序列化单例与序列化的那些事儿在这几篇文章中,我分别介绍过了序列化涉及到的类和...

weixin_34302798的博客 2365

android 修改cpu信息,从Android源码修改cpu信息

cpuinfo网上的文章都是怎么查看/proc/cpuinfo,一直以为这种东西没法改呢,我还是太天真了。/proc/cpuinfo是个文件,只读,想直接写肯定不行的。今天研究了一下,发现它的输出逻辑在: kernel/[品牌]/[机型代号]/arch/[cpu架构]/kernel/setup.c,修改c_show(struct seq_file *m, void *v)方法,用seq_print...

weixin_28847323的博客 2967

RK3288Android5.1 通过cpu串号固定以太网MAC地址

固定mac地址流程: 关闭原先的读取MAC地址文件->获取cpu串号->根据cpu串号计算一组能用的MAC地址->设置MAC地址。 此种固定方式即使重刷固件也不会改变MAC地址 生成MAC流程 1.全局变量system_serial_low为串号的低8位,system_serial_high为串号的高8位,先获取这两个 2.判断这两个是否小于0,如果小于0则取其绝对 3.将这两个转换为字符串,依次将字符串的两位转化为MAC地址的其中一个数据, 例如...

Mrdeath的博客 1994

如何查看 CPU 序列号

请注意,某些 CPU 可能没有序列号,或由于制造商实施的安全功能而无法获取序列号。

qq_63314540的博客 7876

gmac以太网mac地址以system serial number生成

gmac以太网mac地址以system serial number生成

Android framework 599

apk对齐优化,Android原生开发如何深入进阶?进阶学习资料!_对齐优化安卓apk(1)

说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有。

2401_84123201的博客 281

RK3399 CPUINFO EXPLANATION

RK3399 CPUINFO EXPLANATION

Android framework 149

OA办公系统大数据库设计.doc

变更记录 "日期 "版本 "变更说明 "作者 " "2013/08/02 "1.0 "数据字典设计 " " "2013/08/03 "2.0 "数据库设计 " " "2013/08/05 "2.1 "审核 " " "2013/08/08 "2.5 "升级及审核 " " " " " " " " " " " " 签字确认 "职务 "姓名 "签字 "日期 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 目 录 1 引言 4 1.1 预期的读者 4 1.2 数据库 4 1.3 目的和作用 4 2 数据字典设计 4 3 数据库设计 5 3.1 系统物理结构设计 5 3.2 表设计 5 3.2.1 TableName(表名的解释) 5 3.3 表之间的关联设计 5 3.4 存储过程设计 6 3.5 触发器设计 6 3.6 Job设计 6 引言 1 预期的读者 本文预期读者: OA办公自动化管理系统的设计、开发人员; OA办公自动化管理系统的验收、评审人员; OA办公自动化管理系统的测试人员; 客户方的市场部人员、开发人员。 2 数据库 数据库采用 MSSQL SERVER 2008 R2 数据库名称:OASYSDB/OA系统数据库 3 目的和作用 将数据分析的结果进一步整理,形成最终的计算机模型,以便开发人员建立物理数据 库。 数据字典设计 数据字典的主要目的是提供查阅对不了解的条目的解释。在数据字典中记录数据 元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构 等),使用特点(的范围,使用频率,使用方式—输入/输出/本地,条件等), 控制信息(来源,用户,使用它的程序,改变权等),分组信息(父结构,从属结构 ,物理位置—记录、文件和数据库等)。 下面的例子是通过卡片来描述数据字典: 2.1个人信息数据项与数据流 2.1.1名字:人员编号 描述:每个人员的唯一标识,用来区分人员 定义:字符串类型nvarchar(20) 位置:个人信息 2.1.2名字:姓名 描述:人员姓名,对人员的称呼 定义:字符串类型nvarchar(20) 位置:个人信息 2.1.3名字:性别 描述:每个人员的性别,男或女 定义:字符串类型nvarchar(50) 位置:基本信息 2.1.4名字:出生年月 描述:人员的出生日期,精确到月份 定义:日期类型datetime 位置:个人信息 2.1.5名字: 部门 描述:人员所在部门名称,用部门编号标识 定义:整型int 位置:部门信息 2.1.6名字:岗位 描述:人员所处岗位名称,用岗位编号标识 定义:整形int 位置:岗位信息 2.1.7名字:婚姻状况 描述:人员的婚姻状况,分为"未婚"、"已婚" 定义:字符串类型nvarchar(20) 位置:基本信息 2.1.8名字: 联系电话 描述:人员的联系电话,可以是固定电话或移动电话 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.9名字: 入职日期 描述:人员的入职日期,精确到日 定义:datetime 位置:个人信息 2.1.10名字: 电子邮箱 描述:人员常用的电子邮箱 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.11名字: 家庭地址 描述:人员的居住地址 定义:字符串类型nvarchar(MAX) 位置:个人信息 2.1.12名字: 照片 描述:人员的正式头像,存储方式为照片的本地地址 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.13名字: 密码 描述:人员登录系统的密码,可修改 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.14名字: 旧密码 描述:人员正在使用的密码 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.15名字: 新密码 描述:人员新设置的密码 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.16名字: 工资 描述:人员的月度工资,单位为元 定义:货币类型money 位置:个人信息 2.1.17名字: 个人信息 描述:个人的一切信息,部分为用户不可见或不可改 定义:个人信息=人员编号+人员姓名+密码+性别+出生年月+部门+岗位+工资+电子邮 箱+联系电话+婚姻状况+入职日期+家庭地址+照片 位置:个人信息 2.1.18名字: 个人可修改信息 描述:可由个人修改的部分个人信息 定义:个人可修改信息=性别+出生年月+电子邮箱+联系电话+婚姻状况+家庭地址+照 片 位置:个人信息 2.1.19名字: 密码修改信息 描述:个人的密码修改 定义:密码修改信息=人员编号+姓名+新密码+旧密码 位置:个人信息 2.2报销信息数据项与数据流 2.2

上一篇: [RK3399][Android7.1] 调试笔记 --- 提高DDR内存频率之后刷机不稳定
下一篇: [RK3399][Android7.1] 双屏显示副屏旋转90°patch
KrisFei
KrisFei 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄18年 2183粉丝 724原创
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值