Rockchip RK3288型号获取
Platform:Android 5.1
Rockchip RK3288系列也分了好几个型号,这里主要区分:RK3288和RK3288W
本文主要介绍两者之间型号的获取与区分,通过以下方式:
- 封装丝印
- 代码
- adb或串口
封装丝印
RK3288和RK3288W的封装丝印是有区别的,主要通过丝印后缀来判断。
RK3288
RK3288封装丝印
RK3288W
RK3288W封装丝印
两者区别在Subcontractor Code末尾有无W。有W的就是RK3288W。
代码
RK提供了API判断当前SoC型号,API如下:
bool soc_is_rk3288(void)
bool soc_is_rk3288w(void)
其原型位于include/linux/rockchip/cpu.h中,如下:
#ifdef CONFIG_ARM
#define ROCKCHIP_SOC(id, ID) \
static inline bool soc_is_rk##id(void) \
{ \return (rockchip_soc_id & ROCKCHIP_SOC_MASK) == ROCKCHIP_SOC_RK ##ID; \
}
#else
#define ROCKCHIP_SOC(id, ID) \
static inline bool soc_is_rk##id(void) { return false; }
#endifROCKCHIP_SOC(2926, 2926)
ROCKCHIP_SOC(2928g, 2928G)
ROCKCHIP_SOC(2928l, 2928L)
ROCKCHIP_SOC(3028a, 3028A)
ROCKCHIP_SOC(3026, 3026)
ROCKCHIP_SOC(3126, 3126)
ROCKCHIP_SOC(3126b, 3126B)
ROCKCHIP_SOC(3128, 3128)
ROCKCHIP_SOC(3036, 3036)
ROCKCHIP_SOC(3000, 3000)
ROCKCHIP_SOC(3066, 3066)
ROCKCHIP_SOC(3068, 3068)
ROCKCHIP_SOC(3066b, 3066B)
ROCKCHIP_SOC(3168, 3168)
ROCKCHIP_SOC(3028, 3028)
ROCKCHIP_SOC(3188, 3188)
ROCKCHIP_SOC(3188plus, 3188PLUS)
ROCKCHIP_SOC(3190, 3190)
ROCKCHIP_SOC(3288, 3288)
ROCKCHIP_SOC(3288w, 3288W)
这里有个宏ROCKCHIP_SOC,一个经典用法预处理宏##的拼接。
例如ROCKCHIP_SOC(3288w, 3288W),会将第一个参数3288w拼接到函数末尾soc_is_rk3288w,在其返回函数中,将第二个参数拼接,拼接为ROCKCHIP_SOC_RK3288W,一个完整的示例:
static inline bool soc_is_rk3288w(void)
{ return (rockchip_soc_id & ROCKCHIP_SOC_MASK) == ROCKCHIP_SOC_RK3288W; \
}
rockchip_soc_id:芯片ID。在kernel启动时I/O静态映射过程中指定,RK3288系列首先赋值为ROCKCHIP_SOC_RK3288,然后会读取HDMI Revision是否是0x1A,是的话将该值赋值为ROCKCHIP_SOC_RK3288W
#define ROCKCHIP_SOC_RK3288W (ROCKCHIP_CPU_RK3288 | 0x01)
#define ROCKCHIP_CPU_RK3288 0x32880000
ROCKCHIP_SOC_MASK:
#define ROCKCHIP_SOC_MASK (ROCKCHIP_CPU_MASK | 0xff)#define ROCKCHIP_CPU_MASK 0xffff0000
总结
调用soc_is_rk3288(),返回true表示该soc是RK3288,返回false表示该soc不是RK3288。
调用soc_is_rk3288w(),返回true表示该soc是RK3288W,返回false表示该soc不是RK3288W。
adb或串口
RK提供了sys文件接口来获取soc型号,接口是:
/sys/devices/system/cpu/soc
在串口控制台或adb环境下cat该文件即可得到soc型号,例如返回”RK3288”,即表示该SoC是RK3288
该sys接口的实现位于arch/arm/mach-rockchip/cpu.c中:
static ssize_t soc_show(struct device *dev, struct device_attribute *attr, char *buf)
{const char *soc;if (soc_is_rk3288())soc = "rk3288";else if (soc_is_rk3288w())soc = "rk3288w";else if (soc_is_rk3190())soc = "rk3190";else if (soc_is_rk3188plus())soc = "rk3188+";else if (soc_is_rk3188())soc = "rk3188";else if (soc_is_rk3168())soc = "rk3168";else if (soc_is_rk3028())soc = "rk3028";else if (soc_is_rk3066b())soc = "rk3066b";else if (soc_is_rk3028a())soc = "rk3028a";else if (soc_is_rk3026())soc = "rk3026";else if (soc_is_rk2928g())soc = "rk2928g";else if (soc_is_rk2928l())soc = "rk2928l";else if (soc_is_rk2926())soc = "rk2926";else if (soc_is_rk3066())soc = "rk3066";else if (soc_is_rk3068())soc = "rk3068";else if (soc_is_rk3000())soc = "rk3000";else if (soc_is_rk3126() || soc_is_rk3126b())soc = "rk3126";else if (soc_is_rk3128())soc = "rk3128";elsesoc = "";return sprintf(buf, "%s\n", soc);
}
该函数中共提供了两个功能:SoC和Type,且只提供了show方法。
SoC即为具体的芯片型号,而Type表示芯片系列。
比如在我的平台上分别获取SoC和Type,结果如下:
cat /sys/devices/system/cpu/soc
rk3288w
cat /sys/devices/system/cpu/type
rk3288
更新
rk也提供了prop来获取CPU型号,可读取ro.rk.soc,如下:
getprop | grep soc
[ro.rk.soc]: [rk3288w]
总结
通过这几种方式都可以获取主控型号,在驱动处理或者打补丁时可做区分。
Rockchip RK3288型号获取相关推荐
- iphone手机型号获取
#import <sys/utsname.h> //手机型号 NSString *device = [self iphoneType]; + (NSString *)iphoneType ...
- [RK3288][Android6.0] RK3288和RK3288-W版本说明
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 RK3288不同版本: RK3288-W丝印标记: RK3288-W功能更新: RK3288-W软件兼 ...
- 获取iPhone型号
2019独角兽企业重金招聘Python工程师标准>>> OC代码一栏 // 需导入 #import "sys/utsname.h"#pragma mark - 获 ...
- Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...
- PHP获取客户端设备类型,浏览器版本型号,IP地址,具体地理位置信息
客户端设备类型(Windows.Mac.ihpone.Android.Linux等) //客户端设备类型(Windows.Mac.ihpone.Android.Linux等)function getC ...
- iOS获取设备型号,运营商,网络信息
在 iOS开发中会经常遇到需要获取设备型号,运营商,网络信息来了解和分析用户信息及使用终端情况. 但是 iOS是不能直接获取设备型号的,需要调用C语言的API, 今天给大家带来目前所有苹果设备的型号获 ...
- #Enjoy Code# iOS获取设备型号 ,支持iPhone 6,iPhone 6s,iPhone6Plus, iPhone6sPlus,iPad Air2, iPad Mini 4 ETC..
苹果设备没更新一次,版本都得维护一下,不然后台分析就老说收集到不明手机型号.��为大家献上新的获取iPhone 6,iPhone 6s,iPhone6Plus, iPhone6sPlus,iPad A ...
- Rk3288运行linux,查看“Firefly-rk3288 build linux”的源代码
因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 该页面已被保护以防止编辑和其他操作. 您可以查看与复制此页面的源代码.=编译firefly linux-SDK系统= ...
- ublox Android 定位超时,[RK3288] [Android 7.1] u-blox GPS调试
我这里GPS使用的是TTL串口GPS芯片,用的是uart0 1.确认原理图对应的uart节点,将其打开 &uart0 { status = "okay"; dma-name ...
最新文章
- linux的ip地址是127,Linux的IP地址显示127.0.0.1的解决办法
- sqlite3命令详解
- PHP基础3_数组,循环及函数
- [css] 使用css实现对话气泡的效果
- leetcode53 dp and 分治
- 接口压测_Locust接口压测和插入集合点实战
- 一步步实现SDDC-部署VC后的配置
- mysql 表 组织 管理_MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理...
- Information Retrieval --- Classification
- ie浏览器打开aspx文件乱码_html文件的中文乱码问题与在浏览器中的显示问题
- Android之Handler
- linux文件和目录处理命令
- 【C++入门】C++ List类
- C#调用c++Dll结构体数组指针的问题
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_8_字节输入流_InputStream类FileInputStream...
- 使用python的Tkinter构建应用程序
- cad插件_【CAD】源泉插件CAD插件强大到你无法想象,掌握此插件1/10功能你就是绘图大师...
- Python实战:将头像变成动漫风
- 最好的投资理财工具 - 基金
- ISCC2021-部分题目再现
热门文章
- C语言遍历文件目录:readdir,opendir
- 2021年中国家具行业现状及未来趋势分析:线上渠道将成为新增长点[图]
- UnrealEd3视图导航及常用快捷键
- 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1005 Lunch (杭电 6892)
- php模拟安卓端捉取数据,ios - PHP如何模拟安卓设备,请求API接口的数据
- 陈抟(tuán)《心相篇》
- webstorm热更新
- Latex大括号花括号用法之多个子公式分别编号(a)(b)
- 华为eNSP防火墙USG5500基本配置
- HIT-SCIR/Elmoformanylanguages安装记录