Введення
Вданий час все більшу роль починають грати вбудовуванні системи на основіцифрових процесорів обробки сигналів (ЦПОСІ). ЦПОСІ використовуються практичноу всіх областях діяльності людини – в побуті, науці, медицині. Найважливішимпрограмним компонентом, які лежать в основі функціонування таких систем, єопераційна система, яка дозволяє запускати одночасно декілька різних програм іорганізовувати взаємодію між ними для вирішення однієї загальної задачі. Длявбудованих систем обробки сигналів характерні операційні системи реального часу(ОСРВ). Ці системи застосовуються в тих випадках, коли головне завдання – встигнутизреагувати на подію в рамках строго певного максимального часу реакції.Наприклад, це може бути сигнал на датчику, що відображає поточний стан якогосьоб'єкта в реальному часі. Можлива ситуація, коли стан об'єкта на короткий часзмінюється, а потім повертається назад, і якщо це зміна залишиться непоміченимі необроблене системою, наслідки можуть бути самими різними – від зовсімнешкідливих до катастрофічних.
Важливотакож відзначити, що можливість «встигнути зреагувати на подію» зовсім неозначає високу швидкість роботи. Система може працювати відносно повільно, івсе ж бути системою реального часу. Головна відмінність ОСРВ від ОС загальногопризначення – це якийсь фіксований проміжок часу, протягом якого системагарантовано зреагує на подію і виконає його обробку. Величина цього проміжкучасу визначається розв'язуваної завданням і є однією з вимог до розроблюваноїсистемі. Він може бути дуже коротким, але може бути і довгим, важливо лише те,що він фіксований і відомий заздалегідь.
Застосуваннясистем реального часу може бути найрізноманітнішим. Розглянемо, наприклад,роботу стільникового телефону. Його процесор повинен виконувати одночаснодосить багато завдань: прийом та кодування мови при розмові, відправкузакодованого звуку на ретрансляційну станцію, прийом вхідного закодованогозвукового потоку, розкодування та відтворення його; плюс до цього необхіднообмінюватися зі станцією всякого роду службовою інформацією – такий як перехідз зони в зону і перемикання на іншу станцію, відстеження рівня сигналу, принеобхідності – посилення його і так далі. Причому багато хто з цих завданьмають виконуватися в реальному часі, без затримок. Наприклад, затримка вобробці сигналу з мікрофона призведе до того, що частина фрази буде втрачено;запізнення з перемиканням на іншу ретрансляційну станцію може призвести довтрати зв'язку та розриву з'єднання. Таким чином, застосування операційноїсистеми реального часу в даній ситуації не лише виправдане, а й необхідно.
Уданій статті ми розглянемо операційну систему реального часу, розроблену в ІСПРАН для приватної «системи на чіпі» (System-On-Chip) на базі цифровогосигнального процесора MicroDSP 1.1, коли на одному загальному кристалірозміщуються сам процесор, модулі розширення, програмна пам'ять і два банкипам'яті даних. Розміщення їх на одному кристалі дозволяє забезпечити дужешвидкий доступ до осередків пам'яті (звернення до пам'яті займає один такт).Розмір банків пам'яті даних може мінятися від 0 до 65536 16-бітних слів; вонинезалежні, і до них можна звертатися одночасно. Програмна пам'ять можестановити до 256К слів (4 сторінки за 64К слова), розмір слова складає 24 біта(довжина інструкцій процесора). Стек організується програмно, за допомогоютрьох спеціальних регістрів, що містять кордону стека і поточне положеннявказівника стека. Процесор підтримує до 15 програмованих переривань зіндивідуальною настройкою пріоритетів і маскування, а також доступні тритаймера.
Передбачалося,що система буде працювати одночасно не більше, ніж з 64 завданнями. Кожнезавдання має свій статичний пріоритет, причому двох завдань з однаковимипріоритетами бути не може. Планувальник завдань вибирає для запуску завдання знайвищим пріоритетом з тих, що перебувають у стані готовності (тобто, впринципі, допустима ситуація, коли якась завдання жодного разу не отримаєуправління). Процесорний час виділяється завданням квантами, тривалість квантаможе варіюватися. Збільшення тривалості кванта погіршує паралелізм, але знижуєвитрати, пов'язані з перемиканням процесів, зменшення тривалості, відповідно, –навпаки. Для кожного завдання оптимальне значення тривалості кванта буде своїм,тому можливість налаштовувати тривалість кванта часу вельми корисна. Також ОСповинна надавати базові функції з управління процесами і реалізацію основнихпримітивів синхронізації і межзадачного взаємодії.
Уданій статті ми розглянемо функціональність розробленої системи та їїможливості. У розділі 2 буде описана власне сама операційна система і надані їйфункції. Розділ 3 описує доопрацювання в інтерфейсі інтегрованого середовища тавідладчика MetaDSP, що дозволяють створювати і відлагоджувати багатозадачніпрограми.
1. ОСРВ MicroDSP-RTOS
Операційнасистема MicroDSP-RTOS призначена для роботи з багатозадачними додатками. Підзавданням ми в даній статті маємо на увазі складову частину якого-небудьскладного додатка, що працює самостійно і практично незалежно від інших частин.Також завдання часто називають процесами або потоками. Операційна системапроводить необхідні дії з розподілу процесорного часу між завданнями ізабезпечує перемикання між ними, зберігаючи і відновлюючи контексти так, щоперемикання залишається для задач абсолютно прозорим. Також система міститьнабір функцій для виконання різних службових дій (функції ядра ОС), таких якініціалізація внутрішніх структур, запуск самої ОС (по суті – запуск апаратноготаймера), механізм збереження / відновлення контексту і перемикання завдань ітак далі. Що стосується надається системою API, тут присутні функції дляуправління самими завданнями, їх станом, функції для синхронізації та взаємодіїзавдань між собою, для управління динамічною пам'яттю. Розглянемо можливостісистеми більш докладно.
1.1 Загальна функціональність
Всьогов системі може бути присутнім максимум 63 користувацьких завдання. Самі завданняє звичайними функціями без параметрів, найчастіше представляють собоюнескінченний цикл. Кожній задачі відповідає пріоритет від 0 до 62, що задаєтьсяпри підключенні, причому не може існувати двох завдань з однаковимипріоритетами. Системний час квантів, і в кожен квант часу виконується завдання,що має найвищий пріоритет (найвищий пріоритет відповідає значенню 0) серед тих,які не перебувають у стані очікування. На наведеній нижче схемі (Мал. 1) можнабачити основні стану, в яких може перебувати завдання, і можливі переходи міжстанами.
/>
Рис. 1.Схема перемикання станів завдань
Післязакінчення кожного кванта часу (system tick) викликається функція обробкипереривання таймера. Ця функція виконує наступні дії:
· оновлює значення часуочікування (таймауту) для кожного завдання, що знаходиться в стані очікування зякої-небудь причини;
· якщо у якоїсь із завданьтаймаут минув, переводить це завдання в стан готовності (Ready);
· після цього з усіх завдань,які перебувають у стані готовності, вибирає завдання з найвищим пріоритетом іпереключається на неї (зберігши контекст поточного завдання, якщо це потрібно).
Усистемі завжди присутній одна внутрішня завдання, що називається background імає найнижчий можливий пріоритет – 63. Це значення нижче пріоритету будь-якій зкористувацьких завдань, і тому це завдання виконується тільки тоді, коли всікористувальницькі завдання знаходяться в стані очікування; таким чином,завдання background є індикатором простою системи. У початковій реалізації цезавдання представляла собою цикл, що складається з декількох інструкцій NOP.Надалі туди була додана інструкція IDLE, яка зупиняє процесор до тих пір, покине з'явиться запит на переривання. Тим самим було знижено енергоспоживанняпроцесора на час простою.
1.2 Управління завданнями
1. Підключення завдання.
2. Завдання підключаютьсядинамічно, тому на початку потрібно явно викликати функцію підключення длякожного завдання, яка буде виконуватися. При підключенні завдання додається увнутрішні структури даних системи, стек ініціалізується стартовим контекстом,який буде відновлений при першому перемиканні на це завдання.
3. Відключення завдання.
4. Ця функція повністю видаляєзавдання з усіх внутрішніх структур даних операційної системи, і подальшаробота з цим завданням стає неможливою. Для повторного використання завдання їїпотрібно знову підключити, після чого виконання завдання піде з самого початку.
5. Призупинення виконаннязавдання.
6. Виконання завдання може бутина час припинено. Це може знадобитися, наприклад, щоб запустити виконання меншпріоритетне завдання, маючи більш пріоритетну активне завдання. При виконанніфункції вказується тривалість затримки в кванта часу. Після закінчення цього часузавдання переводиться в стан готовності і, якщо вона є найбільш пріоритетною,одержує управління.
7. Відновлення з призупиненогостану.
8. Ця функція дозволяє принеобхідності достроково поставити призупинену завдання в чергу на виконання,перевівши її в стан готовності.
9. Блокування завдання.
10. Блокування завдання дужесхожа на відключення. Єдина відмінність полягає в тому, що при блокуванні станзавдання повністю запам'ятовується і може бути відновлена шляхом викликувідповідної функції, після чого завдання продовжить виконання з того ж місця,де була зупинена. У разі ж відключення продовжити виконання завдання не можна,її можна тільки підключити наново, і вона почне виконуватися з самого початку.
11. Висновок з режимублокування.
12. Ця функція виконує дію,зворотне блокування. Стан завдання відновлюється в те, що було до блокування,за одним тільки винятком: якщо завдання виконувалася, вона переводиться в станготовності, а не виконання. Таймаут (для станів призупинення та очікування)починає зменшуватися з кожним квантом часу; завдання може отримувати сигнали іповідомлення і так далі.
13. Отримання даних, переданихзавданню.
14. При підключенні завдання їйможна передати будь-які дані (один з параметрів функції підключення – адресадовільної структури даних). Ця функція дозволяє отримати цю адресу, щоб матиможливість звернутися до переданих даних.
15. Зміна пріоритету завдання.
16. Ця функція дозволяє змінитипріоритет будь-якої задачі (при цьому новий пріоритет не повинен бутизайнятий). Для зручності роботи, щоб не потрібно було запам'ятовувати івизначати, яким пріоритет має кожна завдання в кожний момент часу, звернення дозавдань здійснюється через унікальні ідентифікатори. По суті, ці ідентифікаториє змінними, які містять реальні значення пріоритетів завдань. У результаті дозадачі, скажімо, номер 3 завжди можна звертатися через змінну TASK3, незамислюючись про те, змінювався чи є у неї пріоритет, і якщо змінювався, тоякий він зараз, оскільки ця змінна завжди буде містити коректне поточне значенняпріоритету.
1.3 Синхронізація та взаємодію задач
Длясинхронізації завдань і взаємодії їх один з одним передбачені наступнімеханізми:
· сигнали;
· семафори;
· повідомлення;
· черги повідомлень.
Тони.
Дляповідомлення про настання якої-небудь події завдання може послати другий задачісигнал. Розглянемо, наприклад, ситуацію, коли завдання повинна вважати дані зпорту введення-виведення. У цьому випадку можна перевести задачу в режимочікування сигналу. Коли дані будуть готові, інше завдання або процедураобробки переривання пошле відповідний сигнал, в результаті чого перша завданнябуде активована і зможе виконати читання даних.
Семафори.
УMiscoDSP-RTOS реалізовані виконавчі семафори і семафори з лічильником. Як ті,так і інші зазвичай використовуються для забезпечення контролю роботи іззагальними ресурсами.
Двійковийсемафор може приймати значення 1 або 0, що означає, відповідно, доступність інедоступність ресурсу. Якщо задачі потрібен доступ до ресурсу, вона повиннавикликати системну функцію, яка перевіряє, чи доступний ресурс. Якщо він вжезайнятий, то завдання переводиться в стан очікування, а управління передаєтьсянаступному найбільш пріоритетне завдання. Якщо ж ресурс доступний (значеннясемафора дорівнює 1), то він блокується (значення встановлюється в 0), іуправління повертається в завдання. Коли робота з ресурсом завершена, йогопотрібно звільнити викликом відповідної функції. При цьому зі списку всіхзавдань, які очікують даний ресурс, обирається найбільш пріоритетна іпереводиться в стан готовності (а якщо вона має більш високий пріоритет, ніжпоточна завдання, то відбувається перемикання). Якщо таких завдань немає, торесурс просто позначається як вільний (значення встановлюється в 1), іуправління повертається в виконуваних завдань.
Відмінністьсемафорів з лічильником від декількох двійкових семафорів полягає тільки втому, що ресурси можуть використовуватися кількома завданнями одночасно.Наприклад, якщо є канал передачі даних, що складається з чотирьох паралельнихліній, що працюють незалежно, то для роботи з ним може використовуватисясемафор з лічильником, спочатку рівним 4. Коли задачі потрібно лінія передачіданих, вона робить системний запит. У результаті, якщо кількість доступнихліній більше нуля, воно зменшується на 1; в іншому випадку завданняпереводиться в режим очікування до тих пір, поки одна із завдань, які блокуютьресурси, не звільнить використовувану лінію. Варто відзначити, що даний підхідсуттєво відрізняється від використання декількох двійкових семафорів. Семафор злічильником не робить відмінності між контрольованими їм ресурсами. Унаведеному вище прикладі завдання, що очікує ресурс, переводиться в станготовності при звільненні будь-який з чотирьох ліній. При використанні жчотирьох двійкових семафорів довелося б чекати звільнення якоїсь однієїконкретної лінії, навіть якщо всі інші вже вільні.
Повідомлення.
Повідомленнядозволяють завданням обмінюватися даними. Цей механізм може використовуватися,коли одній задачі потрібно не тільки сповістити іншу про настання події, а йпередати їй якісь додаткові відомості (наприклад, повідомлення про завершеннячитання з порту із зазначенням адреси буфера, де знаходяться лічені дані).Принцип дії є таким же, як у сигналів і семафорів: завдання, якому потрібнідані, викликає системну функцію, яка визначає, чи доступні дані в цьоговимагають поштовій скриньці. Якщо дані доступні, то вони передаються задачі, іїй повертається управління. Якщо ж скринька порожня, то завдання переводиться врежим очікування. При посилці повідомлення перевіряється, чи немає завдання,яка очікує отримання даних з цього ж поштової скриньки. Якщо таке завдання є,вона переводиться в режим готовності, і при необхідності виконуєтьсяперемикання завдань, якщо ж дані ніким не запитані, вони будуть зберігатися впоштовій скриньці до першого запиту.
Чергиповідомлень.
Чергиповідомлень можуть використовуватися, коли дані надходять нерегулярно, іневідомо, чи буде завдання встигати відразу зчитувати всі вступникиповідомлення. Черга повідомлень організована у вигляді циклічного буфера типуFIFO. Довжина черги, а також кількість черг повідомлень, яке можнавикористовувати в програмі, задається у конфігураційних файлах RTOS-проекту.Робота з чергами організована таким же чином, як і з поодинокимиповідомленнями, з тією лише різницею, що можна зберігати не одне повідомлення,а декілька.
1.4 Робота з динамічною пам'яттю
Вопераційній системі MicroDSP-RTOS реалізовані найпростіші механізми роботи здинамічною пам'яттю. Зрозуміло, механізми, що використовуються в багатьохсучасних системах програмування, не підходять для ОС реального часу, тому щочас їх виконання недетермінованих і залежить від фрагментації пам'яті. Тому дляцієї ОС був розроблений свій підхід, що дозволяє уникнути фрагментації пам'ятіі зробити час виконання функцій детермінованим.
Уконфігураційних файлах RTOS-проекту задається загальна кількість динамічноїпам'яті, яке буде використовуватися програмою. Користувач повинен оцінити,скільки буде потрібно пам'яті, з огляду на витрату пам'яті на службовуінформацію. Динамічна пам'ять організована у вигляді набору областей (пулів)пам'яті, кожна з яких складається з деякої кількості буферів однаковогорозміру. Для роботи необхідно заздалегідь створити пул, вказавши кількістьбуферів в ньому і їх розмір (зрозуміло, сумарний розмір не повинен перевищуватикількість вільної динамічної пам'яті), після чого системними викликами можнавиділяти буфера і повертати їх назад в пул, позначаючи їх, тим самим, яквільні. При такій функціональності дефрагментувати пам'ять немає необхідності,оскільки робота ведеться тільки з буферами однакового розміру.
1.5 Використання процедур обробки переривань
Ізприсутніх у процесорі ліній переривання одна зайнята самою операційною системою(переривання таймера для реалізації багатозадачності). У своїй програмірозробник може реалізовувати обробку інших переривань, але при цьому необхідномати на увазі деякі особливості системи.
Упершу чергу, це можливість забороняти переривання на деякий час. Це буваєнеобхідно в разі, коли програмі потрібно винятковий доступ до даних, і ніякестороннє втручання неприпустимо. Наприклад, в більшості системних функцій RTOSна початку коду переривання забороняються, а в кінці – дозволяються. Цезроблено для того, щоб в процесі зміни внутрішніх системних даних не моглостатися перемикання завдання, що призвело б до помилок. Проте цією можливістюне слід зловживати, і вкрай бажано, щоб переривання не були заборонені протягомтривалого часу, оскільки це істотно знижує час реакції системи на зовнішні події.
Важливиммоментом є також те, що всередині процедур обробки переривань неможливий викликфункцій очікування. При спробі викликати таку функцію буде повернуто кодпомилки. Здійснення ж сигналів та повідомлень, а також звільнення семафоріввсередині обробників переривань допустимо, хоча і вимагає деяких додатковихдій, а саме: на початку процедури обробки необхідно зберегти контекст поточногозавдання шляхом виклику відповідної системної функції, а в кінці замістьзвичайної інструкції повернення з переривання (RETI) потрібно виконати викликсистемної функції повернення, яка присутня у RTOS API. Це все потрібно длятого, щоб забезпечити коректну обробку переривання. У звичайній ситуації викликфункції відправлення повідомлення може викликати переключення на більшпріоритетну задачу. У разі ж обробки переривання така поведінка неприпустимо, ітому замість негайного перемикання функція відправлення повідомлення простовиставляє прапор перемикання. Після того, як обробка переривання будезавершена, можна виконувати перемикання завдань, що і робить системна функціяповернення з переривання, якщо виявляє, що прапор виставлений (саме для цьогона початку потрібно зберегти контекст завдання).
2. Підтримка MicroDSP-RTOS в MetaDSP
СистемаMicroDSP-RTOS розроблялася для створення проектів в інтегрованому середовищікрос-розробки MetaDSP, в якій були додані нові можливості, що полегшуютьстворення й налагодження RTOS-проектів. У першу чергу це система RTOSIlluminator, що дозволяє переглядати і змінювати стан завдань у процесівиконання програми. Також були додані два нових типи профілюванням і новий типпроекту, що містить базовий шаблон для RTOS-проекту. Розглянемо ці нововведеннядокладніше.
2.1 RTOS Illuminator
Цейінструмент являє собою вбудовану утиліту для спостереження за станом процесів іуправління ними ззовні. Візуально RTOS Illuminator є приєднується вікном усередовищі MetaDSP, в якому на декількох вкладках відображує стан підключенихна даний момент задач.
/>
Рис. 2.Вид вікна RTOS Illuminator, управління завданнями
Вонадозволяє переглядати поточний стан процесів: ім'я процесу (ім'я підключаєтьсяфункції, поле Name), пріоритет (поле Priority), поточний статус процесу(Status). Якщо завдання припинена або перебуває у стані очікування, для неївідображається значення таймауту (Delay), а для задач, які чекають настаннядеякого події, додатково вказується, яка саме ця подія (Event). Для виконуваноїв даний момент завдання також зазначаються кількість тактів, що минув з моментуостаннього перемикання на це завдання (Resumed Cycles), та поточний адресувиконання (Run Address). Для неактивних завдань у поле Run Address виводитьсяадреса програмної пам'яті, з якого буде продовжено виконання завдання.Подвійним клацанням миші по цьому полю можна перейти до того місця вихідногокоду, яке відповідає вказаною адресою, тобто по суті, до тієї точки виконання,в якій завдання була перервана.
Крімцього в цій вкладці можна змінювати стан завдань, а саме:
a. відключити завдання (командаDisconnect Task в системному меню);
b. перевести задачу з режимуочікування, блокування або призупиненого стану в режим готовності (команда MakeTask Ready);
c. змінити пріоритет завдання(редагуванням значення в полі Priority);
d. змінити значення таймауту(при виставленні таймауту в 0 завдання, що перебуває в стані припиненому будепереведена в режим готовності, а для задач, які чекають настання якого-небудьподії значення 0 означатиме нескінченний час очікування);
Злівавід імені кожного завдання присутній прапорець, включивши який, можнавстановити точку зупину, спрацьовує в момент перемикання RTOS на це завдання.Ця функція значно розширює можливості налагодження багатопоточних додатків.
НаРис. 3 показана вкладка Events.
/>
Рис. 3.Вид вікна RTOS Illuminator, управління об'єктами синхронізації
Націй вкладці відображаються всі об'єкти межзадачного взаємодії і синхронізації,створені програмою. Для кожного об'єкта виводяться його адреса (у полі Name),тип об'єкта (сигнал, семафор, поштову скриньку і т. п., поле Type) ісписок завдань, які очікують даний об'єкт синхронізації (поле Waiting Tasks).Для сигналів і семафорів додатково виводиться лічильник, який представляє собоюпоточний стан об'єкту (Counter), а для поштових скриньок і черг повідомлень – покажчикна повідомлення, якщо воно присутнє (Message).
Таксамо, як і у вкладці Tasks, ліворуч від кожного об'єкта присутній прапорець,який включає / вимикає точку зупину, які виконуються при настанні зазначеногоподії.
ВкладкаStack Info надає інформацію про поточний стан стека для кожного завдання. Дляпоточного завдання це буде просто значення стековий регістрів, а для всіх іншихзавдань виводяться значення, збережені в контексті при перемиканні. На ційвкладці також відображаються розмір стека, процентне співвідношення йоговикористання і максимальний відсоток використання, який був за весь час роботиданої задачі.
ВкладкаRTOS Info відображає відомості про систему RTOS в цілому: кількість тактів, щоминув з моменту останнього спрацьовування таймера, тривалість кванта часу,загальне число квантів часу, який минув з моменту старту системи, і версіюRTOS.
2.2 RTOS Profiler
/>
Рис. 4.Вид вікна RTOS Profiler, послідовність завдань
Спочатку,до розробки MicroDSP-RTOS, в MetaDSP був присутній вбудований Профілювальники,що надає інформацію про розподіл процесорного часу між різними функціямивсередині програми, а також збирає статистику по кількості виконанихпроцесорних інструкцій різного типу. З появою MicroDSP-RTOS були додані дванових типи профілізацією.
Відображенняпослідовності виконуються завдань (Мал. 4).
Цявкладка вікна Профілювальники надає в наочному графічному вигляді, які завданняі протягом якого проміжку часу виконувалися. Проміжок часу вказується як впроцесорних тактах, так і в системних кванта часу.
Розподілпроцесорного часу за завданням (Мал. 5).
/>
Рис. 5.Вид вікна RTOS Profiler, розподіл часу за завданнями
Уцій вкладці вікна Профілювальники відображається, яку частину процесорного часузаймала кожна задача. Опціонально можна також відобразити сумарний час виконаннядля системної фонової завдання (background), для процедури обробки таймерногопереривання (RTOS ISR – Interrupt Service Routine), за яким RTOS виконуєперемикання завдань, та процедури початкової ініціалізації (Bootstrap).
RTOS-Профілювальникидозволяє оцінити різні показники додатку, що розробляється, пов'язані змультизадачність, наприклад, наскільки правильно обраний розмір кванта часу,з'ясувати, протягом якого часу система перебувала в простої і так далі.Визначення значень цих характеристик дає можливість порівнювати ефективністьсистеми при різних значеннях її параметрів, що в свою чергу полегшує створенняефективного продукту.
Висновок
Уданій роботі була розглянута операційна система реального часу MicroDSP-RTOS,розроблена в ІСП РАН для одного з індустріальних партнерів. Дана системапризначена для забезпечення роботи багатозадачних рішень на базі «системи начіпі» c архітектурою MicroDSP. Реалізація MicroDSP-RTOS виконана повністю намові асемблера зазначеного мікропроцесора з наданням прикладних інтерфейсів дляпрограм на мові C. Були розглянуті основні можливості системи, етапи їїрозвитку, особливості підтримання налагодження багатозадачних додатків вінтегрованому середовищі крос-розробки.
Розробленасистема має наступні характеристики (для часу виконання вказується максимальноможливий час; для перекладу в мікросекунди розглядається процесор з частотою200 МГц):розмір ядра 829 слів повний розмір системи (включаючи опціональні модулі) 1957 слів час збереження / відновлення контексту 65тактів (0,33 мкс) тривалість ISR (8 завдань) 474 такту (2,37 мкс) тривалість ISR (63 завдання) 2290тактів (11,5 мкс)
Досправжнього моменту робота над MicroDSP-RTOS завершена, результати впровадженіу виробництво замовника; зокрема, відомо про стільниковий телефон, в якомувикористовується ця система.
Література
1. С. Сорокін. Якбагато ОС РВ хороших… Сучасні технології автоматизації, 2 / 1997, стор 7–11
2. С. Сорокін. Windows.Сучасні технології автоматизації, 2 / 1997, стор 18–20
3. С. Сорокін. Системиреального часу. Сучасні технології автоматизації, 2 / 1997, стор 22–29
4. Comparison betweenQNX RTOS V6.1, VxWorks AE 1.1 and Windows CE. NET. Dedicated Systems Experts
5. А. Жданов.Операційні системи реального часу. PCWeek, 8 / 1999.
6. А. Жданов, А.лати. Зауваження про вибір операційних систем при побудові систем реальногочасу. PCWeek, 1 / 2001
7. А.О. Жданов. Щодень прийдешній нам готує? (У зв'язку з появою Windows NT на ринку ОСРВ).
8. А.О. Жданов.Сучасний погляд на ОС реального часу.
9. В. Семенюк.Системи реального часу.
10. T. Samuelsson, M. Åkerholm,Department of Computer Science and Engineering; P. Nygren, J. Stärner, L.Lindh. A Comparison of Multiprocessor RTOS Implemented in Hardware andSoftware. Computer Architecture Laboratory, Mälardalen University, Västerås,Sweden.