Rockchip RK3288型号获取 |
您所在的位置:网站首页 › 如何查找主板序列号和型号参数 › Rockchip RK3288型号获取 |
Platform:Android 5.1 Rockchip RK3288系列也分了好几个型号,这里主要区分:RK3288和RK3288W 本文主要介绍两者之间型号的获取与区分,通过以下方式: 封装丝印代码adb或串口 封装丝印RK3288和RK3288W的封装丝印是有区别的,主要通过丝印后缀来判断。 RK3288RK3288封装丝印 RK3288WRK3288W封装丝印 两者区别在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; } #endif ROCKCHIP_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 0x32880000ROCKCHIP_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"; else soc = ""; 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] 总结通过这几种方式都可以获取主控型号,在驱动处理或者打补丁时可做区分。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |