Главная
Новости
Строительство
Ремонт
Дизайн и интерьер

















Яндекс.Метрика





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К стираний можно считать достаточным для бесперебойной работы в течение нескольких лет (с еженедельной дефрагментацией и обновлением файловой системы).