Операционная система жесткого реального времени MULTEX-ARM

Операционная система жесткого реального времени MULTEX-ARM предназначена для встраиваемых применений. Основное ее назначение предоставление пользователю необходимого и достаточного набора функций для проектирования, разработки и функционирования систем реального времени на конкретном аппаратном
оборудовании. Особенностью ОСРВ MULTEX-ARM является то, что весь пользовательский проект собирается на этапе компиляции на инструментальном компьютере в единый загружаемый образ, который содержит как разрабатываемый пользователем программный код, так и все необходимые для него библиотечные процедуры.

Цена ОСРВ MULTEX-ARM

  • Базовый набор библиотек операционной системы жесткого реального времени MULTEX-ARM распространяется бесплатно.
  • Стоимость полного набора библиотек предоставляется по запросу на почту mail@set-code.ru.

MULTEX-ARM представляет собой набор библиотек, обеспечивающих эффективную многозадачность, а также набор драйверов, обеспечивающих взаимодействие пользовательского программного обеспечения с аппаратурой. ОСРВ MULTEX-ARM предназначена для использования на процессорах китайской фирмы Allwinner, таких как: A20, A40i, H3, V3S. При этом пользовательское программное обеспечение пишется на языке Си. Процедуры библиотеки ядра ОСРВ MULTEX-ARM, написанные на языках Си и Ассемблер, обеспечивают эффективную вытесняющую многозадачность с заданием приоритетов для каждой задачи. При этом планировщик задач может работать как в приоритетном режиме, так и в режиме карусельного планирования. Для обеспечения многозадачности и межзадачного взаимодействия библиотека ядра предоставляет пользователю различные семафоры и очереди сообщений. MULTEX-ARM использует плоскую модель памяти, причем любой задаче полностью доступно все адресное пространство процессора и все глобальные переменные проекта. Любая Си-процедура может быть запущена, как отдельная задача.

Жесткое реальное время подразумевает гарантированную реакцию на внешние события за фиксированный интервал времени. Для MULTEX-ARM это время сравнимо с временем вызова Си-процедуры. Внешними событиями в MULTEX-ARM выступают прерывания от системного таймера, от устройств ввода/вывода, от внешних сигналов. При этом возможна настройка приоритетов прерываний и выполнение вложенных прерываний, что позволяет увеличить точность генерации внешних сигналов до десятков наносекунд.

MULTEX-ARM предоставляет пользователю широкие возможности по отладке проекта. С помощью командного интерпретатора Shell пользователь может вызывать любую глобальную процедуру, набирая ее вызов в синтаксисе языка Си. Кроме того, можно просматривать, либо изменять значения любых глобальных переменных по ходу выполнения программы. Возможно также просматривать, либо модифицировать любые области памяти вычислителя. Это можно делать с инструментального компьютера, подключенного к целевому вычислителю с помощью канала RS232C, либо по каналу Ethernet.

ОСРВ MULTEX-ARM может с успехом применяться в таких областях, как, например, робототехника, медицина, управление сложными станками с ЧПУ, в системах технического зрения, системах дистанционного управления и передачи видео и аудио информации.

Документация

ОСРВ MULTEX-ARM ver.5.07

Полное описание

Документ содержит описания концепций, заложенных в основу Операционной Системы Реального Времени MULTEX-ARM, а также полный список вызовов функций.

Список изменений:

  • Дополнена система монтирования томов дисков.
  • Оптимизирована работы модуля LVDS.
  • Увеличена штатная частота работы процессора.
  • Оптимизирована работа аппаратного кодера Cedrus.
  • Переработан встроенный текстовый редактор Edit.
  • Оптимизирована система сборки проектов (многопоточная сборка).
  • Дополнена справка в консоли Shell.
  • Исправлена работы модулей SPI и UART для A20.
  • Исправлена работа с дисками SATA, библиотека lib_sata добавлена в базовый набор.

Документацию на предыдущие версии MULTEX-ARM можно посмотреть в нашем архиве. Перейти в архив можно по ссылке ниже.

Новости проекта

Файлы для скачивания

ОСРВ MULTEX-ARM ver.5.07

Дата публикации 30.01.2024

Базовый набор библиотек

Базовый набор библиотек ОСРВ MULTEX-ARM распространяется бесплатно в виде скомпилированных бинарных файлов, набора заголовочных файлов и утилит для сборки проекта. Базовый набор может быть использован в проектах пользователя без каких-либо ограничений. В базовый набор входят библиотеки ядра ОС и драйвера простых интерфейсов (UART, I2C, SPI, Ethernet). Библиотеки мультимедиа используемые для кодирования, декодирования и воспроизведения видео и изображений поставляются отдельно.

Перед скачиванием библиотек следует ознакомиться с условиями лицензионного соглашения.

Предыдущие версии MULTEX-ARM можно скачать в нашем архиве. Перейти в архив можно по ссылке ниже.

Сборка проекта пользователя с использованием библиотек осуществляется на инструментальной машине под управлением ОС Linux (Debian, Ubuntu) либо под Windows с использованием виртуальной машины WSL. Процесс сборки описан в документации. Перед первым запуском сборки под Linux следует изменить права доступа (разрешить выполнение) для всех утилит из каталога /multex-arm/bin.

Для запуска собранного проекта на целевой машине проект следует скопировать на uSD диск с заранее размещённым загрузчиком. Скачать загрузчики для поддерживаемых процессоров можно в соответствующем разделе.

Загрузчики ОСРВ MULTEX-ARM

Загрузчик операционной системы микропрограмма, обеспечивающая загрузку операционной системы непосредственно после включения компьютера. Целевой ARM процессор производит чтение первого сектора жёсткого диска (uSD), в котором располагается загрузчик и передаёт управление считанному коду. Задачей загрузчика является минимальная настройка регистров процессора и передача управления операционной системе.

Для загрузки ОСРВ MULTEX-ARM используются загрузчики на базе проекта u-boot. Каждый из поддерживаемых в ОС процессоров использует свой загрузчик. Ниже в данном разделе размещены ссылки для скачивания образов дисков, содержащих такие загрузчики. Так как в различных проектах используются флеш-диски разного объёма, мы подготовили образы для наиболее часто встречающихся размеров uSD. Все образы дисков на нашем сайте хранятся в виде zip-архивов и перед прошивкой их следует разархивировать.

Прошить образ на диск uSD можно с помощью утилиты dd под Linux, либо с помощью программы Winimage под Windows. Для облегчения прошивки под Linux можно воспользоваться нашим мэйкфайлом. В результате прошивки на диске будет размещён загрузчик и файл настройки boot.scr. При просмотре диска стандартными средствами будет виден только файл настройки. Загрузчик для файловой системы всегда остаётся невидимым и определить его наличие на диске можно только по выводу в консоль при загрузке целевой платы. Ниже приведены два варианта прошивки загрузчиков под Linux.

Вариант 1. Утилита dd

Пример вызова утилиты dd из консоли приведён ниже. В этом примере: image.iso прошиваемый образ диска; /dev/sdc диск, на который производится запись. Перед вызовом убедитесь, что вы прошиваете образ именно на uSD, а не на жесткий диск с установленной системой!

$ sudo dd bs=1M iflag=fullblock if=image.iso status=progress of=/dev/sdc

Вариант 2. Makefile

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

Разархивируйте и разместите его в папке со скачанными образами дисков. Перед прошивкой образа с помощью нашего мейкфайла следует указать переменную окружения DEVNAME содержащую имя диска с которым предстоит работать. Например:

$ export DEVNAME=sdc

Далее можно вывести список поддерживаемых команд вызвав утилиту make без параметров или же сразу перейти к прошивке. Например, для прошивки 8-гигабайтного образа диска для процессора V3s следует использовать команду:

$ make v3s-8

Данная команда не только запишет образ на диск, но и проверит его с помощью утилиты fsck. Проверку можно запустить и отдельно с помощью команды:

$ make check

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

Загрузчик V3s

Загрузчики для процессора Allwinner V3s на базе u-boot. Для скачивания доступны 3 образа загрузочных дисков для uSD размером 4Gb, 8Gb и 16Gb.

Загрузчик H3

Загрузчики для процессора Allwinner H3 на базе u-boot. Для скачивания доступны 3 образа загрузочных дисков для uSD размером 4Gb, 8Gb и 16Gb.

Загрузчик A20

Загрузчики для процессора Allwinner A20 на базе u-boot. Для скачивания доступны 3 образа загрузочных дисков для uSD размером 4Gb, 8Gb и 16Gb.

Установщик на встроенную память

Установщик (инсталлятор) — небольшая утилита предназначенная для записи проекта пользователя на встроенный диск. В качестве встроенного диска, обычно, используется память eMMC или NAND. В модуле SE-SOM-A20-B, например, в качестве встроенной памяти используется eMMC карта памяти, подключенная как диск MMC2. После записи пользовательского проекта на встроенный диск процессор будет загружаться именно с этого диска, при этом карта памяти micro SD больше не потребуется. При необходимости слот карты памяти micro SD (MMC0) можно будет использовать для подключения к системе дополнительного диска. Для повторной перезаписи проекта на встроенный диск можно снова воспользоваться инсталлятором.

Создание инсталлятора происходит в два этапа — подготовка диска для использования в качестве установочного и запись устанавливаемого проекта.

Подготовка диска установщика

Для подготовки micro SD диска следует выполнить следующие действия:

  • Распаковать содержимое архива и положить папку emmc рядом со скачанным файлом Makefile;
  • Вставить диск micro SD в кардридер компьютера;
  • Убедиться, что диск виден в системе и задать имя диска в переменной DEVNAME. Например, для работы с диском sdc нужно ввести следующую команду:
$ export DEVNAME=sdc
  • Создать загрузочный диск для целевого процессора. При этом на диске появится файл boot.scr — этот файл следует оставить без изменений. Записать образ загрузочного диска можно с помощью команды:
$ make a20-8
  • Скопировать файлы инсталлятора из директории emmc на загрузочный диск с помощью команды:
$ make installer

Запись проекта на установщик

Для записи проекта на установочный диск следует выполнить следующие действия:

  • Перейти в рабочий каталог устанавливаемого проекта;
  • Вставить установочный диск micro SD в кардридер компьютера;
  • Убедиться, что диск виден в системе и задать имя диска в переменной DEVNAME. Например, для работы с диском sdc нужно ввести следующую команду:
$ export DEVNAME=sdc

Переписать содержимое директории out проекта на установочный диск в директорию EMMC_CP. Это действие удобно выполнить воспользовавшись командой системы сборки MULTEX-ARM. Данная команда аналогична команде создания установочного диска:

$ make installer

На этом подготовка инсталлятора закончена и диск можно вынимать из кардридера компьютера.

Установка проекта

Для записи проекта на встроенную память целевой платы следует выполнить следующие действия:

  • Отключить питание целевой платы;
  • Вставить установочный диск в слот памяти целевой платы и включить питание. Через 3 секунды (после загрузки системы инсталлятора) включатся два светодиода на процессорном модуле. Мигающий светодиод, индицирует работу системы. Второй светодиод будет гореть непрерывно — это индикация работы с диском. В процессе работы инсталлятора будет полностью очищена встроенная память eMMC (MMC2), после чего на диск будет записан образ диска image.iso и далее записаны файлы устанавливаемого проекта. В качестве образа диска image.iso используется штатный образ для процессора A20a20-8.iso, но, при желании, этот файл можно заменить на пользовательский вариант загрузчика;
  • Дождаться окончания работы инсталлятора с диском — светодиод «обращение к диску» должен покаснуть. Длительность записи зависит от общего размера файлов проекта и составляет обычно не больше одной минуты. За ходом выполнения прошивки можно следить через отладочную консоль, подключив к разъёму DEBUG (UART0) переходник TTL-232R-3V3. В качестве терминала удобно использовать программу putty;
  • После окончания записи можно получить доступ ка файлам на обоих дисках через отладочную консоль по UART или по сети (сетевой адрес установщика — 10.0.7.149). Кроме того по сети можно подключиться к плате по протоколу FTP. Через консоль можно сразу после прошивки проекта изменить файлы настройки прошиваемой целевой платы с помощью встроенного текстового редактора Edit (вызывается командой ed). При этом нужно учесть, что в системе будут видны два диска: C — установочный диск и D — встроенный диск eMMC с установленным проектом. Для редактирования файла настроек settings.ini на встроенном диске нужно вызвать команду в консоли:
C:/>ed d:/settings.ini
  • Выключить питание, вынуть загрузочный диск и включить питание. Загрузка системы должна идти уже со встроенного диска eMMC.

Тестовые проекты

Примеры тестовых проектов MULTEX-ARM для плат на базе поддерживаемых процессоров выкладываются в виде исходных кодов и могут быть использованы как шаблон для создания проектов пользователя.

Содержимое каждого архива следует распаковать и поместить рядом с библиотеками (рядом с директорией /multex-arm). Подробнее о структуре проекта можно прочитать в документации. Примеры позволяют собрать ядро операционной системы с минимальным набором простых драйверов и подключиться к целевой плате через консоль DEBUG-UART либо по сети. Процесс сборки проекта, а также поддерживаемые команды описаны в документации. Важно отметить, что собирать проекты для тестирования следует с опцией debug:

$ make debug

Набрав в терминале команду myTest, являющуюся единственной функцией проекта, можно получить приветственное сообщение от машины 😉

Тестовый проект для Allwinner V3s

  • Рекомендованная платформа: контроллер управления SE-PC-V3S-351

Тестовый проект для Allwinner H3

  • Рекомендованная платформа: контроллер управления SE-PC-H3-289

Тестовый проект для Allwinner A20

  • Рекомендованная платформа: демонстрационная плата SE-DB-A20-B254

Пример использования задач

В проекте показаны примеры запуска задач и реализация межзадачного взаимодействия.

  • Рекомендованная платформа: контроллер управления SE-PC-V3S-351

Демонстрационные примеры

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

Демонстрация графики на Allwinner V3s

В примере показаны возможности вывода графики на дисплей и обработки событий тач-пада на базе процессора Allwinner V3s.

  • Рекомендованная платформа: контроллер управления SE-PC-V3S-351

Видео обработка

Пожалуй, самая крутая фишка операционной системы MULTEX-ARM это работа с видео потоками в реальном времени. В этом разделе собраны дополнительные материалы по данной теме - статьи, обзоры и технические отчёты.

Системы технического зрения

Полным ходом идёт подготовка учебной программы «Системы технического зрения» на базе MULTEX-ARM для ВУЗов. В видео показано оборудование для лабораторных работ по данному курсу.

Ссылки на используемое оборудование:

Трансляция видео с минимальной задержкой

Одним из важнейших условий при передаче видео по локальной сети в системах автоматического управления является минимизация задержки при сохранении приемлемого качества передаваемого изображения. Используя аппаратные модули кодирования и декодирования видео потока, входящие в состав процессора A20, нам удалось добиться хороших результатов при передаче изображения сразу с нескольких источников сигнала стандарта PAL.

Оптимальной схемой трансляции PAL сигнала мы считаем такую, при которой на каждые 2 источника PAL-сигнала выделяется один аппаратный кодер, ведущий вещание в общую сеть. Приёмом и выводом каждого потока занимается отдельный аппаратный декодер. Характеристики передачи видео для каждого кодера при такой схеме приведены ниже:

  • Входной видео поток - 2 канала PAL 720 x 576
  • Средний размер выходного видео потока - 8 Мбит/с
  • Количество кадров выходного видео потока - 25 кадров в секунду
  • Задержка в канале - 130±40 мс

Полный отчёт об измерении задержки в канале передачи видео с 2-х и 4-х камер при различных параметрах сжатия можно скачать в pdf формате по ссылке ниже.