正在使用的新式修订代码注意 | 此列表并非详尽无遗 - 可能存在正在使用的代码不在此表中。有关使用修订代码识别电路板的最佳实践,请参阅下一节。 |
---|
|
code | 型 | 校订 | RAM | 制造者 |
---|
900021 | A+ | 1.1 | 512MB | 索尼中国 | 900032 | B+ | 1.2 | 512MB | 索尼中国 | 900092 | Zero | 1.2 | 512MB | 索尼中国 | 900093 | Zero | 1.3 | 512MB | 索尼中国 | 9000C1 | Zero W | 1.1 | 512MB | 索尼中国 | 9020e0 | 3A+ | 1.0 | 512MB | 索尼中国 | 9020e1 | 3A+ | 1.1 | 512MB | 索尼中国 | 920092 | Zero | 1.2 | 512MB | 埃姆贝斯特 | 920093 | Zero | 1.3 | 512MB | 埃姆贝斯特 | 900061 | CM1 | 1.1 | 512MB | 索尼中国 | A01040 | 2B | 1.0 | 1GB | 索尼中国 | A01041 | 2B | 1.1 | 1GB | 索尼中国 | A02082 | 3B | 1.2 | 1GB | 索尼中国 | A020A0 | CM3 | 1.0 | 1GB | 索尼中国 | A020D3 | 3B+ | 1.3 | 1GB | 索尼中国 | A020D4 | 3B+ | 1.4 | 1GB | 索尼中国 | A02042 | 2B (带BCM2837) | 1.2 | 1GB | 索尼中国 | A21041 | 2B | 1.1 | 1GB | Embest | A22042 | 2B (带BCM2837) | 1.2 | 1GB | Embest | A22082 | 3B | 1.2 | 1GB | Embest | A220A0 | CM3 | 1.0 | 1GB | Embest | A32082 | 3B | 1.2 | 1GB | 索尼日本 | A52082 | 3B | 1.2 | 1GB | Stadium | A22083 | 3V | 1.3 | 1GB | Embest | A02100 | CM3+ | 1.0 | 1GB | 索尼中国 | A03111 | 4B | 1.1 | 1GB | 索尼中国 | B03111 | 4B | 1.1 | 2GB | 索尼中国 | B03112 | 4B | 1.2 | 2GB | 索尼中国 | B03114 | 4B | 1.4 | 2GB | 索尼中国 | B03115 | 4B | 1.5 | 2GB | 索尼中国 | C03111 | 4B | 1.1 | 4GB | 索尼中国 | C03112 | 4B | 1.2 | 4GB | 索尼中国 | C03114 | 4B | 1.4 | 4GB | 索尼中国 | C03115 | 4B | 1.5 | 4GB | 索尼中国 | D03114 | 4B | 1.4 | 8GB | 索尼中国 | D03115 | 4B | 1.5 | 8GB | 索尼中国 | C03130 | PI 400 | 1.0 | 4GB | 索尼中国 | A03140 | CM4 | 1.0 | 1GB | 索尼中国 | B03140 | CM4 | 1.0 | 2GB | 索尼中国 | C03140 | CM4 | 1.0 | 4GB | 索尼中国 | D03140 | CM4 | 1.0 | 8GB | 索尼中国 | 902120 | Zero 2 W | 1.0 | 512MB | 索尼中国 | C04170 | 5 | 1.0 | 4GB | 索尼中国 | D04170 | 5 | 1.0 | 8GB | 索尼中国 |
使用修订代码进行电路板识别在命令行中,我们可以使用以下内容来获取开发板的修订代码: $ cat /proc/cpuinfo | grep Revision
Revision : c03111
在上面的这个例子中,我们有一个十六进制修订代码 c03111。将其转换为二进制,我们得到 0 0 0 000 0 0 1 100 0000 0011 00010001 0001。根据上表,已插入空格以显示修订代码每个部分之间的边框。 从最低阶位开始,底部的四个 (0-3) 是板修订号,因此该板的修订版为 1。接下来的八位 (4-11) 是板类型,在本例中为二进制00010001,十六进制 11,因此这是 Raspberry Pi 4B。使用相同的过程,我们可以确定处理器是BCM2711,该板由索尼英国制造,并且具有 4GB 的 RAM。 在程序中获取修订代码显然,市面上有这么多的编程语言,不可能给出所有语言的例子,但这里有两个关于C和Python的快速例子。这两个示例都使用系统调用来运行 bash 命令,该命令获取 cpuinfo 并将结果通过管道传递到 awk 以恢复所需的修订代码。然后,它们使用位操作从代码中提取 New、Model 和 Memory 字段。 #include
#include
int main( int argc, char *argv[] )
{
FILE *fp;
char revcode[32];
fp = popen("cat /proc/cpuinfo | awk '/Revision/ {print $3}'", "r");
if (fp == NULL)
exit(1);
fgets(revcode, sizeof(revcode), fp);
pclose(fp);
int code = strtol(revcode, NULL, 16);
int new = (code >> 23) & 0x1;
int model = (code >> 4) & 0xff;
int mem = (code >> 20) & 0x7;
if (new && model == 0x11 && mem >= 3) // Note, 3 in the mem field is 2GB
printf("We are a 4B with at least 2GB of RAM!\n" );
return 0;
}
在 Python 中也是如此: import subprocess
cmd = "cat /proc/cpuinfo | awk '/Revision/ {print $3}'"
revcode = subprocess.check_output(cmd, shell=True)
code = int(revcode, 16)
new = (code >> 23) & 0x1
model = (code >> 4) & 0xff
mem = (code >> 20) & 0x7
if new and model == 0x11 and mem >= 3 : # Note, 3 in the mem field is 2GB
print("We are a 4B with at least 2GB RAM!")
|