Как программно идентифицировать плату ARM

Есть ли способ программно определить, на какой доске я сейчас работаю? Либо raspberry pi, либо cubieboard, либо beagleboneblack? Этих 3-х типов достаточно для дифференциации. Я надеялся использовать cat /sys/devices/virtual/dmi/id/sys_vendor, но это недоступно в ARM-портах Debian :-/


person sbunciak    schedule 29.06.2015    source источник


Ответы (3)


На моей плате в /proc/cpuinfo есть

Processor       : ARMv7 Processor rev 7 (v7l)
processor       : 0
BogoMIPS        : 1562.98

processor       : 1
BogoMIPS        : 1560.01

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc09
CPU revision    : 7

Hardware        : FC7100 Workbench
Revision        : 6008

Интересной частью является поле Hardware, которое является названием моей доски. Это поле основано на идентификаторе машины из linux-файла arch/arm/tools/mach-type. Тем не менее, этот подход сейчас может быть устаревшим, так как теперь мы используем деревья устройств вместо пакетов поддержки плат. Возможно, вам придется поискать документацию по дереву устройств, чтобы получить необходимую информацию.

person Jacen    schedule 01.07.2015

Вы можете прочитать MIDR register, который предоставит исполнителя, вариант, архитектуру, номер детали и версию, которые помогут вам различать доски, на которых вы запускаете свой код.

Вы можете получить этот регистр, используя MRC p15, 0, <Rt>, c0, c0, 0

Ссылка: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0500f/BABFEABI.html

person Aif    schedule 29.06.2015
comment
Я не понимаю, как это решает вопрос. плата — это гораздо больше, чем просто ядро ​​ЦП или даже SoC. Кроме того, учтите, что Allwinner A10 на Cubieboard имеет Cortex-A8 r3p2, тогда как TI AM3359 на BeagleBone Black имеет, э-э, Cortex-A8 r3p2... - person Notlikethat; 30.06.2015
comment
это верно, действительно. Я не проверял, какая плата использует какой процессор, это был просто намек на возможный способ узнать информацию. В случае куби и бигля, похоже, это не подходит. Упс :) Спасибо, что заметили это! - person Aif; 30.06.2015

Я пишу на Python.
Я просматриваю /proc/cpuinfo и анализирую поле Hardware.
BCM2708 — это Pi1 (A, B, A+,B+)
BCM2709 — это Pi2 (B+)
BCM2835 — это Pi3

Для Бигльбона вы можете:

import platform
p = platform.platform()

Если что-то из этого верно, у вас есть Beaglebone Black.

if p.lower().find('arm7l-with-debian') > -1
if p.lower().find('arm7l-with-ubuntu') > -1
if p.lower().find('arm7l-with-glibc2.4') > -1
if p.lower().find('arm7l-with-arch') > -1

Если это не RPi и не Beaglebone, то, возможно, это другой.

Это было получено из работы Тони ДиКолы в Adafruit, но я не помню, в каком проекте я это нашел.

person Ken Wood    schedule 07.04.2017