воскресенье, 10 февраля 2013 г.

Малиновый звон. На пути к гигагерцу.

От жару и камень треснет.

Русская пословица.

Как и любая железка, Raspberry Pi имеет свойство нагреваться. Особо горячие места — это сам процессор, Ethernet/USB-контроллер и стабилизатор напряжения питания.


С другой стороны, в малинку заложен большой ресурс тактовой частоты: производитель сохраняет гарантию при разгоне до 1ГГц, имея по умолчанию 700 МГц. Грех не воспользоваться такими возможностями. Однако, при таком нагреве это чревато неприятными последствиями, поэтому нужно что-то делать с накалом битовых "страстей".
Вообще говоря, изначально разгон в Raspberry Pi не поддерживался вообще. То есть,теоретически ничего не мешало это сделать, однако решившийся сразу же лишался гарантии. В настоящее время оверклокинг и овервольтинг доступны всем, без нарушения гарантии: разработчики предусмотрели пять режимов разгона "из коробки", которые можно выбрать, вызвав конфигуратор (в данном посте рассматриваем Raspbian): $ sudo raspi-config .
Всего доступно пять таких режимов, максимальный из которых разгоняет ARM-процессор до 1 ГГц. В этом режиме процессор показывает производительность целочисленных вычислений на 52% выше, чем в стандартном режиме (700 МГц), операции с плавающей точкой в тесте nbench выполняются на 64% быстрее, а тесты памяти показывают прибавку 55%. Нормальной температурой при таком режиме считается любая, до 85°С. Если этот порог будет преодолен, то частота автоматически начнёт сбрасываться на меньшую. Итак, режим 1 ГГц и был моей конечной целью.

Подготовка платы

Для пассивного охлаждения я использовал мини-радиаторы для чипов Zalman.


Они очень круто подошли по размеру к CPU и Ethernet-контроллеру, для стабилизатора напряжения же оказались великоваты, но разрезать их я не стал. Используя термоклей, радиаторы были посажены на соответствующие "горячие" чипы и высыхали 24 часа. Получилось даже симпатично:



Разгон и контроль температуры CPU

После того, как плата была подготовлена, я приступил к пошаговому разгону. Весь разгон заключается в вызове raspi-config, выборе соответствующего пресета работы, перезагрузке и контролю температуры в трёх состояниях:
  • консольный режим без старта иксов;
  • десктопный режим с запущенными иксами;
  • десктопный режим с работой и использованием программ.
После снятия показаний температуры CPU во всех режимах, я отключал Raspberry и оставлял его под активным охлаждением вентилятора в течение пяти минут. После чего снова запускал в новом режиме оверклокинга. Таким образом, система стартовала вновь охлаждённой и мне не приходилось параллельно с тактовой частотой процессора контролировать и подбирать частоту ОЗУ, вольтаж и другие параметры — всё было любезно прописано в режимах, которые предоставили разработчики.
В самом плохом случае, при выборе нового режима, система может вообще не стартануть — это значит, что выбранная частота недосягаема. Такое, к сожалению, случается часто и зависит только от конкретной платы. Но поскольку я основательно подготовился, то надеялся, что это меня обойдёт стороной.
В качестве приложения, которое будет нам греть процессор я выбрал игру на Python "Squirrel eat Squirrel". Забавная такая штука. Согласно монитора, она и процессору даёт достаточно работы.



Итак, набираем $ sudo raspi-config, пункт overclock и видим следующее:


Выбрав очередной режим, необходимо посмотреть информацию с датчика процессора о температуре его нагрева. Помним, что приближение к 85°С приближает нас к неудаче и лишению гарантии, так что активно мониторим в каждом из пяти пресетов и трёх режимов. Проверить, действительно ли плата в настоящий момент работает на выбранной частоте можно, набрав в терминале:

$ vcgencmd get_config arm_freq

Результат выглядит примерно так: arm_freq=700.
Либо можно выкинуть в консоль информацию из файла, используя:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Если интересно, можно вывести всю целочисленную информацию из конфига, включая частоту ОЗУ, лимит температуры и другое:

$ vcgencmd get_config int

Результат будет примерно такой:

arm_freq=800
core_freq=250
sdram_freq=500
boot_delay=1
temp_limit=85


Контроль температуры можно осуществлять, вызывая команду (возвращает в градусах Цельсия):

vcgencmd measure_temp

Информация о температуре берётся из файла, содержимое которого можно вывести в консоль непосредственно:

$ cat /sys/class/thermal/thermal_zone0/temp

Результат выводится в миллиградусах Цельсия (да, такое тоже есть).

Результаты

Итак, моя прокачанная плата покорила все высоты, включая 1 ГГц. Результаты замеров температуры (показаны средние арифметические из 15 замеров в каждом режиме) привожу ниже.

1. 700 MHZ

Консоль Иксы Иксы + приложения
37,2°С 39,0°С 42,0°С

2. 800 MHZ

Консоль Иксы Иксы + приложения
38,1°С 40,0°С 44,5°С

3. 900 MHZ

Консоль Иксы Иксы + приложения
39,5°С 41,7°С 45,6°С

4. 950 MHZ

Консоль Иксы Иксы + приложения
41,2°С 42,8°С 45,6°С

5. 1000 MHZ

Консоль Иксы Иксы + приложения
41,7°С 43,9°С 53°С


Результаты оверклокинга с применением только пассивного охлаждения уже впечатляют — температура CPU заметно снижается и до опасного лимита остаётся большой запас. Конечно, эксперимент неидеален: во-первых, питоновская игра — это сомнительная нагрузка на процессор, куда более убедительным был бы запуск веб-сервера (какого-нибудь nginx или даже Apache) с полным боекомплектом в виде MySQL и PHP и мониторинг их длительной непрерывной работы. Но их установка связана была с техническими трудностями в плане интернета (именно в моём месте проживания).
Во-вторых, правильнее было бы всё-таки проводить бенчмарк с помощью какого-нибудь nbench, однако помешала этому опять же проблема номер один.
В-третьих, я проводил замеры на открытой плате, не учитывая корпус, а ведь его наличие усложнит воздухообмен и практически наверняка повысит нагрев CPU. Но и тут я найду оправдание: корпуса у меня попросту нет (точнее, он ещё не готов). Поэтому, эксперимент носит чисто любительский характер, но, тем не менее, вселяет оптимизм по поводу дальнейшего использования Raspberry Pi.
Читать дальше......

Малиновый звон. Первый первый, полёт нормальный.

Малиновое вино, к пьянящему аромату
Подмешана горечь слёз и ранняя боль потерь

И.Николаев (?)

Итак, в предыдущем посте я поведал о том, как у меня оказалась замечательная Raspberry Pi. Как только я ей обзавёлся, у меня, естественно, зачесались руки запустить на ней атомный реактор что-нибудь. Что я успешно проделал …

Что мы имеем?

Для комфортного запуска ОС нам нужно решить четыре основных вопроса:
  • с чего загрузить?
  • что грузить?
  • чем управлять?
  • куда выводить информацию?
Разберёмся по порядку.
  1. Как можно было заметить по описанию Raspberry Pi, накопителя данных у неё нет. Вместо этого предлагается использование SD (или microSD с адаптерами-переходниками) карт с загруженным образом ОС. Тут тоже не всё так просто: выбрав первую попавшуюся в магазине SD-карту есть риск так и не увидеть загрузочного экрана, поскольку отдельные вендоры не поддерживаются. Есть два основных правила выбора:
    • класс SD-карты должен быть >= 6;
    • необходимо проверить свою карточку на совместимость в RPi Verified Peripherals List.
    В общем-то, этого списка касается и вся остальная периферия, которая подключается к Raspberry. Объём памяти нужно выбирать в зависимости от того, какая ОС будет на ней "бегать", какие дополнительные пакеты нужно установить и для чего, собственно, вам железка. Меня устроила Transcend SDHC 8Gb class 10. Надо сказать, что флешки этой фирмы вообще почти не имеют несовместимостей с малинкой.
  2. Другое дело — а что на ней запускать? В связи с тем, что мы имеем дело не с x86 архитектурой, а с ARM, то выбор у нас не такой большой. Варианты можно посмотреть здесь. Самые популярные — это сборки линуксов (Raspbian, Arch Linux ARM, Fedora Remix, PiBang), своеобразная и редкая RISC OS и ещё какая-то совсем исследовательская Plan 9.
    Энтузиасты также запускают Android (очень нестабильный), Chromium OS, WebOS и даже Firefox OS. Ну прямо Underdogs Strike Back!
    Официально рекомендованными и стабильными являются Raspbian, Fedora, Arch и RISC IS. Я лично пробовал только Raspbian и неофициальную PiBang. Обе весят около 2х Гб и имеют из коробки набор некоторых программ и утилит. Графическая оболочка — LXDE (что и понятно), но в PiBang'e иксы "бегают" на OpenBox'e. В целом, PiBang смотрится выигрышнее и шустрее работает, однако имеет целую гору приложений, которые непонятно зачем нужны из коробки на Raspberry (Abiword, GIMP). Обзор ОС я сделаю позже, когда попробую ещё несколько систем. Первый же запуск я производил на Raspbian. Записать загрузочный образ системы на карту очень просто. В Windows нужно скачать утилитку Win32DiskImager и указать в ней пути к образу и карте (см. рис. ниже). Пара кликов, пять минут и дело сделано:


    В Linux и Mac просто ввести команду:

    $ sudo dd bs=1M if=/<путь к образу> of=/dev/<ваша SD-карта>

    После этого карточку можно вставлять в Raspberry и грузиться.
  3. Насчёт периферии — опять же к RPi Verified Peripherals List. У меня из периферии была только беспроводная мышь Logitech M510. В срочном порядке взял у друга usb-клавиатуру Oklick 400M на время. В будущем планирую и вам рекомендую обзавестись набором клавиатура+мышь с одним передатчиком, так как занимать 2 имеющихся порта USB из 2х расточительно.
  4. И последний вопрос у меня решился необычным способом. Дело в том, что Raspberry поддерживает два видеовыхода: это HDMI и композитный RCA (провод к которому в народе именуется как "тюльпан"). Никаких VGA напрямую подключить нельзя. Поскольку монитора у меня не было, то … пришлось цеплять через тюльпан стоящий в комнате "тёплый ламповый" телевизор :). Используется только жёлтый провод, для видеосигнала.
Что мы получили?

В целом, вся плата с соединённой периферией выглядела вот так. Запускаем:


Raspbian шустро начинает грузиться:


И вскоре выбрасывает нам окошко raspi-config.


Разберём, что к чему:
  • expand_rootfs — это первое, что необходимо сделать. Команда расширяет файловую систему на весь объём SD-карты.
  • overscan — эту штуку лучше включить, если вы подцепили аналоговый телевизор, это позволит изображению не вылазить за рамки дисплея.
  • configure_keyboard — здесь можно выбрать драйвер клавиатуры, если дефолтный чем то не угодил
  • change_pass — позволяет сменить пароль. По умолчанию для логина 'pi' пароль 'raspberry'
  • change_locale — здесь можно поставить русскую локаль (берите utf-8). Выбирается пробелом, затем подверждается.
  • change_timezone — установка часового пояса. Малинка не имеет аппаратных часов, время синхронизируется по интернету
  • memory_split — распределение памяти для Raspberry. Тут предлагается оттяпать некоторое количество оперативной памяти для графического процессора. В зависимости от нужд, можно установить от 16 до 256 Мб. Если не выходить дальше консоли, то 16ти вполне хватит.
  • overclock — разгон процессора. Пока не трогаем, о разгоне напишу отдельно.
  • ssh — включить/выключить ssh-сервер. По дефолту отключен.
  • boot_behaviour — стартовать ли иксы при загрузке. По умолчанию включено. При выключении, иксы всегда можно стартануть из консоли командой startx
  • update — попытка обновить raspi-config
После настройки мы попадаем в консоль, либо грузятся иксы. В моём случае, они выглядели вот так:


Чтобы сохранить свои настройки, можно сделать бэкап. Делается точно теми же инструментами, что и записываются образы SD. В Win32DiskImager необходимо выбрать диск, ввести путь до файла с бэкапом и кликнуть Read. В никсах:

$ sudo dd if=/dev/<ваша карта> of=/<путь к файлу> bs=1M

Поскольку Raspbian позиционируется, как система для образовательных целей (как и сама железка Raspberry Pi, но мы то знаем), то здесь из коробки стоят некие оболочки для детского программирования Scratch и Squeak. Также есть питоновский IDLE, легковесный браузер Midori, текстовый редактор nano, конфигуратор Wi-Fi, наборчик винрарных игр на Python, а также Debian Reference и ссылка на магазин приложений PiStore.
В целом, впечатления от первого запуска хорошие. Конечно, особой резвости от Raspberry ждать не стоит, однако свою миссию она успешно выполняет: маленький, дешёвый и достаточно функциональный портативный компьютер, который, при определённой прямоте рук, способен улучшить жизнь изобретательных гиков, доставляя много радости от процесса.
Читать дальше......

Малиновый звон. Начало

И было много воздуха, и было много снега!
Три синих-синих озера малинового цвета

Из одноимённого мульта

Я уже активно писал во все свои СМИ о том, что являюсь одним из ~ миллиона обладателей железки Raspberry Pi. Настало время собрать все эти разрозненные источники в одно целое. Не стану утомлять и без того редкого читателя копипастой, постараюсь написать кратко и понятно о том,как я с этим связался.

Что это такое?

Raspberry Pi — самый настоящий полноценный одноплатный компьютер. Что в нём удивительного? Есть два основных плюса этого творения:
  • его цена: 25 - 35 $ в зависимости от модели;
  • его размеры — чуть больше кредитки.
Собственно, эти два пункта и являются источником всеобщей (почти) гиковской любви к миниатюрной плате. Потому как за смешную цену мы получаем полноценный качественный компьютер, который позволяет нам сделать с ним, на что хватит фантазии. Прибавьте к этому ещё и низкое энергопотребление. Примеров использования железки более чем достаточно. Характеристики я также не буду приводить, они представлены на этой странице.

Где взял?

Проблема для сибиряков заключается в покупке и доставке. Так как географически мы отдалены от родины малинки, то её заказ связан с определёнными проблемами:
  1. цена существенно возрастает и практически не поддаётся вычислению из-за всевозможных таможенных и почтовых накруток;
  2. сроки доставки от официальных поставщиков Farnell и RS Components также не поддаются вычислению и могут тянуться до полугода и более
Несмотря на всё это безобразие, прямой заказ от поставщиков — самый дешёвый способ получить Raspberry Pi в России. Есть ещё один способ — купить у посредников или на барахолках (eBay, Avito и т.п.). Посредники накручивают цену до 200% и выше, на барахолке можно просто нарваться на испорченную или некачественную железку. В общем, если вы хотите взять быстро, то придётся рискнуть деньгами.

Перипетии доставки

Конкретно я брал через интернет-магазин ДКО "Электронщик". Тут есть хороший вариант доставки наложенным платежом по Почте России. Нагуглив положительные фидбэки о магазине, решил выбрать именно его, так как дешевле мне найти не удалось и другие посредники попадались какие-то подозрительные. В общем, источник я нашел, средства были — можно заказывать.
Однако, не всё так просто. Я, наверное, затерроризировал работниц этого горе-магазина впоследствии, поскольку меня вводило в недоумение отсутствие какой-либо информации о статусе заказа на сайте. Грубо говоря, оформив заказ, я погружался в полную тишину и не располагал ни малейшей информацией о том, где и что. Во-первых, я ждал звонка от магазина, в подтверждение моего заказа. Когда его не последовало через два дня, я написал им письмо. И лишь потом, когда я прошерстил сайт вдоль и поперёк в одном малюсеньком разделе я наткнулся на объявление, гласившее о том, что заказы до 8 января не обрабатываются (я заказывал где-то перед Рождеством, числа пятого). Ну ладно, люди отдыхают, хотя разместить об этом информацию на главной странице то ли не успели, то ли не захотели, то ли не додумались. Юзабилити на высоте.
Девятого числа мне написали на почту, что не могут мне дозвониться и я должен подтвердить заказ самостоятельно в течение ближайших десяти часов. Это я называю "удачно зашёл". Звонили ли они на самом деле и куда для меня до сих пор загадка, однако подтвердил заказ я обратным имейлом с указанием его номера и имени. Ок.
Второе, что меня не устроило — это моё неоднократное выбивание кода для трекинга посылки. Но после второго письма мне его-таки выслали. Конечно, это всё мелочи и ничего страшного, и мы к такому привыкли,но …

Что вышло?

Итоговая формула цены вышла такая: [(Цена + издержки на доставку в Россию)×(процент накрутки посредника) + (стоимость доставки) + (комиссия за перевод денег почтой)]×(комиссия почты). Заказывать одну плату получается очень невыгодно: все накрутки обойдутся примерно как цена от самого посредника. Однако, мне удалось найти в Иркутске (!) ещё двух человек из своих друзей, кому эта железка понадобилась. Таким образом, нам удалось раскидать все доставочные накрутки грубо на троих. Итого, вместе с адаптером питания, мне плата обошлась примерно в 93$.

Что пришло?

Уже по виду упаковки можно определить, что в "Электронщике" платы заказывают с Farnell. Плата оказалась ещё меньше, чем я думал, хотя не раз видел фото в интернете и unpacking-видео.

Сама плата упакована в темный пластиковый пакет, вставленный в коробочку, как на фото.

Помимо неё заказывал ещё адаптер Robiton USB1000/microUSB (на выходе 5 В, 1 А).

Подключил — загорелся PWR светодиод. А значит, "мы живы" :)


Но это ещё только начало. В следующих постах расскажу про первый запуск, оверклокинг и разгон, парад Осей на маленькой малинке и как сварганить корпус своими руками.
Читать дальше......