UMon (UMon)
Эта статья или раздел нуждается в переработке. |
Микромонитор (uMonitor, MicroMonitor) — загрузчик встраиваемых операционных систем, на данный момент предназначенный для загрузки с устройств ППЗУ типа NOR FLASH.
В отличие от общеизвестного загрузчика u-boot, микромонитор является легковесным (минимум исходников, полная настройка функциональности) и не привязан к ОС Линукс и вообще к какой-либо ОС. Микромонитор позволяет загрузить из ППЗУ в ОЗУ произвольный объектный код и запустить его на исполнение.
Лицензия
[править | править код]Изначально разрабатывался Эдом Саттером (Ed Sutter) для компании Lucent Technologies. Был выложен в виде исходных кодов с открытой лицензией (MicroMonitor Lucent Open License). Автор на данный момент не требует следования правилам GNU-лицензий, то есть предоставления исходных кодов, если используется данный загрузчик.
Единственное требование автора — сохранять текст лицензии в заголовке и по возможности присылать ему исправления и важные дополнения.
Это большая редкость в современном движении Open Source, которое, например, вынуждает открывать проприетарный код, если линкуется библиотека, выпущенная по лицензии GPL, а остальной код при этом является собственной разработкой.
Функциональность, предоставляемая загрузчиком
[править | править код]Поддерживаемые процессоры, операционные системы
[править | править код]Загрузчик был портирован и использовался на следующих процессорах:
x86, PowerPC, MIPS, ARM/Xscale, 68K/ColdFire, Blackfin, SH2/4, MicroBlaze, Nios
Загрузчик выполняет начальную инициализацию процессора, переносит образ основной операционной системы с флеш-памяти в ОЗУ и запускает его на исполнение.
Таким образом, реальных ограничений на используемую встраиваемую ОС нет. В список поддерживаемых ОС включены:
VxWorks, Linux, uC/OS-II, eCos, RTEMS, Nucleus, CMX, pSOS, etc…
Сам по себе загрузчик не требует операционной системы и не обязывает использовать её в загружаемом ПО, то есть позволяет загружать из ППЗУ в ОЗУ и запускать на исполнение произвольные объектные файлы.
Поддерживаемые форматы объектных файлов: COFF, ELF, AOUT (old-style Unix), MSBIN (Windows CE).
При необходимости можно добавить поддержку загрузки объектного файла произвольного формата.
Конфигурация загрузчика, управление процессом загрузки
[править | править код]Микромонитор является настраиваемым загрузчиком: части кода загрузчика, не используемые в целевой системе, можно достаточно легко отключать при сборке. При необходимости, можно использовать расширенную функциональность только на этапе разработки и отладки, а потом отключать.
Гибкость не заканчивается сборкой кода: состав и порядок исполнения программного обеспечения настраивается редактированием простого текстового скрипта, можно реализовать запрос у пользователя разрешения на исполнение файла, возможно базовое ограничение полномочий пользователя за счет заложенных в файловую систему уровней пользовательского доступа.
Если при сборке загрузчика был включен терминальный доступ, загрузчик предоставляет интерфейс командной строки (CLI) с организацией терминального доступа по последовательному порту (например, RS-232) и/или Ethernet (протокол Telnet).
Реализованный в микромониторе интерфейс командной строки предоставляет достаточную функциональность для обновления файловой системы и управления загрузкой.
Помимо управляющих функций, микромонитор предоставляет возможность наблюдать за процессом загрузки. При необходимости экономии ресурсов логирование отключается.
Файловая система
[править | править код]Основное достоинство MicroMonitor — файловая система tiny file system, оптимизированная для использования с NOR FLASH-памятью.
TFS организована в виде односвязного списка, в котором каждый файл представлен коротким (<100 байт) заголовком и непрерывным массивом данных файла. При удалении в заголовке файла выставляется признак удаления. Если необходимо переписать файл, то он «удаляется» (обновлением заголовка) и заменяется на новый файл, добавленный в свободное пространство. Когда свободное пространство заканчивается, запускается процедура дефрагментации, которая в данном случае заключается в перемещении не удаленных файлов к началу файловой системы, то есть реальном удалении данных c FLASH-памяти.
TFS обладает следующими достоинствами:
- Предоставляет встраиваемому ПО доступ к данным по имени файла, а не по абсолютному адресу.
- Обеспечивает непосредственный доступ к данным файла в виде непрерывного массива (за счет непрерываного размещения данных файла).
- Предоставляет защищенную от сбоев питания процедуру дефрагментации.
- Файловая система является переносимой между различными устройствами флеш-памяти за счет использования двух уровней абстракции: первый уровень предоставляет обобщённый интерфейс к флеш-памяти со стороны файловой системы, второй уровень определяет реализацию обращения к конкретному типу устройств флеш-памяти.
- Файловая система не требует непрерывности адресного пространства и может быть предоставлена пользователю в виде единого файлового пространства при размещении данных на нескольких различных носителях.
- Файловая система позволяет задать четыре уровня пользовательского доступа.
- Загрузчик исполняемых файлов, предоставляемый файловой системы допускает упаковку отдельных секций объектного файла (COFF, ELF и т. п.), что позволяет загружать программу посекционно без промежуточной распаковки в ОЗУ.
- В состав файловой системы могут входить файлы-ссылки, указывающие на область FLASH вне файловой системы, в которой размещены перезаписываемые данные. Эти данные исключаются из процедуры дефрагментации.
- Файловая система позволяет запускать объектный код непосредственно с ППЗУ без загрузки в ОЗУ.
Вместе с тем, TFS упрощена по сравнению с большинством сложных файловых систем:
- Не поддерживается распределение нагрузки для уменьшения износа ППЗУ (ресурс в 100К стираний, свойственный большинству современных микросхем ППЗУ, достаточен для хранения прошивок и конфигураций — основного назначения TFS).
- Не поддерживается каталогизация и одновременная запись нескольких файлов неизвестного размера.
- Файлы хранятся в виде непрерывного массива данных.
Кроме того, потенциальным недостатком является использование для энергобезопасной дефрагментации временного сектора, на который ложится повышенная нагрузка.
Тем не менее, для целей загрузки ОС и хранения конфигураций ресурс в 100К стираний можно считать достаточным для бесперебойной работы в течение нескольких лет (с еженедельной дефрагментацией и обновлением файловой системы).