Linux: / proc / cpuinfo Hardware ausente / Revisão / Serial em arm64

Criado em 11 jul. 2017  ·  4Comentários  ·  Fonte: raspberrypi/linux

As informações contidas em / proc / cpuinfo durante o uso de um kernel arm64 contêm menos informações do que a versão arm de 32 bits, fazendo com que o sistema não seja reconhecido como Raspberry Pi, por exemplo, pela biblioteca RPi.GPIO.

Especialmente, as linhas de Hardware / Revisão ausentes abaixo das CPUs individuais parecem causar problemas, pois estão sendo usadas para a identificação do modelo específico.

Pelo que posso ver no código-fonte, para arm64 o cpuinfo vem daqui: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , enquanto para arm é gerado em setup.c (seria https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c para arm64).

Conteúdo de / proc / cpuinfo com o 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

... ... ...

O que eu esperava (executando em um kernel arm de 32 bits, serial removido):

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

Informações adicionais do 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

Comentários muito úteis

Uma solução simples, embora não muito elegante, para isso (sem corrigir as bibliotecas de espaço de usuário ou kernel) é montar uma versão falsa de /proc/cpuinfo quando necessário; veja por exemplo meu post aqui .

Com o kernel rpi-4.19.y , isso é suficiente para, por exemplo, fazer com que picamera lib funcione (veja, por exemplo, aqui (kernel de 64 bits, espaço de usuário Raspbian de 32 bits neste caso)), e irá permitir uma compilação de 64 bits de wiringpi para executar OK (kernel de 64 bits, espaço de usuário de 64 bits). YMMV.

Você pode usar, por exemplo, um namespace de montagem para seu aplicativo de destino para evitar que esta solução alternativa afete o resto do seu sistema (embora a maioria das coisas de userland de 64 bits bem comportadas pareçam verificar a árvore do dispositivo de qualquer forma, em vez de /proc/cpuinfo , e assim não parece se importar ^ - ^).

hth,
Sakaki

Todos 4 comentários

Este problema torna todos os scripts Rasberry Pi GPIO etc. inutilizáveis ​​nesta arquitetura.

  1. Não estamos suportando compilações de 64 bits, embora se houver coisas simples que possamos fazer (como hospedar defconfigs para arm64), então faremos.
  2. Quando damos suporte a arm64, será com o número mínimo absoluto de mudanças no kernel upstream (de preferência nenhuma), e o conteúdo de / proc / cpuinfo não estaria no topo da lista de prioridades. O número de revisão da placa e o número de série são conceitos que parecem não existir na arquitetura arm64, mas continuaremos a disponibilizar essas informações por meio de /proc/device-tree/system/linux,revision e /proc/device-tree/system/linux,serial , com versões legíveis por humanos em /proc/device-tree/model e /proc/device-tree/serial-number .

Isso não vai consertar.

Uma solução simples, embora não muito elegante, para isso (sem corrigir as bibliotecas de espaço de usuário ou kernel) é montar uma versão falsa de /proc/cpuinfo quando necessário; veja por exemplo meu post aqui .

Com o kernel rpi-4.19.y , isso é suficiente para, por exemplo, fazer com que picamera lib funcione (veja, por exemplo, aqui (kernel de 64 bits, espaço de usuário Raspbian de 32 bits neste caso)), e irá permitir uma compilação de 64 bits de wiringpi para executar OK (kernel de 64 bits, espaço de usuário de 64 bits). YMMV.

Você pode usar, por exemplo, um namespace de montagem para seu aplicativo de destino para evitar que esta solução alternativa afete o resto do seu sistema (embora a maioria das coisas de userland de 64 bits bem comportadas pareçam verificar a árvore do dispositivo de qualquer forma, em vez de /proc/cpuinfo , e assim não parece se importar ^ - ^).

hth,
Sakaki

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

HankB picture HankB  ·  8Comentários

fivdi picture fivdi  ·  9Comentários

wudo94 picture wudo94  ·  5Comentários

incyi picture incyi  ·  9Comentários

Nuntis-Spayz picture Nuntis-Spayz  ·  5Comentários