До недавнего времени бытовало мнение, что ОСРВ (Real-Time Operating System - RTOS) никогда не смогут работать на микроконтроллерах Microchip, и их судьба – пользоваться бесконечным циклом в «сишной» функции main, откуда по очереди вызываются различные функции, являющиеся «процессами». Есть даже ссылка на Application Notes от Microchip для PIC16 на подобную простую ОС.
Однако с появлением семейства PIC18, а затем dsPIC и PIC24 положение резко изменилось. Ядро микроконтроллера специально оптимизировано для работы с языком C, что уже позволяет использовать настоящие ОСРВ.
Кому-то может показаться ОС пустой тратой времени и сил. В мире встроенных систем столько разработчиков, говорящих об ОСРВ и не обладающих практическими знаниями в этой области! Тот, кто хорошо знаком с ОС для микроконтроллеров также хорошо представляет себе преимущества применения ОС: можно по-настоящему сосредоточиться непосредственно на разработке задач, поскольку управление задачами осуществляет ядро ОС. А при наличии реально работающих драйверов периферии!.. Сказка! С применением ОС взгляды программиста меняются так же сильно, как переход от линейного программирования на ООП. Представляемая здесь ОСРВ PICos18, разработанная специалистами французской фирмы Pragmatec S.A.R.L.(www.pragmatec.net), является мультизадачной с приоритетным и карусельным (round-robin) вытеснением с гарантированным временем реакции на события до 50 мкс.
PICos18 основан на стандарте OSEK-VDX (www.osek-vdx.org). Это большой проект в автоиндустрии, поддерживаемый большинством французских и немецких автопроизводителей. Целью данного проекта является определение стандарта управления и работы встроенных архитектур на современных автомобилях. Однако практика применения PICos18 гораздо, гораздо шире. Pragmatec распространяет PICos18 как open-source с использованием GPL лицензии. Это значит, что все исходные тексты на С и на ассемблере всегда доступны без каких-либо ограничений и без каких-либо выплат авторам. Естественно, разработчики ОС слагают с себя всю ответственность перед пользователями. Однако в рамках GPL лицензии вы можете изменять исходные коды и даже стать соавтором! Как автор этой статьи.
В ходе работ над большим проектом по созданию распределенной системы встал вопрос выбора типа микроконтроллера как базового и связанного с ним уже имеющегося ПО. Опуская рассказ о муках и терзаниях выбора, остается сказать, что соотношение цена – качество – ПО у PIC18 оказалось наилучшим. Далеко не последним аргументом была ОСРВ PICos18. Это была очень удачная находка. Подробно прокомментированные исходные тексты ядра и сервисов, отличная и тщательно продуманная сопровождающая документация, несколько пробных проектов, программы-драйверы для периферии, индикаторов, памяти и т.д.! Приятно удивила работающая программа tutor! Проект полностью создан в среде MPLAB с использованием компилятора С18, что позволяет пользоваться стандартным отладчиком ICD2 (или PICkit2) и всеми мощными средствами отладки MPLAB! MPLAB Sim также не будет лишним.
Программисту фактически необходимо прописать бланки описания задач, на которые разбивается программный поток, а затем наполнить эти задачи необходимой функциональностью. Взаимодействие между задачами и драйверами (которые тоже являются задачами) осуществляется посредством небольшого, но очень эффективного набора сервисов. В настоящее время PICos18 v3.00 b2 доступна на сайте www.picos18.com. Автор использует текущую на момент написания статьи версию в MPLAB 8.00 и C18 v3.14 student edition.
PICos18. Операционная система реального времени для PIC18. Руководство пользователя.
Сергей Кушнир,
picos18@tut.by