2013-12-02 1 views
4

Я работаю над кросс-платформенным проектом и недавно добавил поддержку малины Pi. Проект, чтобы убедиться, что он доступен в максимально широкой аудитории, имеет грань, систему cmake и систему автоматической настройки. Я создал кросс-компиляцию для RPi, и все работает отлично.Идентификация хозяина малины Pi с настройкой

В последнее время я также создал малину Pi VM (пока я не получу реальный RPi), пытающийся построить библиотеку. Из Linux я запускаю «./configure --host = arm-raspberry-linux-gnueabihf», а configure берет его оттуда. Однако на RPi (Rasbian 7) основным хостом, найденным config.guess, является «armv61-unknown-linux-gnueabihf». По этой причине, даже изначально на Pi, мне нужно запустить «./configure --host = arm-raspberry-linux-gnueabihf». Итак, мой вопрос подводит итог этому:

В настоящее время я в настоящее время есть что-то вроде этого в моем конфигурационном скрипте:

case "$host" in 
    armv61-unknown-linux-gnueabihf) 
     if [[ -f /usr/bin/rpi-update ]]; then 
      on_raspberry=yes 
     fi 
    ;; 
    ## other hosts here 
esac 

Итак, мой вопрос подводит итог этому:

  1. Is ' armv61-unknown-linux-gnueabihf 'сообщал только о малине Pi? Если нет, как настроить, убедитесь, что он действительно на RPi? Проверяется ли достаточная проверка rpi-обновления? У разных дистрибутивов (Arch Linux, Pidora, ...) также есть rpi-update?
  2. Есть ли другие возможные триплеты-хосты, подобные этим, которые сообщаются разными версиями Pi?

Заранее спасибо

+0

Какая у вас логика для './configure --build = ...'? Какова стандартная сборка, сообщаемая RPi? – ldav1s

+0

Нет специальной обработки для '--build = ...'. Я думал, что '--host = ...' было достаточно. Что еще может предложить '-build'? – neoaggelos

+0

'--build' описывает [систему, на которой вы строите] (http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html). Таким образом, тест на 'rpi-update' действительно действительно там. '--host' описывает систему, в которой будут запускаться встроенные программы и библиотеки (например, кросс-компиляция). Вы действительно должны использовать [оба, если используется '--host'] (http://www.gnu.org/software/autoconf/manual/autoconf-2.64/html_node/Hosts-and-Cross_002dCompilation.html) – ldav1s

ответ

2

Является ли 'armv61 неизвестный-линукс-gnueabihf' только сообщили о Raspberry Pi?

Другие платформы также могут использовать это.

Если нет, то как настроить, убедитесь, что он действительно на RPi?

Это не может (например, запустить его на RPi VM). configure - всего лишь сценарий оболочки.

Проверяется ли rpi-update достаточно?

См. Выше.

У разных дистрибутивов (Arch Linux, Pidora, ...) также есть rpi-update?

Текущие изображения Pidora и Arch не содержат /usr/bin/rpi-update. Также старые изображения Rasbpian по крайней мере еще 10 августа 2012 года.

Есть ли другие возможные триплеты-хосты, подобные этим, которые сообщаются разными версиями Pi?

There are 3 triplets for the RPi cross compilers, так что было бы неудивительно, если бы были другие.

EDIT: так что в основном то, что требуется, - это способ для configure, чтобы обнаружить, когда он строится на малиновой пи. Просто, как пирог:

configure.ac

# need to detect build... 
AC_CANONICAL_BUILD 

... 

AC_MSG_CHECKING([if build is on Raspberry Pi]) 
# The test for 'BCM2708' might be sufficient, 
# but the presence of Serial is definitely part of 
# the Pi firmware for codec licensing. 
# See this thread 
# <http://www.raspberrypi.org/phpBB3/viewtopic.phpf=29&t=28304&p=252357#p251536>. 
AS_CASE("$build", 
    [arm*-*-linux*], 
    [on_rpi=`awk -v r=0 '/^[email protected]<:@ \[email protected]:>@+:@<:@ \[email protected]:>@+BCM2708/ { ++r;} /^[email protected]<:@ \[email protected]:>@+:/ { ++r; } END { print ((r > 1) ? "yes" : "no");}' /proc/cpuinfo`], 
    [on_rpi="no"]) 
AC_MSG_RESULT($on_rpi) 

Обнаруживает на Raspbian, Pidora, должны работать на Arch. Arch, похоже, не содержит компилятор в текущем установочном образе, поэтому configure не удалось, когда я попробовал. Все обнаруженные строятся как armv6l-unknown-linux-gnueabihf при запуске ./configure. Я не пробовал это на любом эмуляторе RPi или VM.

+0

На самом деле, я хочу искать файл, который существует только на малине Pi. Что-то вроде uname. Я пробовал с/etc/os-release и/etc/lsb_release, но в них явно не указано, что система представляет собой малиновую Pi (единственная содержит информацию, специфичную для rasbian). И это привело меня к «rpi-update» – neoaggelos

+0

Поскольку все триплетные варианты устанавливают ОС как своего рода «linux» или «linux-gnueabi», которые будут проверять '/ proc/cpuinfo' [описанные здесь] (http: // www.raspberrypi-spy.co.uk/2012/09/checking-your-raspberry-pi-board-version/) или другие аппаратные средства Linux-y в '/ proc' действительны. Это должно быть переносимым во всех дистрибутивах RPi. – ldav1s

+0

И как с 'rpi-update', он будет протестирован в' --build'. Вы также хотели бы проверить наличие «рычажных» процессоров в дополнение к ОС «linux». – ldav1s

0

BCM2708 in/proc/cpuinfo может быть уникальным для RPi.

From File /proc/cpuinfo 

Processor  : ARMv6-compatible processor rev 7 (v6l) 
BogoMIPS  : 697.95 
Features  : swp half thumb fastmult vfp edsp java tls 
CPU implementer : 0x41 
CPU architecture: 7 
CPU variant  : 0x0 
CPU part  : 0xb76 
CPU revision : 7 

Hardware  : BCM2708 
Revision  : 000d 
Serial   : 00000000db690cb4 
+0

. Быстрый поиск в Google показал только страницы, касающиеся RPi, поэтому, я думаю, вы правы. Большое спасибо! – neoaggelos

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