Проект проверки концепции системы реального времени

StackOverflow https://stackoverflow.com/questions/706706

  •  22-08-2019
  •  | 
  •  

Вопрос

Я прохожу вводный курс (3 месяца) по проектированию систем реального времени, но любой реализации.

Я хотел бы создать что-то, что позволило бы мне лучше понять, чему я научусь в теории, но поскольку я никогда не создавал никаких систем реального времени, я не могу оценить, сколько времени займет любой проект.Это был бы концептуальный проект или что-то в этом роде, учитывая мое доступное время и знания.

Пожалуйста, не могли бы вы дать мне какую-нибудь идею?Заранее благодарю вас.

Я программирую на TSQL, Delphi и C #, но у меня не возникнет никаких проблем с изучением другого языка.

Это было полезно?

Решение

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

Вы также можете подумать о некоторых промышленных решениях, но их, вероятно, сложнее изучить в ваших местных условиях.

Другие советы

Предлагаю вам рассмотреть возможность изучения Спецификация реального времени для Java (RTSJ).Хотя это не традиционная среда для создания программного обеспечения реального времени, это перспективная технология, представляющая большой интерес.Более того, вы можете стать свидетелем некоторых продолжающихся дебатов о том, что важно, а что нет в системах реального времени.

Солнечный Джавартс свободно доступен для скачивания и содержит несколько интересных демонстраций, демонстрирующих детерминированное поведение и демонстрирующих свой RT garbage collector.

Что касается конкретного проекта, я предлагаю вам начать с простого:1) Создайте рабочий генератор, который вы можете настроить на потребление заданного количества процессорного времени;2) Поместите это в структуру, которая может создавать распределение задач генератора работ (в виде потоков или фрагментов работы, выполняемых в потоке) и механизм для протоколирования выполненной работы;3) Создайте графики времени выполнения, временного пребывания, крайнего срока, задержки / перевыполнения этих задач в зависимости от их приоритета;4) продемонстрируйте, что задачи, выполняемые в контексте потоков реального времени (vice timesharing), ведут себя по-разному.

Бонусные баллы, если вы можете измерить накладные расходы в планировщике, определив, при какой поставленной нагрузке (общее время процессора, производимое задачами вашего рабочего генератора, деленное на время настенных часов) ваши задачи начинают пропускать крайние сроки.

Вам определенно следует рассмотреть возможность создания вашей системы с использованием платы разработки аппаратного обеспечения, оснащенной небольшим процессором (подойдет ARM, PIC, AVR, любой другой).Это действительно помогло избавиться от моего страха перед низким уровнем, когда я начал развиваться.Однако вам придется использовать C или C ++.

Тогда у вас будет две альтернативы :либо переходите на голый металл, либо используйте операционную систему реального времени.

Используя голый металл, вы можете научиться :

  • Как инициализировать ваш процессор с нуля и, самое главное, как использовать прерывания, которые являются самым быстрым способом реагирования на внешнее событие
  • Как реализовать легкие потоки с быстрым переключением контекста, что реализует каждая ОС реального времени
  • Чтобы немного упростить это, поищите набор для разработки, который поставляется с большим количеством документации и исходного кода.Я использовал встроенные платы Artists ARM boards, и они дают вам много материала.

Переход на ОС RT :

  • Вы ускорите свой проект и сможете научиться тонкой настройке RT OS
  • Вы можете попробовать свои силы в ОС с открытым исходным кодом, такой как Linux или BSD, и многому научиться из исходного кода

Любой из вариантов хорош, вы получите действительно классный практический проект, которым сможете похвастаться, и, надеюсь, лучше поймете материал вашего курса.Удачи!

Поскольку большинство систем реального времени все еще реализованы на C или C ++, возможно, было бы неплохо освежить свои знания этих языков программирования.Многие системы реального времени также являются встроенными системами, поэтому вы можете поиграть с дешевой системой с открытым исходным кодом, такой как BeagleBoard (http://beagleboard.org/).Это также даст вам возможность узнать о кросс-компиляции и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top