Raspberry Pi как платформа учёбы

Несколько лет посматривал на Raspberry Pi, но энтузиазма не вызывало. Первые модели были откровенно слабыми. Модель 3B уже интереснее, но как-то незачем было. Да, микрокомпьютер, но всё равно не совсем полноценный по субъективным ощущениям. Да и к ARM по незнанию относился снисходительно. Короче, Малинка — игрушка для тех, кто в Arduino наигрался.
Но сошлись звёзды.
В-нулевых, несколько раз достаточно болезненно для ЧСВ получил понимание того, что без знания железа и low level программистом могу лишь считаться, но не быть им. Ощущения не понравились.
Во-первых, до меня дошло, что ARM’ы вполне серьёзная и любопытная штука. Могло и раньше, конечно, но вот так. А те чипы, что вышли за последнюю пару лет, вообще конфеты.
Во-вторых, за 2016..2017 гг. появилась литература, хорошо укладываемая на мои привычки обучаться, да и в целом качественной информации стало заметно больше.
В-третьих, остальная техника дошла до того уровня комфорта (мощность, цена, качество, удобство, доступный работающий софт), что позволяет оборудовать учёбу так, как считаешь нужным, а не как приходится.
И вот тут я подзавис. Крайне сложно чему-либо учиться, когда по квартире носится почти двухлетка с реактивным двигателем ниже спины, разрушительным любопытством и уверенностью, что во всех папиных делах найдётся место не только папе. Испробовал несколько решений, всё не подошло. ТЗ на процесс жёстко давило: нет проводам (быстро доберётся), нет ноуту (громоздко и тоже ооочень интересно), нет выделенному пятачку с любым оборудованием. Спокойно кнопить можно только с планшета по ночам. Но как, если надо собирать, дебажить и запускать программы на ARM-асме? Да чтобы не потратить кучу времени и денег на обустройство.
Осенило. Вернее, сначала подтолкнули учебники, в которых ARM даётся на MCU A-серии, а не на моей почему-то любимой M. Отправился листать каталоги плат, споткнулся об Raspberry Pi 3B+. Внезапно это уже хорошая железка. Памяти всё так же убого 1GB, но остальное норм, особенно набортные Wi-Fi, Bluetooth и Ethernet. Достаточно мощный и полноценный микросервер, итить, за почти разумные рубли. Дальше голова пришла к тривиальному, банальному, очевидному, прямому и простому решению, которое должно приходить в голову сразу, но приходит после поисков и метаний ромашкой в проруби — почему бы не поднять в квартире ARM-сервер на Raspberry Pi, после чего ходить туда и радоваться? Бинго.
По шагам получилось следующее:

  1. Купить наиболее оптимальный для себя вариант. Вариантов овердофига.
  2. Собрать железку, залить свежий образ нужной OS.
  3. Поднять SSH.
  4. Поднять Wi-Fi.
  5. Дать static IP.
  6. Закинуть на полку у розетки.

Всё просто. Нюанс только один: делать это всё на headless Raspberry Pi, разделы мануалов читать соответственно нюансу.


Во-первых, купил Raspberry Pi 3B+ Official Starter Kit за 6К рублей. Просто потому, что мне влом было по закромам собирать к голой плате солянку из блока питания, карточки и корпуса, а потом подбирать охлаждение, но при желании всё это заметно дешевле, конечно, особенно из Китая (этот же набор там 4.7К, например). Очевидно мажорское решение с переплатой за тот же ненужный HDMI-кабель, зато удобное. Не советую так делать, если у вас есть время и желание сделать более правильно. В любом случае 6К — это вот максимум цены за решение. Также учитывайте, что под одним и тем же названием по миру разные наборы.
Во-вторых, сразу залил на карточку образ последней Raspbian Stretch Lite. Десктоп не нужен. Кстати, всё равно там не всё последнее, потому потом ещё обновил пакеты. После заливки в boot создал файл ssh (без расширения и можно пустой), так при загрузке впервые поднимется ssh, иначе он выключен. Ну и собрал железку (наклеить радиаторы, сунуть в корпус).
В-третьих, карту с образом в Малинку, Малинку к блоку питания, блок питания в сеть. Пока грузится, найти патчкорд и подключить к ноуту, благо, с обеих сторон есть Ethernet. Завелось. Заходим на pi@raspberrypi.local, пароль raspberry, его правильнее сразу сменить. Запустить raspi-config, пойти в настройки интерфейсов и включить там ssh. Всё, пункт выполнен. Нужен Wi-Fi.
В-четвёртых, в том же raspi-config идём в настройки сети и включаем Wi-Fi. Этот пункт несколько мимо многих мануалов ручной настройки, но с ним намного проще, т.к. эти же мануалы часто пропускают настройку страны, без которой не получается. Можно иначе, но проще и быстрее всё же вот так. В итоге появляется конфиг wpa. Правкой конфигов донастраиваете под себя, погрязая в ребутах и косяках на пустом месте (помогли не тупить два мануала: один и другой). В конце концов Wi-Fi заводится, железка получает IP, сеть есть, ура.
В-пятых, в админке роутера прибиваете Малинке static IP. Этот IP и сопутствующие изменения вносите в конфиги. Отстёгиваете патчкорд окончательно, проверяете. Завелось. Дальше находите место у розетки, закидываете корпус с блоком туда, включаете и всё.
Уверен, есть более прямой путь настройки, но я настолько давно делал подобное руками, что вместо 15..20 минут удовольствия убился на пару-тройку WTF-часов, потому в тексте есть разница глаголов «сделал» (сделал вовремя нужное) и «сделать» (то, что надо было сделать сразу вместо того, чтобы тупить).
Теперь планшет. У меня всё разработческое на Android’ном планшете, потому поставил Termius. Он же есть и на iOS, но сам не пробовал, хвалить не буду. Андроидный хвалю — всё подключается, гамма приятная, виртуальная клавиатура удобная [для vim’ера], работает всё шустро.
Готово. Пару часов обкатывал. Ну… Получилось круто. Из любой точки квартиры в любой момент под рукой полный комплект (планшет с читалкой, гуглилкой и терминалом) учащегося. В целом удобно, если не наслаждаться непереносимостью голой консольки без IDE и прочих кнопочек. Если наслаждаться, то это же Debian, с прямыми руками многое можно под себя подкрутить. Проработал 80 страниц учебника, доволен. Ровно то, что хотелось. Подозреваю, в будущем могу к Малинке подключить какой-нибудь STM32 Nucleo и удалённо играть с ним, не изобретая варианты для освоения M-серии.

Может возникнуть здравый вопрос: чувак, ты просто поднял малиновый сервер и ходишь к нему по ssh, нафига столько букв? Ну, технически да. Эмоционально нет, большой шаг для человека, если посмотреть на всё в комплексе. В 2018 году Raspberry Pi внезапно представляет собою вполне неплохой bare-metal server, сравнимый с t3.micro, только с портами и GPIO, и без ограничений AWS. В 2018 году внезапно ты можешь кодить для ARM с планшета, удобно устроив тело на диване, и при этом не особо страдаешь. Также радуют современные «бытовые» ARM’ы (Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz вот просто так, считай, Карл). И радует возможность не просто кодить с планшета, но одновременно на нём читать учебник, сверяться со справочниками, гуглить странное, дебажить программу и всё-всё-всё. А в руках у тебя устройство размером с брошюру. А на полке в прихожей лежит устройство размером с сигаретную пачку.
Наконец, меня долго терзал вопрос «нафига» в адрес Raspberry Pi. И долго не долетал лобовой публичный ответ «для обучения». А ведь действительно это отличная платформа для обучения. Стоит недорого. Возможностей [3B+] даёт уйму. Сегодня учи ассемблер. Завтра подключи датчики к GPIO. Послезавтра напиши какую-нибудь фигню на Python. Надоело? Сделай из Малинки полезный сервер к чему-нибудь. Учебников хороших уже немало (от железных до программистских). Важно, что это не просто обучение, но полноценное обучение, вполне промышленное. Всё, что осваивается, так или иначе, но пригодится.
Вот это в сумме и восхитило.

Raspberry Pi как платформа учёбы: 3 комментария

    • В итоге стартовым выбрал [Robert Dunne. Assembly Language Using the Raspberry Pi. Gaul Communications, 2017].
      Затем продолжу [Larry D. Pyeatt. Modern Assembly Language Programming with the ARM Processor. Newnes, 2016], чередуя с [Eben Upton, … Learning Computer Architecture with Raspberry Pi. Wiley, 2016].

Добавить комментарий