Ада многозадачность ОСРВ поддерживается с кросс-компиляторами с открытым исходным кодом - PullRequest
9 голосов
/ 25 октября 2011

В каких ОСРВ Ada доступны кросс-компиляторы с открытым исходным кодом / бесплатно, с поддержкой многозадачности / многопоточности?

У меня есть чип Atmel AT90USB162, который я хочу программировать с помощью Ada. Мой первый вариант состоял в том, чтобы использовать AVR-Ada для его программирования, но, поскольку у него нет поддержки задач, он не может быть выбран (и в настоящее время я не имею ни малейшего представления о том, как его поддержка поддерживается). Поэтому мне нужен более сильный подход. Я думал об использовании QNX, но он намного сложнее, чем мой чип.

Я получил информацию, что чип AVR поддерживает uC / OS-II и FreeRTOS. Существуют ли бесплатные кросс-компиляторы Ada для FreeRTOS или uC / OS-II?

Спасибо.

Ответы [ 4 ]

6 голосов
/ 25 октября 2011

RTEMS поддерживает GNAT по крайней мере для некоторых архитектур.Однако, поскольку вы упомянули архитектуру Atmel AVR, она, вероятно, не поддерживается из-за архитектурных ограничений (в основном, доступной памяти).RTEMS очень зрелый (он был открытым исходным кодом до того, как был изобретен Linux), и был доказан, что его можно использовать во многих проектах.

Другой вариант - MarteOS , который поддерживается в Ada.Однако поддержка архитектур была очень ограниченной (изначально только для x86).

Таким образом, в зависимости от ограничений вашего проекта у вас, скорее всего, есть три варианта:

  1. Оставайтесь с AVR инаписать свою собственную поддержку задач для Ada;
  2. Подумайте, действительно ли вам нужна поддержка задач во время выполнения;или
  3. Обновите вашу архитектуру до той, которая поддерживается ОСРВ, поддерживающей Ada.

(Я впервые использовал RTEMS с GNAT Ada для частного проекта, основанного на ядре ARM9TDMI, примерно в2004-2005.)

6 голосов
/ 10 февраля 2012

Я один из первых разработчиков RTEMS и возглавлял проект RTEMS, так как он перешел от военной исследовательской программы к традиционному проекту свободного программного обеспечения. Мы очень стараемся сохранить RTEMS как высококачественный продукт с большим сообществом.

AVR - довольно маленькая цель, а порт RTEMS неполон. Даже если порт RTEMS был готов, я не думаю, что есть AVR с достаточным адресным пространством для поддержки GNAT / RTEMS. GNAT отображает каждую задачу Ada в поток POSIX так же, как в GNU / Linux, и занимает место во время выполнения для «реальной среды Ada». Я вспоминаю минимальные исполняемые файлы в диапазоне кодов 400K на PowerPC. Для сравнения, исполняемый файл RTEMS минимум C, вероятно, находится в диапазоне 32-40 КБ на той же цели.

Я не очень хорошо знаком с AVR-Ada, но я согласен, что маловероятно, что он предоставит вам полноценную среду Ada.

В проекте RTEMS есть сценарии, которые мы используем для создания инструментов GNU и их тестирования. Если вы заинтересованы в создании инструментов для вашей собственной странной цели, они могут быть хорошим руководством. Процедура не сильно отличается для встроенных целей.

Марк С. .. поскольку вы находитесь в Хантсвилле, нам иногда придется собираться на обед. Наш офис находится примерно напротив Бридж-стрит. Я действительно не могу встретить много пользователей RTEMS. (

6 голосов
/ 25 октября 2011

Ну, единственный известный мне компилятор Ada - Free Software - это Gnat.Таким образом, ваш вопрос сводится к вопросу «Какие ОСРВ поддерживает Gnat с помощью задач?»

ACT хранит список поддерживаемых платформ здесь .Столбец справа выглядит в основном как RTOS или псевдо RTOS.FreeRTOS и uC / OS-II, по-видимому, не указаны в списке.

Я заметил, что внизу их списка внизу под "пустыми платами" есть запись, читающая "AVR-формат микроконтроллера ELF (размещен наWindows)».Это может быть то, что вы ищете.Тем не менее, я бы сказал, что есть вероятность, что их порты на платах не поддерживают задачи.На самом деле, если подумать, это может быть название ACT для AVR-Ada.Вы должны проверить с помощью ACT.

Кроме того, следует отметить, что очень трудно найти «бесплатные» двоичные файлы для многих из более эзотерических целей gcc.Это означает, что вы можете быть вынуждены либо самостоятельно собрать компилятор из источников (даже удаленно для слабонервных), либо пойти купить пакет поддержки у ACT, чтобы получить его.

3 голосов
/ 14 февраля 2012

Мы бы хотели, чтобы порт AVR стал более полным!Предложите своим студентам присоединиться к нашему списку рассылки по разработке и задать вопросы.

RTEMS находится в том же классе ОСРВ, что и VxWorks.Это дает ему богатый набор функций, который должен быть урезан, чтобы соответствовать меньшим 8 и (некоторым) 16-битным процессорам.Наша задача заключалась в определении профиля функции «Tiny / RTEMS», к которому нужно стремиться.RTEMS действительно очень масштабируемый, но когда вы не знаете, какой набор функций будет значимым для CPU этого класса, у нас не остается конкретной цели.Пожалуйста, помогите определить требования пользователя и цель.

Также нам очень нравится иметь BSP, который работает на бесплатном симуляторе для каждой целевой архитектуры.SimulAVR был тем, что я использовал, когда активно работал над портом.AdaCore использовал нечто, называемое avrtest, но оно было более ограниченным - полезным, но ограниченным.

...