Операционная система жесткого реального времени 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

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

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

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

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

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

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

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

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

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

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