
Операционная система жесткого реального времени MULTEX-ARM
Операционная система жесткого реального времени MULTEX-ARM предназначена для встраиваемых применений. Основное ее назначение — предоставление пользователю необходимого и достаточного набора функций для проектирования, разработки и функционирования систем реального времени на конкретном аппаратном
оборудовании. Особенностью ОСРВ MULTEX-ARM является то, что весь пользовательский проект собирается на этапе компиляции на инструментальном компьютере в единый загружаемый образ, который содержит как разрабатываемый пользователем программный код, так и все необходимые для него библиотечные процедуры.
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.05
Руководство Программиста
Данное руководство содержит описания концепций, заложенных в основу Операционной Системы Реального Времени MULTEX-ARM, а также полный список вызовов функций.
Особенности текущей версии:
- Поддержка процессора Allwinner V3s;
- Обработка вложенных прерываний.

Файлы для скачивания
ОСРВ MULTEX-ARM ver.5.05

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

Тестовые проекты
Примеры тестовых проектов MULTEX-ARM для плат на базе поддерживаемых процессоров выкладываются в виде исходных кодов и могут быть использованы как шаблон для создания проектов пользователя.
Содержимое каждого архива следует распаковать и поместить рядом с библиотеками (рядом с директорией /multex-arm). Подробнее о структуре проекта можно прочитать в документации. Примеры позволяют собрать ядро операционной системы с минимальным набором простых драйверов и подключиться к целевой плате через консоль DEBUG-UART либо по сети. Процесс сборки проекта, а также поддерживаемые команды описаны в документации. Важно отметить, что собирать проекты для тестирования следует с опцией debug:
$ make debug
Набрав в терминале команду myTest, являющуюся единственной функцией проекта, можно получить приветственное сообщение от машины 😉
Демонстрационные примеры
Готовые демонстрационные примеры, использующие дополнительные библиотеки выкладываются в виде скомпилированных бинарных файлов. Их можно запустить на целевой плате и протестировать некоторые возможности программно-аппаратной платформы.
Демонстрация графики на Allwinner V3s
В примере показаны возможности вывода графики на дисплей и обработки событий тач-пада на базе процессора Allwinner V3s.
- Рекомендованная платформа: контроллер управления SE-PC-V3S-351