Русская Википедия: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 обладает следующими достоинствами:

  1. Предоставляет встраиваемому ПО доступ к данным по имени файла, а не по абсолютному адресу.
  2. Обеспечивает непосредственный доступ к данным файла в виде непрерывного массива (за счет непрерываного размещения данных файла).
  3. Предоставляет защищенную от сбоев питания процедуру дефрагментации.
  4. Файловая система является переносимой между различными устройствами флеш-памяти за счет использования двух уровней абстракции: первый уровень предоставляет обобщённый интерфейс к флеш-памяти со стороны файловой системы, второй уровень определяет реализацию обращения к конкретному типу устройств флеш-памяти.
  5. Файловая система не требует непрерывности адресного пространства и может быть предоставлена пользователю в виде единого файлового пространства при размещении данных на нескольких различных носителях.
  6. Файловая система позволяет задать четыре уровня пользовательского доступа.
  7. Загрузчик исполняемых файлов, предоставляемый файловой системы допускает упаковку отдельных секций объектного файла (COFF, ELF и т. п.), что позволяет загружать программу посекционно без промежуточной распаковки в ОЗУ.
  8. В состав файловой системы могут входить файлы-ссылки, указывающие на область FLASH вне файловой системы, в которой размещены перезаписываемые данные. Эти данные исключаются из процедуры дефрагментации.
  9. Файловая система позволяет запускать объектный код непосредственно с ППЗУ без загрузки в ОЗУ.

Вместе с тем, TFS упрощена по сравнению с большинством сложных файловых систем:

  1. Не поддерживается распределение нагрузки для уменьшения износа ППЗУ (ресурс в 100К стираний, свойственный большинству современных микросхем ППЗУ, достаточен для хранения прошивок и конфигураций — основного назначения TFS).
  2. Не поддерживается каталогизация и одновременная запись нескольких файлов неизвестного размера.
  3. Файлы хранятся в виде непрерывного массива данных.

Кроме того, потенциальным недостатком является использование для энергобезопасной дефрагментации временного сектора, на который ложится повышенная нагрузка.

Тем не менее, для целей загрузки ОС и хранения конфигураций ресурс в 100К стираний можно считать достаточным для бесперебойной работы в течение нескольких лет (с еженедельной дефрагментацией и обновлением файловой системы).

Ссылки