Многозадачность ОСРВ на AVR - PullRequest
       68

Многозадачность ОСРВ на AVR

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

У меня есть чип AT90USB162 AVR, на котором я хочу запустить многозадачную ОСРВ, поэтому я оцениваю возможную ОСРВ для использования с моим чипом АВР.Какие многозадачные ОСРВ поддерживаются AVR?Может быть, QNX?(Возможно ли запустить ядро ​​QNX на микрочипе AVR?).

Заранее спасибо.

Ответы [ 4 ]

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

Atmel AT90USB162 - это 8-битный микроконтроллер на основе AVR RISC - QNX будет растянутым, а AVR не находится в их каталоге BSP

Micrium поддерживает AVR с ОС / ОС-II

FreeRTOS также поддерживает AVR

4 голосов
/ 26 октября 2011

Когда вы говорите «RTOS», я предполагаю, что вы имеете в виду упреждающую многозадачность? Я предполагаю (так как это 8-битный AVR) вам не нужна файловая система, сетевой стек и т. Д .?

Если вы ищете крошечное упреждающее многозадачное ядро, вы можете попробовать Quantum Platform - я использовал его на очень ресурсоемком платформы, такие как AVR и MSP430. Сотрудники также использовали его на 8-битных версиях 8051 и HC11.

Превентивное ядро ​​QP (QK) - это ядро ​​с полным циклом выполнения, которое снижает требования к его стеку (RAM) и делает переключение контекста менее ресурсоемким (без TCB, меньше контекста для сохранения и восстановления).

Существует вариант QP / C, который является «маленьким», и вариант QP-nano, который является «крошечным». Так как эти термины абсолютно бессмысленны без чисел, на странице QP-nano есть сравнение типов ядра и их типичных размеров. Например (приведены минимальные цифры): типичная ОСРВ, 10К ПЗУ, 10К ОЗУ; QP / C - 8K ROM, 1K RAM; QP-nano - 2 КБ ПЗУ, 100 байт ОЗУ.

Хорошо, что доступен весь код, так что вы можете скачать его, попробовать и убедиться сами.

3 голосов
/ 15 декабря 2011

QNX - не случайно! QNX - это относительно большая и сложная ОС для 32-битных устройств с MMU, обеспечивающая не только планирование на уровне ядра, но и файловые системы, отказоустойчивые сети, POSIX API, GUI и т. Д. Его наиболее важной особенностью является поддержка защиты памяти - каждый поток работает в своем собственном сегменте виртуальной памяти, поэтому работает только на устройствах с соответствующей аппаратной поддержкой.

Какие функции вы хотите от вашей ОС? На 8-битном устройстве разумно ожидать упреждающего планирования и IPC на основе базовых приоритетов. Другие службы, такие как работа в сети, файловая система, USB и т. Д., Обычно являются надстройками от поставщика ОСРВ или должны быть интегрированы самостоятельно из стороннего кода.

Очевидным выбором, если вы не хотите тратить деньги, является FreeRTOS. Он компетентен , хотя в некотором смысле нетрадиционен с точки зрения архитектуры, даже если он довольно условен на уровне API. В моих тестах на ARM время переключения контекста было медленнее, чем в других ядрах, которые я сравнивал, с другими, которые я тестировал, но это может не относиться к AVR, и это будет проблемой, если вам потребуется время отклика в реальном времени в порядке несколько микросекунд. AVR имеет довольно большой набор регистров, поэтому переключение контекста обычно дорого в любом случае.

У Atmel есть список сторонней поддержки, включая RTOS, по адресу http://www.atmel.com/products/AVR/thirdparty.asp#. В них перечислено следующее:

  • CMX Systems, Inc: CMX-RTX, CMX-Tiny + (дополнения: CMX-MicroNet, CMX-FFS)
  • FreeRTOS.org: FreeRTOS
  • Микром, Inc: мкК / ОС-II
  • Nut / OS: стек RTOS и TCP / IP с API в стиле Posix.
  • SEGGER: embOS

У меня есть личный опыт использования CMX-Tiny + (для dsPIC), embOS (для ARM) и FreeRTOS (для ARM), а также для uC / OS-II. Все они компетентны, у uC-OS-II есть небольшое ограничение: разрешать только одну задачу на каждом уровне приоритета (без циклического планирования), но, следовательно, возможно более быстрое переключение контекста. В случае с EmbOS я успешно интегрировал стороннюю файловую систему и USB-код, хотя у производителя также есть свои надстройки для них.

0 голосов
/ 30 января 2017

Хотя это и не прямой ответ на ваш вопрос, будучи 8-битным контроллером с ограниченными ресурсами, подумайте о преимуществах перед переходом на уровень ОС, но преимущество уровня ОС будет выгодно только тогда, когда проект должен обрабатывать основные подсистемы, которыеутомительно кодировать и поддерживать ex.файловая система, графика, аудио, работа в сети и т. д.

Поскольку большинство поставщиков предоставляют интегрированную среду разработки и стандартные библиотеки и многое другое, вы можете писать код на языках высокого уровня, таких как C, C ++, для простого управления задачами.к вашему собственному каркасу будет гораздо удобнее

...