Platform:Android 5.1


Rockchip RK3288系列也分了好几个型号,这里主要区分:RK3288RK3288W
本文主要介绍两者之间型号的获取与区分,通过以下方式:

  • 封装丝印
  • 代码
  • 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);
}

该函数中共提供了两个功能:SoCType,且只提供了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型号获取相关推荐

  1. iphone手机型号获取

    #import <sys/utsname.h> //手机型号 NSString *device = [self iphoneType]; + (NSString *)iphoneType ...

  2. [RK3288][Android6.0] RK3288和RK3288-W版本说明

    Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 RK3288不同版本: RK3288-W丝印标记: RK3288-W功能更新: RK3288-W软件兼 ...

  3. 获取iPhone型号

    2019独角兽企业重金招聘Python工程师标准>>> OC代码一栏 // 需导入 #import "sys/utsname.h"#pragma mark - 获 ...

  4. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  5. PHP获取客户端设备类型,浏览器版本型号,IP地址,具体地理位置信息

    客户端设备类型(Windows.Mac.ihpone.Android.Linux等) //客户端设备类型(Windows.Mac.ihpone.Android.Linux等)function getC ...

  6. iOS获取设备型号,运营商,网络信息

    在 iOS开发中会经常遇到需要获取设备型号,运营商,网络信息来了解和分析用户信息及使用终端情况. 但是 iOS是不能直接获取设备型号的,需要调用C语言的API, 今天给大家带来目前所有苹果设备的型号获 ...

  7. #Enjoy Code# iOS获取设备型号 ,支持iPhone 6,iPhone 6s,iPhone6Plus, iPhone6sPlus,iPad Air2, iPad Mini 4 ETC..

    苹果设备没更新一次,版本都得维护一下,不然后台分析就老说收集到不明手机型号.��为大家献上新的获取iPhone 6,iPhone 6s,iPhone6Plus, iPhone6sPlus,iPad A ...

  8. Rk3288运行linux,查看“Firefly-rk3288 build linux”的源代码

    因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 该页面已被保护以防止编辑和其他操作. 您可以查看与复制此页面的源代码.=编译firefly linux-SDK系统= ...

  9. ublox Android 定位超时,[RK3288] [Android 7.1] u-blox GPS调试

    我这里GPS使用的是TTL串口GPS芯片,用的是uart0 1.确认原理图对应的uart节点,将其打开 &uart0 { status = "okay"; dma-name ...

最新文章

  1. linux的ip地址是127,Linux的IP地址显示127.0.0.1的解决办法
  2. sqlite3命令详解
  3. PHP基础3_数组,循环及函数
  4. [css] 使用css实现对话气泡的效果
  5. leetcode53 dp and 分治
  6. 接口压测_Locust接口压测和插入集合点实战
  7. 一步步实现SDDC-部署VC后的配置
  8. mysql 表 组织 管理_MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理...
  9. Information Retrieval --- Classification
  10. ie浏览器打开aspx文件乱码_html文件的中文乱码问题与在浏览器中的显示问题
  11. Android之Handler
  12. linux文件和目录处理命令
  13. 【C++入门】C++ List类
  14. C#调用c++Dll结构体数组指针的问题
  15. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_8_字节输入流_InputStream类FileInputStream...
  16. 使用python的Tkinter构建应用程序
  17. cad插件_【CAD】源泉插件CAD插件强大到你无法想象,掌握此插件1/10功能你就是绘图大师...
  18. Python实战:将头像变成动漫风
  19. 最好的投资理财工具 - 基金
  20. ISCC2021-部分题目再现

热门文章

  1. C语言遍历文件目录:readdir,opendir
  2. 2021年中国家具行业现状及未来趋势分析:线上渠道将成为新增长点[图]
  3. UnrealEd3视图导航及常用快捷键
  4. 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1005 Lunch (杭电 6892)
  5. php模拟安卓端捉取数据,ios - PHP如何模拟安卓设备,请求API接口的数据
  6. 陈抟(tuán)《心相篇》
  7. webstorm热更新
  8. Latex大括号花括号用法之多个子公式分别编号(a)(b)
  9. 华为eNSP防火墙USG5500基本配置
  10. HIT-SCIR/Elmoformanylanguages安装记录