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 для оптимальної компіляції на різних архітектурах. Файл stdint.h включено в scmRTOS.h.
  • Змінено угоду про іменування функцій та змінних. Ця зміна вимагає деяких дій при переході на нову версію (див. нижче).
  • Змінено структуру каталогів прикладів репозиторію та імен архівів на сторінці завантаження 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.


З наявних недоліків — на wiki проекту відсутні сторінки для STM8. Це моя провина і я її (поступово) виправлятиму.

6 Responses to “scmRTOS 4.0 release”

  1. baton коментує:

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

    • ReAl коментує:

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

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

  2. smartly коментує:

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

    • ReAl коментує:

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

      • smartly коментує:

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

        • ReAl коментує:

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

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

Leave a Reply

[flagcounter image]