Linux: Falta el hardware / proc / cpuinfo / Revisión / Serie en arm64

Creado en 11 jul. 2017  ·  4Comentarios  ·  Fuente: raspberrypi/linux

La información contenida en / proc / cpuinfo mientras se usa un kernel arm64 contiene menos información que la versión arm de 32 bits, lo que hace que el sistema no sea reconocido como Raspberry Pi, por ejemplo, por la biblioteca RPi.GPIO.

Especialmente, las líneas de revisión / hardware que faltan debajo de las CPU individuales parecen causar problemas, ya que se utilizan para identificar el modelo específico.

Por lo que puedo ver en el código fuente, para arm64 la cpuinfo viene de aquí: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , mientras que para arm se genera en setup.c (sería https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c para arm64).

Contenido de / proc / cpuinfo con el kernel 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

... ... ...

Lo que esperaba (ejecutándose en un kernel de brazo de 32 bits, serial eliminado):

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

Información adicional del sistema:

$ 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

Comentario más útil

Una solución simple, aunque no muy elegante, para esto (sin parchear las bibliotecas del espacio de usuario o el kernel) es montar en enlace una versión falsa de /proc/cpuinfo cuando sea necesario; mira, por ejemplo, mi publicación aquí .

Con el kernel rpi-4.19.y , esto es suficiente para, por ejemplo, hacer que funcione picamera lib (ver, por ejemplo, aquí (kernel de 64 bits, espacio de usuario de Raspbian de 32 bits en este caso)), y iirc permitirá una compilación de 64 bits de wiringpi para ejecutar correctamente (kernel de 64 bits, espacio de usuario de 64 bits). YMMV.

Puede usar, por ejemplo, un espacio de /proc/cpuinfo , y así no parece importarle ^ - ^).

hth,
sakaki

Todos 4 comentarios

Este problema hace que todos los scripts de Rasberry Pi GPIO, etc., sean inutilizables en esta arquitectura.

  1. No admitimos compilaciones de 64 bits, aunque si hay cosas simples que podemos hacer (como alojar defconfigs para arm64), lo haremos.
  2. Cuando admitamos arm64, será con el número mínimo absoluto de cambios en el kernel ascendente (idealmente ninguno), y el contenido de / proc / cpuinfo no ocuparía un lugar destacado en la lista de prioridades. El número de revisión de la placa y el número de serie son conceptos que no parecen existir en la arquitectura arm64, pero continuaremos haciendo que esa información esté disponible a través de /proc/device-tree/system/linux,revision y /proc/device-tree/system/linux,serial , con versiones legibles por humanos en /proc/device-tree/model y /proc/device-tree/serial-number .

Esto es algo que no se solucionará.

Una solución simple, aunque no muy elegante, para esto (sin parchear las bibliotecas del espacio de usuario o el kernel) es montar en enlace una versión falsa de /proc/cpuinfo cuando sea necesario; mira, por ejemplo, mi publicación aquí .

Con el kernel rpi-4.19.y , esto es suficiente para, por ejemplo, hacer que funcione picamera lib (ver, por ejemplo, aquí (kernel de 64 bits, espacio de usuario de Raspbian de 32 bits en este caso)), y iirc permitirá una compilación de 64 bits de wiringpi para ejecutar correctamente (kernel de 64 bits, espacio de usuario de 64 bits). YMMV.

Puede usar, por ejemplo, un espacio de /proc/cpuinfo , y así no parece importarle ^ - ^).

hth,
sakaki

¿Fue útil esta página
0 / 5 - 0 calificaciones