Linux: / proc / cpuinfo отсутствует оборудование / версия / серийный номер на arm64

Созданный на 11 июл. 2017  ·  4Комментарии  ·  Источник: raspberrypi/linux

Информация, содержащаяся в / proc / cpuinfo при использовании ядра arm64, содержит меньше информации, чем 32-разрядная версия arm, что приводит к тому, что система не распознается как Raspberry Pi, например, библиотекой RPi.GPIO.

В частности, недостающие строки оборудования / версии под отдельными процессорами, похоже, вызывают проблемы, поскольку они используются для идентификации конкретной модели.

Из того, что я вижу в исходном коде, для arm64 cpuinfo берется отсюда: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , а для arm создается в setup.c (будет https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c для arm64).

Содержимое / proc / cpuinfo с ядром 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

... ... ...

Что я ожидал (работает на 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 64-битная сборка wiringpi для нормальной работы (64-битное ядро, 64-битное пространство пользователя). YMMV.

Вы можете использовать, например, пространство имен монтирования для вашего целевого приложения, чтобы этот обходной путь не повлиял на остальную часть вашей системы (хотя большинство корректных 64-битных пользовательских вещей, похоже, в любом случае проверяют дерево устройств, а не /proc/cpuinfo , и т. похоже, это не волнует ^ - ^).

hth,
сакаки

Все 4 Комментарий

Эта проблема делает непригодными для использования на этой архитектуре все сценарии Rasberry Pi GPIO и т. Д.

  1. Мы не поддерживаем 64-битные сборки, хотя, если есть простые вещи, которые мы можем сделать (например, размещение defconfigs для arm64), то будем.
  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 64-битная сборка wiringpi для нормальной работы (64-битное ядро, 64-битное пространство пользователя). YMMV.

Вы можете использовать, например, пространство имен монтирования для вашего целевого приложения, чтобы этот обходной путь не повлиял на остальную часть вашей системы (хотя большинство корректных 64-битных пользовательских вещей, похоже, в любом случае проверяют дерево устройств, а не /proc/cpuinfo , и т. похоже, это не волнует ^ - ^).

hth,
сакаки

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

steros76 picture steros76  ·  3Комментарии

Nuntis-Spayz picture Nuntis-Spayz  ·  5Комментарии

unkissedfrog picture unkissedfrog  ·  9Комментарии

XECDesign picture XECDesign  ·  6Комментарии

awlx picture awlx  ·  4Комментарии