Linux: arm64 上的 /proc/cpuinfo 缺少硬件/修订版/序列号

创建于 2017-07-11  ·  4评论  ·  资料来源: raspberrypi/linux

使用 arm64 内核时,/proc/cpuinfo 中包含的信息比 32 位 arm 版本包含的信息少,导致系统无法识别为 Raspberry Pi,例如 RPi.GPIO 库。

特别是,单个 CPU 下方缺少的硬件/修订版行似乎会引起问题,因为它们被用于识别特定型号。

从我在源代码中看到的,对于 arm64,cpuinfo 来自这里: https :

arm64内核的/proc/cpuinfo的内容:

processor   : 0
BogoMIPS    : 38.40 
Features    : fp asimd evtstrm crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

... ... ...

我所期望的(在 32 位 arm 内核上运行,已删除串行):

processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

... ... ...

Hardware        : BCM2709
Revision        : a22082
Serial          : 00000000XXXXXXXX

附加系统信息:

$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
HYPRIOT_OS="HypriotOS/arm64"
HYPRIOT_OS_VERSION="v1.1.1"
HYPRIOT_DEVICE="Raspberry Pi 3 64bit"
HYPRIOT_IMAGE_VERSION="v20170303-185520"
$ uname -a
Linux black-pearl 4.9.13-bee42-v8 #1 SMP PREEMPT Fri Mar 3 16:42:37 UTC 2017 aarch64 GNU/Linux

最有用的评论

一个简单但不是很优雅的解决方法(不修补用户空间库或内核)是在需要时绑定挂载一个/proc/cpuinfo的虚假版本; 例如参见我的文章在这里

使用rpi-4.19.y内核,这足以让picamera lib 工作(参见例如此处(64 位内核,在这种情况下为 32 位 Raspbian 用户空间)),并且 iirc 将允许wiringpi的 64 位版本运行正常(64 位内核,64 位用户空间)。 天啊。

您可以为目标应用程序使用例如挂载命名空间来防止此解决方法影响系统的其余部分(尽管大多数表现良好的 64 位用户空间似乎无论如何都会检查设备树,而不是/proc/cpuinfo ,等等似乎不在乎^-^)。

嗯,

所有4条评论

此问题导致所有 Rasberry Pi GPIO 等脚本在此架构上无法使用。

  1. 我们不支持 64 位构建,但如果我们可以做一些简单的事情(例如托管 arm64 的 defconfigs),那么我们会支持。
  2. 当我们确实支持 arm64 时,它将对上游内核进行绝对最少的更改(理想情况下没有),并且 /proc/cpuinfo 的内容在优先级列表中不会很高。 主板修订号和序列号是 arm64 架构中似乎不存在的概念,但我们将继续通过/proc/device-tree/system/linux,revision/proc/device-tree/system/linux,serial ,并在其中提供人类可读的版本/proc/device-tree/model/proc/device-tree/serial-number

这是一个不会修复。

一个简单但不是很优雅的解决方法(不修补用户空间库或内核)是在需要时绑定挂载一个/proc/cpuinfo的虚假版本; 例如参见我的文章在这里

使用rpi-4.19.y内核,这足以让picamera lib 工作(参见例如此处(64 位内核,在这种情况下为 32 位 Raspbian 用户空间)),并且 iirc 将允许wiringpi的 64 位版本运行正常(64 位内核,64 位用户空间)。 天啊。

您可以为目标应用程序使用例如挂载命名空间来防止此解决方法影响系统的其余部分(尽管大多数表现良好的 64 位用户空间似乎无论如何都会检查设备树,而不是/proc/cpuinfo ,等等似乎不在乎^-^)。

嗯,

此页面是否有帮助?
0 / 5 - 0 等级