Murmulator OS

Операционная система для Мурмулятора


Автор порта Mike V73


Страничка проекта на гитхабе



Скачать murmulator-os-0.3.3 у нас или с Яндекс.Диска


Более ранние версии можно скачать у нас


Основная задача любой операционной системы - предоставить приложениям возможность унифицированного способа доступа к ресурсам оборудования, а пользователю - запускать и останавливать работающие приложения.


Официальный источник обновлений для МОС - сайт https://github.com/DnCraptor/murmulator-os/releases. Скачивайте оттуда архив (например murmulator-os-0.3.0-VGA-HDMI-RGB.zip) и выбирайте подходящую вашему оборудованию прошивку (.uf2 файл). Порядок следования видеодрайверов имеет значение. Если основной вывод для вас VGA, используйте прошивку, которая начинается именно с этой аббревиатуры. Если у вас на плате Мурмулятора имеется звуковой чип (DAC), подключенный по i2s, используйте прошивку, в имени которой имеется данная подстрока, например, murmulator-os-0.3.0-i2s-HDMI-VGA-RGB.uf2 - обозначает, что звук выводится через i2s (поддерживаются TDA1387T и PCM5102A DAC), а изображение по-умолчанию - в HDMI.


Если вы уже обзавелись Мурмулятором, то должны себе представлять, как происходит его прошивка - подключить по 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.


МОС нативно поддерживает русский язык для ввода, вывода и хранения данных. Для хранения используется кодовая таблица IBM CP866 (совместимо с IBM и MS DOS), т.е. файлы, подготовленные в Windows и сохранённые в UTF или Windows-1251, будут отображаться неверно (требуют предварительной перекодировки). Для переключения режимов ввода используйте нажатие Ctrl+Shift.


Самое частое использование Мурмулятора - запуск эмуляторов различных ретро-компьютеров. И поскольку МОС - прямой наследник бут-лоадера (см. https://github.com/xrip/pico-launcher), который предназначен для запуска этих эмуляторов, МОС поддерживает всю ту же функциональность. Запуск .uf2 приложений кнопкой ENTER клавиатуры или кнопкой ‘A’ джойстика на выделенном файле.


В процессе прошивки .uf2 все прерывания ОС отключаются (особенность работы данного микроконтроллера), т.е. в это время отключается и драйвер дисплея. За процессом можно наблюдать только по морганию светодиода на плате. В момент окончания прошивки светодиод гаснет, и предполагается перезагрузка микрокомпьютера. Если перезагрузка не происходит автоматически, выводится соответствующее сообщение, что необходимо перезагрузить его вручную. После перезагрузки ожидается запуск соответствующего эмулятора (например, 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] - отправить SIGKILL "процессу" (задаче 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 > waw.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 - директория для временных файлов.
Made on
Tilda