Наш канал в telegram

Микрокомпьютер Omega2. Часть 1. Первое знакомство.

Что такое Omega2?

Omega2 — это одноплатный компьютер, разработанный фирмой Onion на базе SoC (System on a Chip) MT7688 от Mediatek. Работает под управлением ОС OpenWRT, основанной на Linux и имеющей открытый исходный код. Позиционируется компанией-производителем как «самый миниатюрный Linux-сервер в мире».

Ядро — MIPS32, частота CPU — 580 МГц, на борту имеется: WiFi, USB, 2 PWM, 2 UART, I2C, I2S, SPI, 15 GPIO

Omega2 существует в двух вариантах, — собственно Omega2 и Omega2+, отличающихся только размерами RAM (64 Мб у Omega2 и 128 Мб у Omega2+) и Flash (16 Мб у Omega2 и 32 Мб у Omega2+), а также наличием картовода MicroSD (у Omega2+ он припаян, а у Omega2 — нет, хотя площадки под него есть).

Микрокомпьютер Omega2 не только очень маленький, но ещё и очень дешёвый, — в России цена на него стартует от 12-15 долларов. Здесь, однако, есть небольшая хитрость.

Дело в том, что Omega2 представляет собой модульную конструкцию. То, что подаётся маркетологами как микрокомпьютер — это скорее базовый модуль, на котором распаяны сам SoC, flash-память и RAM. Никаких стандартных разъёмов для питания и периферии нет, просто по бокам модуля выведены ноги для их подключения. По форме такая конструкция напоминает большой чип в DIP-корпусе.

фото базового модуля Omega2
распиновка базового модуля Omega2

Есть ещё один вариант корпуса, — под пайку на плату. Этот вариант дороже, но ног наружу выведено больше:

вариант корпуса Omega2 под пайку на плату

Чтобы получить законченный компьютер со стандартными разъёмами для питания и периферии — нужно использовать дополнительные модули. Эти модули делятся на док-станции и модули расширения.

Док-станции имеют в своей конструкции какое-либо решение для питания всей собираемой конструкции (линейный или импульсный преобразователь на 3,3В), а модули расширения предназначены только для подключения периферии.

Хитрость здесь в том, что все дополнительные модули имеют стоимость на 3-5$ выше, чем базовые модули. Таким образом предполагается, что потребителям в любом случае (даже с одной-единственной, самой простой док-станцией) придётся выложить за микрокомпьютер Omega2 чуть более чем в два раза больше денег, чем озвученная маркетологами цена. Стоимость такой сборки будет всё ещё меньше, но уже сравнима со стоимостью, например, тех же Raspberry Pi, на которых вся возможная периферия распаяна сразу, а если добавить ещё и модули расширения, то отличий по цене вообще не будет.

Тем не менее, именно модульность и низкая стоимость базовых модулей Omega2 привлекли к ним моё внимание. Модули и док-станции можно, в конце-концов, и самому сделать какие угодно. Так что… начнём изучение. Сразу скажу, что на сайте фирмы Onion есть довольно большой архив документации на модули Omega2, однако, он полностью на английском, и, кроме того, создан с участием всё тех же маркетологов (которые разводят нас на дополнительные модули). Мы, вместо этого, как говорил товарищ Ленин, — пойдём другим путём.

Система питания. Включение Omega2 без док-станций (на макетной плате)

Поскольку покупать док-станции меня лично душит жаба, то я решил включить омегу прямо на макетке. Изучение фотографий оригинальных док-станций однозначно позволяло сделать вывод, что линейный стабилизатор с 5В на 3,3В в корпусе SOT-223 способен справиться с поставленной задачей (кроме того, вики утверждает, что ток потребления модуля 0,6 А). Таким образом в качестве источника питания я решил использовать свой модуль для питания беспаечных макетных плат, в котором используется LM1117-3.3 в корпусе SOT-223 (по доке она может выдавать ток до 0,8А).

Важно также правильно подключить ноги, отвечающие за reset (мы же не хотим, чтобы плата висела в бесконечном цикле перезагрузок). Таких ног у модуля, судя по распиновке, две: RST и FW_RST. Осталось разобраться какая для чего. Подробного описания распиновки модуля мне найти не удалось, поэтому подключим логику и опыт.

Опыт подсказывает, что было бы очень логично организовать для входа reset подтяжку к шине питания или земли, тогда для сброса было бы достаточно замыкать нужную ногу на другую шину (к которой нет подтяжки). Именно так выглядит самая стандартная схема сброса и на это нам намекает кнопка Reset на всех док-станциях. Берём мультиметр и выясняем сопротивление от обоих ног (RST и FW_RST) на землю и питание. Получаем, что от ноги RST до любой шины порядка 100 кОм, а вот сопротивление от ноги FW_RST на землю составляет 4,7 кОм. Вот оно! Что может быть стандартнее? Итак, внешний reset завязан на ногу FW_RST, нога подтянута к земле через резистор, а сам сброс очевидно вызывается замыканием этой ноги на шину питания. То есть мы можем просто оставить эту ногу висеть в воздухе, а можем приделать сюда кнопку, при нажатии на которую нога будет замыкаться на питание.

Зачем же тогда нужна нога RST? Скачав даташит на SoC MT7688 мы найдём в нём только три ноги, так или иначе связанных со сбросом: PORST_N (вход power on reset), WDT_RST_N (выход watchdog timeout reset), PERST_N (вход/выход PCIe device reset). Очевидно, что PORST_N мы уже нашли — сюда завязана нога FW_RST нашего модуля. PCIe на нашем модуле наружу не выводится, значит остаётся выход WDT_RST_N (это нам пока не нужно, но на будущее запомним).

Подключение в терминал Linux через последовательный порт

Кроме питания, нам конечно же понадобится как-то пообщаться с модулем Omega2. Это можно сделать через веб-интерфейс, доступный по WiFi (по умолчанию наш модуль настроен как точка доступа WiFi). А можно подключиться через последовательный порт в терминал Linux. Я выбрал второй вариант, поскольку у меня нет компьютера с WiFi или WiFi свистка (ну не телефоном же подключаться). Есть WiFi роутер, но на нём поднята домашняя WiFi сеть, которую трогать бы очень не хотелось (лучше потом омегу к этой сети подключить).

Подключиться в терминал можно через через аппаратный COM-порт, а можно через USB-to-UART преобразователь. Я буду использовать USB-to-UART преобразователь RH-0003. Для подключения необходимо вывод TxD USB-to-UART преобразователя соединить с выводом RX0 модуля Omega2, а вывод RxD USB-to-COM преобразователя соединить с выводом TX0 модуля Omega2. Кроме того нужно соединить вывод GND USB-to-COM преобразователя с выводом GND нашего модуля. Последний пункт можно и не выполнять, если преобразователь напряжения (который делает нам 3,3 Вольта) питается от USB-разъёма того же компьютера, к которому выполняется подключение (в этом случае «земли» у источника питания и USB-to-COM преобразователя и так общие).

Итак, учитывая всё, сказанное выше, схема подключения модуля Omega2 к компьютеру выглядит так:

схема подключения модуля Omega2 к компьютеру

Для связи удобно пользоваться популярной утилиткой putty. Если у вас её ещё нет — обязательно качаем. Настройки в ней следующие: connection type — serial, speed — 115200, Serial line — указываем номер COM-порта, к которому будем подключаться.

Картинка под катом

окно настроек putty для подключения к Omega2

[свернуть]

Итак: 1) всё соединили, 2) настроили putty и открыли новый сеанс связи 3) подали питание

После подачи питания к нам в терминал начинает сыпаться протокол загрузки системы. Протокол загрузки содержит много полезной инфы: версия загрузчика, ресурсы системы, загружаемые драйвера и т.д. Процесс загрузки длится около минуты и сопровождается миганием светодиода на плате. Как только данные в терминал сыпаться перестали и диод перешёл на постоянное свечение — всё, загрузка завершена. После окончания загрузки жмём на клавиатуре Enter и попадаем в командную строку. Сверху, над командной строкой можно увидеть шапку с текущей версией прошивки (у меня, как видите, прошивка 0.1.9 b159).

Картинка под катом

командная строка Linux модуля Omega2

[свернуть]

Подключение Omega2 к сети WiFi и обновление прошивки

Первое, что нам нужно сделать далее — это обновить прошивку. У меня, например, с прошивкой 0.1.9 не работало управление GPIO из командной строки (при попытке ввести команду omega2-ctrl gpiomux get вылезало сообщение «unable to open mmap»).

А для обновления прошивки нужно первым делом подключить модуль Omega2 к сети WiFi, через которую он сможет подключиться к интернету (модуль у нас без обвесов, так что других путей наружу, кроме serial и WiFi, — нет). Сделать это очень просто — вводим команду wifisetup, жмём Enter и далее жмём 1, выбирая тем самым пункт Scan for WiFi networks. Далее Omega2 выведет список доступных WiFi сетей, в котором нужно будет выбрать свою и подтвердить выбор клавишей Enter. Если ваш WiFi защищён паролем, Вам также предложат ввести пароль для подключения. После этого Omega2 настроит свой модуль WiFi на подключение к вашей сети.

Картинка под катом

подключение Omega2 к сети WiFi

[свернуть]

Теперь, когда у нашего модуля есть доступ в интернет через Вашу домашнюю сеть WiFi, можно приступать к обновлению прошивки. Для этого достаточно ввести в командной строке команду oupgrade и нажать enter. В этом случае будет автоматически скачана и установлена последняя стабильная версия прошивки. Команда oupgrade имеет несколько опций (нам никаких опций вводить не нужно, это просто для общего развития):

  • -h, —help — помощь в использовании команды
  • -v, —version — только вывести текущую версию прошивки
  • -l, —latest — использовать последнюю версию из репозитория (вместо последней стабильной версии)
  • -f, —force — запустить апгрейд независимо от текущей версии (например, в случае, если текущая версия и так самая последняя, но вы всё равно хотите её переустановить)
  • -c, —check — только сравнить версии, не выполняя апгрейд
  • -u, —ubus — Script outputs only json (расскажите что это, если кто-то знает)
Картинка под катом

обновление прошивки модулем Omega2

[свернуть]

В процессе обновления прошивки модуль Omega2 подключится к репозиторию onion, скачает новую прошивку и установит её. Весь протокол действий вы сможете видеть у себя в терминале, плюс как обычно будет мигать светодиодик на плате. Как только светодиодик перешёл на постоянное свечение и в терминал перестали сыпаться всякие сообщения — всё, прошивка завершена (печально, что в конце всяких перезагрузок или апгрейдов не выводится никаких сообщений о том, что всё прошло успешно, но что уж поделать).

Если мы теперь введём в командной строке oupgrade -v, то увидим, что версия прошивки у нас изменилась на 0.1.10 b160.

Картинка под катом

модуль Omega2 с обновлённой прошивкой

[свернуть]

Возврат Omega2 к заводским настройкам

Чуть не забыл (вернее забыл и потом добавил) про самое главное в любых экспериментах — что делать чтобы «вернуть всё как было». В Omega2 для возврата к заводским настройкам, чтобы полностью стереть всё, что мы наменяли и назаписывали, восстановить всё, что мы наудаляли и получить модуль с чистой прошивкой, необходимо выполнить из командной строки следующие 3 команды:

firstboot -y
sync
reboot

Первая команда возвращает прошивку к исходному состоянию, вторая — завершает все операции сохранения данных и наконец третья — перезагружает модуль Omega2.

Вот для начала и всё. Теперь с нашим модулем можно работать.

  1. Часть 1. Первое знакомство
  2. Часть 2. Использование GPIO
  3. Часть 3. Док-плата
  4. Часть 4. Работа с файлами
  5. Часть 5. Работа с USB flash-дисками
  6. Часть 6. Установка, настройка и использование php для интерактивного взаимодействия

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