Linux: / proc / cpuinfoにarm64のハードウェア/リビジョン/シリアルがありません

作成日 2017年07月11日  ·  4コメント  ·  ソース: raspberrypi/linux

arm64カーネルの使用中に/ proc / cpuinfoに含まれる情報には、32ビットarmバージョンよりも少ない情報が含まれるため、RPi.GPIOライブラリなどによってシステムがRaspberryPiとして認識されなくなります。

特に、個々の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ビットアームカーネルで実行、シリアル削除):

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を機能させるのに十分であり(たとえば、wiringpi 64ビットビルド(64ビットカーネル、64ビットユーザースペース)。 YMMV。

たとえば、ターゲットアプリのマウント名前空間を使用して、この回避策がシステムの他の部分に影響を与えないようにすることができます(ただし、ほとんどの正常に動作する64ビットユーザーランドのものは、 /proc/cpuinfoではなく、デバイスツリーをチェックするようです。気にしないようです^-^)。

hth、
坂木

全てのコメント4件

この問題により、すべてのRasberry PiGPIOなどのスクリプトがこのアーキテクチャで使用できなくなります。

  1. 64ビットビルドはサポートしていませんが、実行できる簡単なことがあれば(arm64のdefconfigをホストするなど)、サポートします。
  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を機能させるのに十分であり(たとえば、wiringpi 64ビットビルド(64ビットカーネル、64ビットユーザースペース)。 YMMV。

たとえば、ターゲットアプリのマウント名前空間を使用して、この回避策がシステムの他の部分に影響を与えないようにすることができます(ただし、ほとんどの正常に動作する64ビットユーザーランドのものは、 /proc/cpuinfoではなく、デバイスツリーをチェックするようです。気にしないようです^-^)。

hth、
坂木

このページは役に立ちましたか?
0 / 5 - 0 評価