scmRTOS 4.0 release

4 апреля (2012.04.04) наконец-то вышла «официальная» версія 4.0 операцинной системы scmRTOS.

После исправления известных ошибок предыдущая версия сохранена в ветке scmrtos/tags/3.11.

Новая версия зафиксорована в scmrtos/tags/4.00 и продолжает развиваться в scmrtos/trunk.

Что нового в scmRTOS 4.0 в сравнении с версией 3.11:

  • Вместо byte, word, dword используются типы uint8_t, uint16_t, uint32_t из stdint.h. В некоторых случаях используется тип uint_fast8_t для оптимальной компиляции на разных архитектурах.
  • Изменено соглашение об именовании функций и переменных. Это изменение требует некоторых действий при переходе на новую версию (см. ниже).
  • Изменена структура каталогов примеров репозитория и имён архивов на странице загрузки scmRTOS. Теперь используется путь архитектура/компилятор/линейка_микроконтроллеров.
  • Добавлена возможность перезапустить процесс.
  • Добавлена поддержка профилирования и отладки програм:
    • определение остатка свободного места на стеках процессов,
    • измерение времени работы процессов,
    • возможность узнать адрес объекта синхронизации, ожидаемого процессом.
  • Добавлен пример 4-Debug для демонстрации части этих возможностей.
  • Добавлен класс TKernelAgent — механизм расширений ОС (собственно, профилирование и сделано как пример такого расширения).
  • Изменена иерархия классов ОС. Все сервисы ОС теперь есть потомками класса TService, который есть потомком класса TKernelAgent. Пользователь может создавать свои собственные сервисы.
  • Добавлен порт для STM8/IAR и примеры для STM8S.
  • В порт CortexM3/GCC добавлены примеры 1-EventFlag и 4-Debug для микроконтроллеров LPC17XX.
  • В портах AVR/GCC и AVR/IAR для микроконтроллеров megaAVR добавлена поддержка кристаллов с памятью программ более 128 килобайт (ATmega256x).
  • Из порта CortexM3/IAR убрано примеры для LPC17XX (ввиду отсутствия желающих их сопровождать). Участники проекта работают если и с IAR, то с STM32, а если уж с LPC17XX, то с GCC.
  • Порт Fujitsu MB91 больше не поддерживается.
  • Порт ARM7/IAR на данный момент не поддерживается. Он, как и порт Fujitsu MB91, оставлен в ветке 3.11 но эти порты вошли в 4.0 и в текущую ветку разработки.

Для облегчения перехода с scmRTOS 3.xx на 4.xx создан файл scmRTOS_310_compat.h, который делает синонимы для старых типов данних с использованием типов из stdint.h и включает в исходных текстах ОС режим совместимости. В этом режиме создауются inline функции-адаптеры двух типов:

  • Для кода пользователя: адаптеры перехода от старых к новым именам, например, от Sleep() к sleep() в новом коде ОС.
  • Для кода ОС: адаптеры перехода от новых к старым именам, например, от system_timer_user_hook() к SystemTimerUserHook() в старом коде пользователя.

Благодаря функциям-адаптерам ядра в старом коде следует лишь заменить имена функций процессов Exec() на еxec() и старый проект будет продолжать работать.

Файл scmRTOS_310_compat.h нужно включить в начале scmRTOS_CONFIG.h проекта. Также необходимо добавить определения для двух типов — счётчика системных тиков ОС tick_count_t и типа времени таймаута timeout_t.

В качестве примера такого перехода можно посмотреть примеры 3-Channel в портах AVR/GCC/MEGA и AVR/IAR/MEGA.

6 Responses to “scmRTOS 4.0 release”

  1. baton says:

    Дайте якщо є у кого, готовій проект під AVR-gcc із scmRTOSv4.0 а то я своє то щось підправив, а у мене задачі не виконуються. Буду вдячний.

    • ReAl says:

      Так перевірені приклади є разом з самою scmRTOS, там можна взяти. Вони прості, але головне показують.

      Докладне пояснення 1-EventFlag робилося під 3.10, зі старшими можуть не збиратися, але головне — що і як відбувається в системі — не помінялося.

  2. smartly says:

    Хе. Вот бы разработать аналог позикс для микроконтроллерных ОС. Стандартизовать всякие EnterCritical, Sleep, Yield, timeout_t. Остальные примитивы тоже бы неплохо стандартизовать, но эти по прикладной программе (не драйверу, который скорее всего всё равно будет привязан к ОС) встречаются весьма часто. Хочется попробовать другую РТОС – приходится бежать по тексту и подставлять другие имена :).

    • ReAl says:

      Така думка вже виникала (мабуть, вона давно в повітрі і її вітром то в одну голову, то в іншу заносить ;-)).
      Але для цього не вистачає знань, бо треба ж проаналізувати (а для цього непогано покористуватися) кілька різних «відносно легких» мікроконтролерних ОС.
      І не вистачає часу для компенсації нестачі знань.

      • smartly says:

        Думаю, все таки набагато важливішим було б бажання авторів цих легких ОС цим зайнятись.

        • ReAl says:

          Згоден. «Ну хоч не всіх, хоча б половини»…

          Вище я писав про себе.
          Якесь таке бажання було ворухнулося ще коли я надавав консультації по портуванню scmRTOS 1.0 на avr-gcc (пізніше у 2.0 такого порта не було, а на 3.0 я вже робив сам). Але зрозумів, що замало досвіду і навіть просто посидіти/почитати документацію на інші легкі ОС мало.

Leave a Reply to baton

[flagcounter image]