Как я уже писал в других своих статьях, Murmulator - одноплатный ультрадешевый микрокомпьютер на основе платы Raspberry Pi Pico (см. https://habr.com/ru/articles/839960/).
Поверхностное описание потрохов Murmulator OS (МОС) я уже опубликовал (см. статью https://habr.com/ru/articles/839976/). Но там больше внимания уделял технической стороне дела. Давайте теперь рассмотрим её с точки зрения пользователя.
Официальный источник релизов и обновлений для МОС - сайт https://github.com/DnCraptor/murmulator-os/releases. Скачивайте оттуда архив (типа murmulator-os-0.2.6.1-VGA-HDMI-RGB.zip) и выбирайте подходящую вашему оборудованию прошивку (.uf2
файл). Порядок следования видеодрайверов имеет значение. Если основной вывод для вас VGA, используйте прошивку, которая начинается именно с этой аббревиатуры. Если у вас на плате Мурмулятора имеется звуковой чип (DAC), подключенный по i2s (доступно на Мурмуляторе v.1.4 и в виде навесных модулей), используйте прошивку, в имени которой имеется данная подстрока, например, murmulator-os-0.2.6-i2s-HDMI-VGA-RGB.uf2 - обозначает, что звук выводится через i2s (поддерживаются TDA1387T и PCM5102A DAC), а изображение по-умолчанию - в HDMI.
N.B. Вся дальнейшая информация актуальна для версии MOS 0.2.6.
Если вы уже обзавелись Мурмулятором, то должны себе представлять, как происходит его прошивка - подключить по USB к компьютеру, в появившийся диск (обычно имеет метку тома RPI-RP2) скинуть .uf2
файл прошивки и… всё. Микрокомпьютер запустит установленную прошивку. Для MOS необходим дополнительный шаг - обеспечить операционную систему рабочими утилитами, а в частности - командным процессором. Для этого из скачанного архива скопируйте папку MOS в корень вашей SD-карты. Если вы обновляете прошивку, не забывайте обновлять утилиты, которые идут в комплекте. SD-карта должна быть отформатирована, как FAT, с размером кластера 4 КБ.
МОС без SD-карты запускается в специальном режиме - режиме тестирования оборудования. Основная задача данного режима - проверить, что сигналы от клавиатуры и/или джойстиков доходят то микроконтроллера. Также она отображает информацию о частоте CPU и количестве памяти разных типов, доступных ОС...
Если вы всё сделали правильно, то запустится командный процессор по-умолчанию, который прописан в config.sys
(файл может располагаться в корне или в папке /mos
), как значение переменной COMSPEC
. В дистрибутиве это значение установлено в значение /mos/mc
, т.е. по-умолчанию запустится Murmulator Commander (не путать с Midnight Commander).
Работа с mc
мало отличается от работы с любым другим файловым менеджером. Кнопкой Tab
(Select
с джойстика) можно перемещаться между панелями, ну а кнопкой Enter
(A
джойстика), как обычно, заходим внутрь каталогов, или запускаем программы.
Также можно использовать mc
, и как командный процессор - просто вводить команды с клавиатуры. Для режима командного процессора имеется более удобное представление, переключиться в которое можно с клавиатуры комбинацией кнопок Ctrl+O
.
МОС нативно поддерживает русский язык для ввода, вывода и хранения данных. Для хранения используется кодовая таблица CP866 (совместимо с IBM и MS DOS), т.е. файлы, подготовленные в Windows и сохранённые в UTF или Windows-1251, будут отображать русские символы неверно (файлы требуют перекодировки). Для переключения режимов ввода используйте нажатие Ctrl+Shift
.
Самое частое использование Мурмулятора - запуск эмуляторов различных ретро-компьютеров, полный список которых можно посмотреть на сайте https://murmulator.ru/do. И, поскольку МОС - прямой наследник бут-лоадера (см. https://github.com/xrip/pico-launcher), который предназначен для запуска этих эмуляторов, МОС поддерживает всю ту же функциональность. Запуск .uf2
приложений кнопкой Enter
клавиатуры или кнопкой A
джойстика на выделенном файле.
В процессе прошивки .uf2
все прерывания ОС отключаются (особенность работы данного микроконтроллера), т.е. в это время отключается и драйвер дисплея. За процессом можно наблюдать только по морганию светодиода на плате. В момент окончания прошивки светодиод гаснет, и предполагается перезагрузка микрокомпьютера. Если перезагрузка не происходит автоматически (в версии 0.2.6 ещё не пофикшено), выводится соответствующее сообщение, что необходимо перезагрузить его вручную.
После перезагрузки ожидается запуск соответствующего эмулятора (в примере выше это будет pico-bk
).
Для того, чтобы вернуться в режим МОС, требуется нажать и удерживать клавишу пробел
, F11
, или кнопку SELECT
джойстика, во время подачи питания, или перезагрузки микрокомпьютера.
Если необходимо провести запись какой-то прошивки “штатными” средствами, требуется нажать и удерживать Enter
, F12
, или кнопку START
джойстика, во время подачи питания, или перезагрузки микрокомпьютера. Именно таким способом необходимо обновлять МОС, т.к. перезапись операционки “изнутри” самой операционки пока не поддерживается, МОС посчитает обновление ещё одним эмулятором.
Если необходимо включить вторичный драйвер дисплея, удерживайте нажатой кнопку Tab
клавиатуры, или кнопку А
на джойстике, в момент подачи питания или перезагрузки. Для переключения на третичный драйвер - удерживайте кнопку B
на джойстике, соответственно.
Когда запущен mc
, доступен режим связи МОС с внешним компьютером для передачи файлов. Для запуска этого режима, нажмите Alt+F10
или SELECT+B
. На компьютере появится дополнительный USB-drive, который является отражением SD-карты Мурмулятора. Карта доступна и на запись, и на чтение. Корректное закрытие данного режима - нажать “Извлечь диск” на стороне компьютера. Экстренный разрыв связи возможен и со стороны mc
, повторным нажатием Alt+F10
. Из командной строки то же самое доступно по командам usb on
/ usb off
Иногда требуется включить режим передачи файлов ещё до загрузки ОС. Нажмите и удерживайте кнопку Home
клавиатуры, или SELECT+B
джойстика. Выйти из данного режима можно только при помощи перезагрузки микрокомпьютера.
Главным отличием МОС от бут-лоадера является возможность запуска штатных МОС-приложений, не полноценных .uf2
-прошивок, а специально разработанных под МОС программ. В частности, из комплекта mc
имеется утилита mceditor
, которой удобно редактировать файлы конфигурации. Для обучения и развлечения доступен интерпретатор Бейсика - штатная программа basic
, а для проигрывания музыки в PCM-формате - программа wav
.
Основной набор утилит можно описать кратко:
cls
- очистить экран.
dir
/ ls
[dir] - показать список файлов в директории. Ctrl+C
прерывает вывод.
rm
/ del
/ era
[file] - удалить файл (или пустую директорию).
cd
[dir] - установить текущую директорию.
cp
[file1] [file2] - скопировать file1 с именем file2.
mkdir
[dir] - создать директорию.
cat
/ type
[file] - вывести файл на экран. Ctrl+C
прерывает вывод.
rmdir
[dir] - удалить директорию (рекурсивно).
elfinfo
[file] - показать подробную информацию об elf
-файле (все утилиты - эльф-файлы) - полезно для разработчиков.
psram
- выводит базовую информацию об установленном PSRAM чипе и проводит простой тест линейного чтения и записи в память. Ctrl+C
прерывает тест.
swap
- выводит базовую информацию об организации swap-файла и проводит простой тест линейного чтения и записи в память. Ctrl+C
прерывает тест.
sram
- проводит простой тест линейного чтения и записи в SRAM память. Ctrl+C
прерывает тест.
cpu
- выводит текущую частоту процессора и внутренние делители шины, cpu
[NNN] - сменить частоту процессора на указанную [NNN] MHz (устройство может повиснуть в результате данной операции); cpu
[NNN] [n] [m] - расширенный синтаксис разгона (использовать, только если понимаешь, что делаешь). Частота CPU по-умолчанию - 378 MHz.
mem
- вывести текущее состояние памяти микрокомпьютера.
set
- посмотреть или установить переменные окружения.
export
- положить переменную в системный контекст.
mode
[#] - установить видеорежим.
Поддерживаемые видеорежимы:
VGA:
0 - 53x30 - только текст (режим оставлен для совместимости);
1 - 80x30 - только текст, реальное разрешение экрана - 640x480@60;
2 - 100x37 - только текст, реальное разрешение экрана - 800x600@60;
3 - 128x48 - только текст, реальное разрешение экрана - 1024x768@60;
4 - 256x256x2-bit - только графика, реальное разрешение экрана - 1024x768@60;
5 - 512x256x1-bit - реальное разрешение экрана - 1024x768@60;
6 - 320x240x4-bit - реальное разрешение экрана - 640x480@60;
7 - 320x240x8-bit - реальное разрешение экрана - 640x480@60;
8 - 640x480x4-bit - жрёт много памяти;
HDMI:
0 - 53x30 - только текст, реальное разрешение экрана - 640x480@75
1 - 80x30 - только текст, реальное разрешение экрана - 640x480@75
2 - 320x240x4-bit - реальное разрешение экрана - 640x480@75;
TV (RGB):
0 - 53x30 - только текст, реальное разрешение экрана - 640x480@50
less
- отобразить другую команду постранично, например ls | less
. Use Ctrl+C
for exit.
hex
[file]/[@addr] - отобразить шестнадцатеричный дамп файла или участка памяти. Use Ctrl+C
to interrupt.
tail
[-n #] [file] - отобразить последние n (по-умолчанию - 10) строк из файла. Use Ctrl+C
to interrupt.
usb
[on/off] - монтировать SD-card как USB-drive.
mc
- Murmulator Commander - многофункциональный командный процессор с псевдографической оболочкой файлового менеджера, поддерживает операции копирования, перемещения и удаления для множества файлов одновременно (используйте кнопку Insert для выделения объектов).
mcview
[file] - Murmulator Commander Viewer - приложение для просмотра текстовых файлов, поддерживает страничный скроллинг кнопками Page Up / Page Down.
mcedit
[file] - Murmulator Commander Editor - редактор текстовых файлов.
mv
[from_file_name] [to_file_name] - переместить или переименовать файл.
gmode
[#] - простой тест графического режима.
font
[width] [height] - отобразить текущий шрифт или установить другой, например: font 6 8
blimp
[n1] [n2] - простой тест звукового канала “пищалки”. [n1] - число циклов, [n2] - число ОС-тиков (мс) между высоким и низким уровнем пищалки (1/часота). Не работает в режиме i2s.
wav
[file] [bytes] - простой проигрыватель .wav
-файлов. Use Esc
or Ctrl+C
to interrupt. Параметр [bytes] позволяет резервировать часть памяти для других задач. В противном случае проигрыватель использует всю доступную память, оставив только 512 байт на всякие неожиданности.
basic
[file] - небольшой basic-интерпретатор (разработки Stefan Lenz, см. https://github.com/slviajero/tinybasic). Use Ctrl+C
to interrupt. Имеет интерактивный режим. Графические функции доступны только в графических режимах. Для VGA рекомендован mode 6
, для HDMI - mode 2
.
ps
- список “процессов" (задачи ядра ОС - FreeRTOS).
kill
[n] - отправить SIGTERM
"процессу" (задаче FreeRTOS), [n] - номер “процесса”, см. ps
.
dhrystone
[n] [kHz] - простой тест целочисленной производительности процессора (см. https://github.com/DnCraptor/arm_benchmarks)
whetstone
[n] - простой тест производительности с плавающей точкой (см. https://github.com/DnCraptor/arm_benchmarks)
cmd
- облегчённая версия командного процессора, которая не имеет псевдо-оконного режима, а только режим командной строки. Бывает полезен, когда остро не хватает памяти, т.к. он значительно компактнее тяжеловесного mc
.
Также поддерживаются операции перенаправления стандартного вывода, например:
mem > mem.info
- создаст файл mem.info
и запишет туда весь вывод команды mem
кроме сообщений об ошибках (перенаправления типа mem 2> mem.err
пока не поддерживаются), а команда sram >> mem.info
- добавит в существующий файл ещё и результат выполнения команды sram
.
Для запуска программы в скрытом режиме используйте символ &
- detach (отсоединение) с перенаправлением вывода. Например:
wav /music/8t-sonata.wav 50000 > wav.log &
- вывод команды будет перенаправлен в файл, сама команда будет выполняться в фоновом режиме, при этом зарезервировав 50000 байт под другие приложения.
Прямой и обратный слеш для МОС равнозначны, т.е. Можно писать cd /
и cd \
, и будет выполнена одинаковая операция.
Большие и маленькие буквы в именах файлов - равнозначны.
Если есть необходимость использовать спецсимволы (например, пробел) в именах файлов, используйте двойные кавычки: cd "/my folder"
В режиме командного процессора поддерживается автодополнение по кнопке Tab
и навигация стрелками вверх/вниз по истории выполненных команд.
Также доступен режим ввода спецсимволов по их коду, удерживая Alt
, например Alt
4
8
0
- ° - символ градуса.
M-OS system variables
Системные переменные можно установить в файле /mos/config.sys
:
BASE
- базовая (домашняя) директория для ОС
SWAP
- установки swap
-файла. Например, SWAP=/pagefile.sys 8M 16K 4K
- задать своп-файл размером 8 МБ с окном в SRAM размером в 16 КБ и страницами по 4 КБ каждая.
COMSPEC
- путь к командному процессору, например: /mos/mc
или /mos/cmd
PATH
- список директорий для поиска приложений, разделители - : ;
,
GMODE
- установить графический режим по-умолчанию, например GMODE=6
для VGA-драйвера - рекомендуемый режим для тестирования basic
-приложений.
TEMP
- директория для временных файлов.
На этом краткий туториал по МОС можно и закончить, если возникают вопросы - задавайте ниже, возможно включу потом ответы в следующую статью по Мурмулятору.
Kuprijan
В одной из статей, читал, что в предлагаемых 5 долларов не уложиться, сколько стоит в среднем комплект этого устройства?
Сложность сборки
Есть ли готовый корпус? Просто на маркетплейсах есть hdmi приставки со встроенными играми, понимаю что кому-то может показаться мало, - 10000+ игр, стоимостью 1,5к дерева, - для среднего обывателя вроде меня пойдёт. (здесь должон быть абзац) Я как-то стороной обошёл этот бум консолей (моё детство пришлось на закат всего этого), когда консоли считались роскошью , но уже не такой прямо роскошью. Мне жутко хотелось одну из таких приблуд, но денег на такое не было, а потом мне просто купили ПК, который был способен тянуть 720Р, все современные на тот момент игры, и я играл на нём в ra2 и dune 2000. Смотрю сейчас ничего не поменялось, покупают за 150к+ пекарни, и так же играют в ретро игори.. Прошу прощения за пунктуацию, клавиатура смартфона сама исправляет на другие слова и/или окончания...
mikeveng73 Автор
Очень зависит от локации. Поищите на маркетплейсах "ZX Murmulator"
Если выбрать вариант с VGA, то сложно только паять разъём под SD-card. В худшем случае можно прикупить готовый модуль и на соплях прицепить
Да, есть корпуса в виде моделей для 3Д-принтера. Поищите на https://t.me/ZX_MURMULATOR/30988
ну и тут https://murmulator.ru/howto внимательно посмотрите варианты