Les informations contenues dans /proc/cpuinfo lors de l'utilisation d'un noyau arm64 contiennent moins d'informations que la version arm 32 bits, ce qui fait que le système n'est pas reconnu comme un Raspberry Pi, par exemple par la bibliothèque RPi.GPIO.
En particulier, les lignes Matériel/Révision manquantes sous les processeurs individuels semblent poser problème, car elles sont utilisées pour l'identification du modèle spécifique.
D'après ce que je peux voir dans le code source, pour arm64 le cpuinfo vient d'ici : https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , tandis que pour arm il est généré dans setup.c (serait https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c pour arm64).
Contenu de /proc/cpuinfo avec le noyau arm64 :
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
... ... ...
Ce à quoi je m'attendais (fonctionnant sur un noyau de bras 32 bits, série supprimée):
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
Informations système supplémentaires :
$ 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
Ce problème rend tous les scripts Rasberry Pi GPIO etc. inutilisables sur cette architecture.
/proc/device-tree/system/linux,revision
et /proc/device-tree/system/linux,serial
, avec des versions lisibles par l'homme dans /proc/device-tree/model
et /proc/device-tree/serial-number
.Ceci n'est pas une solution.
Une solution de contournement simple, bien que pas très élégante, pour cela (sans patcher les bibliothèques de l'espace utilisateur ou le noyau) consiste à monter par liaison une fausse version de /proc/cpuinfo
si nécessaire ; voir par exemple mon post ici .
Avec le noyau rpi-4.19.y
, cela est suffisant pour par exemple faire fonctionner la lib picamera
(voir par exemple ici (noyau 64 bits, espace utilisateur Raspbian 32 bits dans ce cas)), et iirc permettra une version 64 bits de wiringpi
pour fonctionner correctement (noyau 64 bits, espace utilisateur 64 bits). YMMV.
Vous pouvez utiliser, par exemple, un espace de
/proc/cpuinfo
, et ainsi de suite ne semble pas s'en soucier ^-^).
hth,
sakaki
Commentaire le plus utile
Une solution de contournement simple, bien que pas très élégante, pour cela (sans patcher les bibliothèques de l'espace utilisateur ou le noyau) consiste à monter par liaison une fausse version de
/proc/cpuinfo
si nécessaire ; voir par exemple mon post ici .Avec le noyau
rpi-4.19.y
, cela est suffisant pour par exemple faire fonctionner la libpicamera
(voir par exemple ici (noyau 64 bits, espace utilisateur Raspbian 32 bits dans ce cas)), et iirc permettra une version 64 bits dewiringpi
pour fonctionner correctement (noyau 64 bits, espace utilisateur 64 bits). YMMV.hth,
sakaki