Альтернативы явным стекам в осуществлении RTOS-удаления?

Раздел 2.3 «Аннотации к самотипу» оригинальной статьи Scala Мартина Одерского Абстракции масштабируемых компонентов на самом деле очень хорошо объясняет цель самотипа помимо миксиновой композиции: предоставляет альтернативный способ ассоциирования класса с абстрактным типом.

Пример, приведенный в статье, был похож на следующий, и у него, похоже, нет элегантного корреспондента подкласса:

abstract class Graph {
  type Node <: BaseNode;
  class BaseNode {
    self: Node =>
    def connectWith(n: Node): Edge =
      new Edge(self, n);
  }
  class Edge(from: Node, to: Node) {
    def source() = from;
    def target() = to;
  }
}

class LabeledGraph extends Graph {
  class Node(label: String) extends BaseNode {
    def getLabel: String = label;
    def self: Node = this;
  }
}

6
задан EmbeddedMike 9 July 2009 в 18:45
поделиться

4 ответа

Используя инструмент, такой как IAR visualState , вы можете сгенерировать код для иерархических конечных автоматов без отдельных стеков. Существует бесплатный SMC , который немного менее эффективен, с меньшим количеством функций и не поддерживает красивые изображения UML StateChart.

Вы также можете передать конечные автоматы кода как функции с помощью операторов switch и статические переменные для хранения состояния.

Существуют облегченные библиотеки псевдопотоков на основе конечного автомата, которые делают это с помощью макросов C. Посмотрите protothreads

4
ответ дан 8 December 2019 в 18:40
поделиться

I would highly recommend looking at Miro Samek's Quantum programming framework. He has one of the most efficient HSM's out there that runs on a lot of platforms such as the ARM7. He also has various levels of complexity of the framework to suit your needs. I would recommend grabbing his book called Practical StateCharts in C/C++ as well. He has a hierarchical state machine in both C and C++. The beauty of this framework is that it's not to hard to go from UML or state diagrams to actual code with some degree of efficiency. This framework can be run as it's own scheduler or used along side an RTOS.

I have actually implemented my own HSM in C++ for one of my company's home grown RTOS with some success. I used a lot of Samek's design principles, but not his code due to GPL (free version) and pricing for commercial license (non-GPL).

3
ответ дан 8 December 2019 в 18:40
поделиться

Вы проверяли Протонити Адама Данкелса ? Он называет их «легкими бесстековыми потоками на языке C»

. Вместо того, чтобы заново изобретать колесо, я процитирую небольшой фрагмент с сайта protothreads прямо здесь:

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

Я использовал Protothreads и HSM Samek QP - они ' re оба хороших решения проблем в перекрывающихся областях. Для этого я, вероятно, склоняюсь к протопотокам.

Вы упомянули об устранении коммерческой ОСРВ. Хотите знать, не связано ли это с объемом кода, стоимостью, кривыми обучения инженеров, производительностью ... не могли бы вы просто заменить RTOS одной из (многих) бесплатных? Думаю, нет, но не повредит спросить.

PS Dunkels также имеет отличный веб-сайт с множеством полезных ресурсов и программного обеспечения для разработчиков встроенных систем - проверьте это (Contiki, стеки протоколов и т. Д. ..)

не могли бы вы просто заменить RTOS на одну из (многих) бесплатных? Думаю, нет, но не повредит спросить.

PS Dunkels также имеет отличный веб-сайт с множеством полезных ресурсов и программного обеспечения для разработчиков встроенных систем - проверьте это (Contiki, стеки протоколов и т. Д. ..)

не могли бы вы просто заменить RTOS на одну из (многих) бесплатных? Думаю, нет, но не повредит спросить.

PS Dunkels также имеет отличный веб-сайт с множеством полезных ресурсов и программного обеспечения для разработчиков встроенных систем - проверьте это (Contiki, стеки протоколов и т. Д. ..)

5
ответ дан 8 December 2019 в 18:40
поделиться

Я бы также выбрал фреймворк квантового программирования!

1
ответ дан 8 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: