Симулируем чайник в Wind River Simics

в 5:13, , рубрики: embedded software development, fault injection, simulation, Анализ и проектирование систем, Блог компании Intel, полноплатформенная симуляция, Программинг микроконтроллеров, симуляция

Симулируем чайник в Wind River Simics

Примечание переводчика: представляю вниманию почтенной публики статью Якоба Энгблома (Jakob Engblom), в которой он демонстрирует внесение «аналогового» устройства в общем-то дискретный симулятор. Сам я также использую и разрабатываю модели для Simics, но с несколько других позиций, из-за чего редко вижу конечные плоды всей деятельности. Поэтому мне было очень интересно узнать, чем занимаются мои коллеги из Wind River, а затем захотелось поделиться с вами. Тех, кому тема полноплатформенной симуляции или конкретно Simics показались интересными, рекомендую обратить внимание на свежайший выпуск Intel Technology Journal Simics Unleashed – Applications of Virtual Platforms. Я также могу рассказать о Simics более детально и на Хабре в последующих своих постах. Жду ваших комментариев!

Встраиваемая вычислительная система редко работает в изоляции. Тогда как персональные компьютеры и потребительская электроника обычно могут работать самостоятельно с относительно нечастным вмешательством человека, большинство встроенных компьютеров тесно взаимдействуют с окружающим их миром. Они «чувствуют» его, исполняют управляющие алгоритмы, считывают показания датчиков, используют всевозможные актуаторы для того, чтобы изменять внешнюю среду. Они — активные участники непрерывно эволюционирующей кибер-физической реальности. Симуляция таких систем не может быть ограничена моделью изолированного цифрового компьютера — приходится вносить в неё часть физического мира. На следующем видео на Youtube демонстрируется, как это можно осуществить с помощью Wind River Simics.


Также доступны несколько роликов, опубликованных NASA (National Aero Space Agency), демонстрирующих, как Simics задействуется в истинно полно-платформенной симуляции в проекте Global Precipitation Measurement.

Для видео, представленного выше, был воссоздана следующая конфигурация.

Симулируем чайник в Wind River Simics

Основные элементы: консоль управления, плата с установленной ОС VxWorks и управляющим приложением, нагреватель воды (чайник). Контроль осуществляется с помощью актуатора, изменяющего мощность, подводимую к нагревательному элементу в чайнике. Программой принимаются решения на основании показаний текущей температуры воды, измеряемой термометром. Термометр и нагреватель подключены к аналогово-цифровому (АЦП) и цифрово-аналоговому (ЦАП) преобразователям соответственно, которые расположены на плате встраиваемого компьютера. Детали того, как в целом происходит моделирование устройств в Simics, описаны в другом посте. Управляющая программа имеет доступ только к АЦП и ЦАП, как это бывает в настоящих системах. Моделирование физических процессов делается внутри Simics; оно реализовано с помощью встроенного интерпретатора Python и Simics API.

Симулируем чайник в Wind River Simics

Благодаря тому, что физическая модель внесена внутрь симуляции, становится возможным обращать время, инспектировать состояние её частей и контролировать её через графический интерфейс Simics. Дополнительная возможность, не показанная на видео, — устанавка брейкпоинтов на события в симуляции, такие как закипание воды или сгорание чайника (прошу прощения за спойлер). На практике довольно часто реализуется такая схема: физическая модель исполняется вне Simics в уже написанной сторонней программе, а затем пишется некоторый коннектор между ней и Simics, внутри которого представлена цифровая часть модели. В этом демо физическая система представлена т.н. системной панелью, расположенной рядом с дисплеем управляющего компьютера, и панелью, позволяющей искуственно инициировать ошибки (т.е. проводить fault injection).

Симулируем чайник в Wind River Simics

Примечание: начиная с версии 4.8 интерфейс Simics, используемый по умолчанию, основан на Eclipse.

Часть возможностей механизма fault injection демонстрируется в видео; эта конфигурация также позволяет исследовать некоторые другие сценарии. Модель физической системы написана так, что позволяет вносить в датчик температуры шум, чтобы он сообщал искажённые значения, или даже вообще заморозить его показания. Можно изменять высоту чайника над уровнем моря, а это влияет на температуру кипения воды. Нагреватель можно зафиксировать на некоторой мощности. Всё это позволяет тестировать надёжность ПО в присутствии возможности возникновения разнообразных проблем, без необходимости поиска граничных условий аналитическими методами или модификации реального оборудования (т.е. чайника).

Симулятор NASA и Simics

Пользователи Simics на практике могут поместить внутрь симуляции гигантские системы, представляющие физические, механические и управляющие алгоритмы. Эти симуляции часто также огромны, исполняются на десятках различных хозяйских систем и соединены с помощью специализированого связуещего ПО. С помощью API, предоставляемых пакетом Simics Extension Builder, становится возможно интегрировать Simics с почти любой сторонней системой.

Примечательным примером такой интеграции является работа, опубликованная NASA (NASA IV&V Success Story на Youtube). В установке NASA Go-Sim (другое видео на Youtube) была использована комбинация управляющего компьютера, симулируемого Simics, и собственной разработки для моделирования физических процессов. Для соединения сенсоров и актуаторов космического корабля с управляющим компьютером были использованы шины 1553 и Spacewire. При этом сообщения, проходящие по ним, могут быть перехвачены и модифицированы для того, чтобы протестировать надёжность ПО в присутствии помех (ещё одно видео).

Для того, чтобы узнать больше о том, как Simics может помочь вам промоделировать вашу систему, посетите simics.com или www.windriver.com/products/simics/. Другие видео, демонстрирующие работу Simics, доступны на канале Wind River на Youtube: www.youtube.com/user/windriverchannel.

Автор: Atakua

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js