30.04.2014

Raspberry PI. С чего начать?

Феномен Raspberry Pi трудно отрицать. Тем круче было мое удивление, когда коллеги проявили о нем практически нулевую осведомленность. На мой невинный вопрос "а не пора ли открывать ветку совместимости с Debian 7, а то на ней даже Raspberry Pi бегает" получил в ответ "а что это за разберри такой?".


Честно говоря, стало немного досадно. Я бегло просмотрел поисковый вывод и понял, что сейчас материалов на русском по Raspberry Pi на порядок меньше, чем про тот же Arduino. Традиционно, впереди всех выступает LinuxFormat, подписка платная (доступна и электронная версия, но все равно - она стоит денег), материалы выкладываются у них на wiki, с задержкой на один год.

И тогда я подумал, что стоит сделать пару статей - тем более, что последнее время мне крайне интересна связка Arduino+RaspberryPi.



Немного истории


Однажды, в далеком 2006 Эбен Аптон, тогдашний руководитель компьютерной лаборатории Кэмбриджского Университета, бился над идеей создания дешевого учебного микрокомпьютера, который бы мог использоваться в равной степени и компьютерными энтузиастами, и студентами, и даже детьми. В конечном итоге он надеялся достичь такого же образовательного эффекта, что сыграли домашние компьютеры 80-х в бурном развитии компьютерных технологий 90-х годов.

Однако, задача оказалась непростой. За пару лет сменилось несколько концепций, это первый прототип:



О да, зрение вас не обманывает - он собран на ATmega644, у которого 19 из 32 пинов использовано для подключения микросхемы SDRAM размером 512K, хранящей буфер экрана и данные. Собственно вывод на экран происходил путем последовательного выставления на адресной шине адресов ячеек памяти, содержимое которых через микросхему логики серии 74HC и DAC формировало композитный видеосигнал 320x400. Какой-то другой работой, кроме формирования видеосигнала, разогнанный до 22,1 МГц MCU мог заниматься в межстрочных и межкадровых паузах.

Как уже можно догадаться, этот хардкор прототип в серию запущен не был, хотя схема и печатные платы были опубликованы. К 2008 году стало понятно, что бурный рост числа мобильных телефонов с мультимедийными возможностями в недалеком будущем сделает доступным и переносной компьютер аналогичного размера. Заметим, что к этому моменту более 96% мобильников имели внутри ARM, что и заставило в конечном итоге остановиться на этой технологии (в Raspberry Pi работает ядро ARM1176JZF-S).

Наконец, в августе 2011 разработка добралась до альфа-прототипов, и желающие получили возможность оценить будущее устройство. Были представлены LXDE на Debian, Quake III Arena и проигрывание FullHD видео 1080p. Одновременно стало понятно с ценой - на выбор было предложено два варианта:
  • А за $25 - 1 x USB, 256 RAM;
  • B за $35 - 2 x USB, 1 x Ethernet 10/100, 256 RAM (полгода спустя - уже 512MB).



Соотношение цены и возможностей произвело неизгладимое впечатление на общественность и 200 000 желающих "построились в очередь" на получение первых Raspberry Pi варианта B. Но количество устройств в первой партии все равно осталось 10 000 штук, и лишь 10 из них были реализованы раньше срока: азартные покупатели на e-bay выложили за них в сумме £16000. Дальше - больше, за первые 6 месяцев было продано полмиллиона штук.

В тот момент запросто можно было встать перед дилеммой: "на что лучше потратить 32 USD - на оригинальную Arduino Mega или на Raspberry Pi?". С одной стороны, за Arduino стояло весьма внушительное коммьюнити, готовые библиотеки, масса шилд-плат и простота программирования, с другой - за Raspberry Pi - Linux и возможности ARM, низкая цена.

Сам Линус Торвальдсон, кстати, высказывался на эту тему тоже двояко (из интервью в октябрьском номере LinuxFormat):  "Она (Raspberry Pi - прим. автора блога) слишком медлительна для того, что мне надо делать. Она на самом деле может выводить что-то на настоящий монитор, а потом вдруг не воспроизводит You­Tube, а если она не может нормально делать такие вещи, значит, она слишком медлительна ... мне очень нравится идея такого дешевого оборудования, что его можно дать детям ... подозреваю, что следующее поколение будет значительно лучше...". Не осталась без внимания и "устаревшая, а потому и такая дешевая SoC", на которой построено устройство. Впрочем, всё это не остановило энтузиастов, пожелавших собственноручно испытать Raspberry Pi в действии.

Что придется добавить


Итак, мы встали в очередь и приобрели себе "малинки". Что потребуется добавить для получения некоторого полезного устройства (ну или чтобы просто "побаловаться" на досуге)? Ниже перечень, необходимый минимум состоит из первых двух пунктов:

1. Блок питания 5VDC с кабелем microUSB.

Для устойчивой работы Raspberry Pi достаточно иметь источник 700 мА. Потребности нашей "малинки" напрямую зависят от двух факторов: количества питаемых через USB устройств и степени разгона системы (да-да, его можно разгонять!). Если ничего не подключать, то уложитесь и в 500..600 мА. Но если, например, подключить WiFi-донгл и флешку - уже нет. Кстати, в  качестве источника вполне подойдет зарядное устройство от современного смартфона, выдающего на microUSB ток 1.5...2А.



2. SD-карточка

Начальная загрузка происходит с SD-карты, но в комплекте она, как правило, не идет. Нужна любая полноразмерная SD, емкостью от 2 Гб. Для комфортной работы практически всех дистрибутивов рекомендуется емкость 4 Гб и скорость class 6 (нередко встречаются рекомендации "от 8Гб и class 10").

Есть особенность установки полноразмерной карты в Raspberry Pi - она наполовину выступает за край:



Избежать такого позволяет специальный переходник и microSD:



Разумеется, потребуется устройство, которое запишет скачанный из интернета образ на эту SD-карту. Подойдет любой компьютер с кард-ридером и операционной системой Windows/Linux/MacOS.

В зависимости от того, что предполагается сотворить в итоге, могут также пригодиться:

3. Монитор и кабель к нему

К сожалению, установка дистрибутива часто протекает интерактивно, и приходится поглядывать на монитор, подойдет со входом HDMI или с видео-входом RCA (колокольчик). Качество картинки на HDMI, конечно же, будет лучше (не забудьте запастись соответствующим кабелем!)

Монитор с DVI-входом тоже подойдет, только купите переходник HDMI-DVI:



4. Клавиатура и мышь

Да, без них тоже сложно. Поскольку на Raspberry нет PS/2 - разъемов, подойдут только USB-устройства.

5. USB-хаб

Поскольку USB-портов на Raspberry Pi всего два (на модели А и того меньше), может оказаться нелишним. Обратите внимание на энергопотребление подключаемых устройств: чем их больше, тем мощнее должен быть блок питания у Raspberry. В противном случае, можно выбрать USB-хаб с собственным источником питания.

Я практически сразу стал использовать хаб - мой экземпляр Raspberry перезагружался каждый раз, когда в USB вообще что-то вставляли. Вот он:



6. Internet-подключение

Для проводного потребуется сетевой Ethernet-кабель и свободный порт на коммутаторе, для беспроводного - USB-донгл. При установке дистрибутива довольно часто приходится наблюдать, как что-то докачивается или обновляется. С другой стороны, после завершения установки на устройство можно "заходить" удаленно (и, таким образом, монитор, клавиатура и мышь оказываются ненужными - при условии, что вы знаете ip-адрес, который получило устройство). 

7. Кабель для вывода звука.

На Raspberry Pi есть стерео-гнездо 3,5 мм. Если вы подключили монитор при помощи RCA-кабеля, для вывода звука может потребоваться аудио-кабель со стерео-джеком 3,5 мм с одной стороны и с другой - как у вас на звуковой системе или TV (наушники тоже заработают).

В случае подключения по HDMI голову особо ломать не надо - звук пойдет там.

А вот микрофонного гнезда, к сожалению, нет. Придется прикупить USB-гарнитуру или USB-микрофон.

Медиацентр на Raspberry Pi


Часто люди задаются вопросом, насколько высок "порог входа" в мир RaspberryPi: что надо знать, чтобы там работать, там же ужасный и непонятный Linux? Всё зависит от дистрибутива, который будет выбран. Для тех, кто не хочет лишний раз пошевелить пальцем, предлагается Raspbmc, который основан на XBMC и прост в установке до предела. Ошибиться сложно, и если проделаете все правильно - получите на выходе готовый медиацентр.

Необходимое условие - наличие сетевого подключения у Raspberry (с сервером dhcp в придачу, от него Raspberry Pi получит сетевой адрес автоматически, вместе с выходом в Internet). Тогда клавиатура и мышь для установки вообще не нужны. Правда, для последующего управления медиацентром мышь все-таки потребуется.

Итак, отправляемся на http://www.raspbmc.com/download и получаем инсталятор для своей ОС вместе с подробными инструкциями по установке.

Windows

Вставляем SD-карточку, распаковываем raspbmc-win32.zip и запускаем setup.exe (сопровождается запросом UAC, если установлена Vista и выше):



Все данные на карточке погибнут, поэтому будьте внимательны! Выбирайте из списка именно ту карточку, на которую собираетесь использовать для установки Raspbian.

Linux

Вставьте SD-карточку в ридер, затем скачайте и запустите скрипт:

wget http://svn.stmlabs.com/svn/raspbmc/release/installers/python/install.py
chmod +x install.py
sudo python install.py
Появится "дружественный интерфейс":


Тут тоже важно не промахнуться мимо целевого диска (и не отформатировать случайно свой основной).

Всё, образ готов, теперь вставляем SD-карту в Raspberry Pi, подключаем его к монитору и к LAN, затем подаем питание и наслаждаемся радугой (заранее прошу прощения за муар - делал фото с экрана телевизора):


После Linux-оводы наслаждаются логами загрузки ядра:



Далее стартует интерфейс в стиле ncurses и сообщает, что он коннектится куда надо:



Если соединение прошло успешно, скачивается самый свежий образ:


(про кофе - истинная правда, а в действительности можно еще и супчик успеть навернуть...)


И вот, наконец-то видим, что устройство пошло перезагружаться с таким лого:


Ну, значит всё в порядке - через некоторое время попадаем в основной интерфейс Raspbmc:


Описание GUI выходит за пределы нашей статьи - единственное, что отмечу - в настройках можно переключиться на русский язык.

Виртуальный Raspberry Pi


Чтобы экспериментировать с программным обеспечением Raspberry Pi, покупать его не обязательно. Можно воспользоваться QEMU, и хоть это и не будет стопроцентным аналогом (чип BCM2835 не эмулируется), но довольно хорошим приближением к устройству с точки зрения архитектуры ARM. Для установки в Linux надо выполнить (в зависимости от типа дистрибутива):

yum install qemu

или

apt-get install qemu-system-arm

Создайте рабочий каталог и скачайте туда два файла: http://xecdesign.com/downloads/linux-qemu/kernel-qemu и какой-нибудь образ ОС для Raspberry Pi отсюда (я взял тот, что на основе Fedora, с интригующим названием "PiDora") - распакуйте его, если он был запакован.

Есть вероятность, что для запуска в qemu этот имидж требуется немного подправить, для этого выясните параметры самого имиджа при помощи file:

$ file Pidora-2014-R1.img

Pidora-2014-R1.img: x86 boot sector; partition 1: ID=0xc, active, starthead 32, startsector 2048, 102400 sectors; partition 2: ID=0x83, starthead 127, startsector 104448, 4355793 sectors, code offset 0xb8

Умножьте число в startsrector для partition 2 на 512 (выделено жирным выше, в вашем варианте может отличаться) и полученный результат подставьте в параметре offset при монтировании:

$ mkdir pidora
$ sudo mount Pidora-2014-R1.img -o offset=53477376 ./pidora

Открываем в любом текстовом редакторе файл ./pidora/etc/ld.so.preload и комментируем единственную строку, добавляя впереди символ #. Может статься, что такого файла не существует - в этом случае вообще ничего делать не нужно.


После этого надо отмонтировать образ:

$ sudo umount ./pidora

И запустить QEMU следующей строкой:

$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1" -hda Pidora-2014-R1.img 

Если все сделано правильно, увидим процесс загрузки и выйдем на начало графической установки:



В следующей серии попробуем все-таки собраться с силами и что-то сделать своими руками, а пока можете исследовать дистрибутивы для RaspberryPi ;)

2 комментария:

  1. Анонимный13 мая 2014 г., 21:53

    Чего только не делают с ними. Пример: http://www.slideshare.net/mlug/raspberry-pi-tanks

    ОтветитьУдалить
  2. Хотим больше статей о "малинке" для новичков ))).

    ОтветитьУдалить