Рассмотрим, как цели вашего приложения, такие как эффективность, трассируемость и безопасность, сопоставляются с параметрами генерации кода в наборе конфигурации модели. Параметры, которые вы устанавливаете в диалоговом окне Параметры конфигурации (Configuration Parameters), определяют поведение модели в симуляции и кода, сгенерированного для модели.
Перед генерацией кода или в рамках процесса генерации кода можно использовать Code Generation Advisor, чтобы просмотреть модель. Когда вы принимаете решение просмотреть модель перед генерацией кода, вы задаете, какую модель, подсистему или ссылочную модель рассматривает Code Generation Advisor. Когда вы принимаете решение просмотреть модель как часть процесса генерации кода, Code Generation Advisor просматривает всю систему. Советник по Генерации кода использует информацию, представленную в Рекомендуемых настройках Сводных данных для параметров конфигурации модели, чтобы определить значения параметров, которые соответствуют вашим целям. Когда существует конфликт между несколькими целями, приоритетная цель имеет приоритет.
Установка целей генерации кода, а затем запуск Code Generation Advisor предоставляет информацию о том, как соответствовать целям генерации кода для вашей модели. Советник по Генерации кода не изменяет сгенерированный код. Можно использовать Генерацию кода Advisor, чтобы внести предлагаемые изменения в модель. Сгенерированный код меняется только после изменения модели и регенерации кода. Когда вы используете Code Generation Advisor, чтобы задать цели генерации кода и проверить свою модель, сгенерированный код включает комментарии, идентифицирующие заданные вами цели, проверки, которые Code Generation Advisor выполнял на модели, и результаты выполнения проверок.
Если модель использует ссылку на строение, можно запустить Генерация Кода Advisor, чтобы просмотреть настройки параметров конфигурации. Однако Генерация кода Advisor не может изменить параметры конфигурации.
В зависимости от типа приложения, которое представляет ваша модель, у вас, вероятно, будут определенные цели генерации кода высокого уровня. Для примера безопасность и трассируемость важнее, чем эффективное использование памяти. Если у вас есть конкретные цели, можно быстро сконфигурировать модель для достижения этих целей, выбрав и определив приоритеты из этих целей генерации кода:
Эффективность выполнения (все цели) - настройте настройки генерации кода для достижения быстрого времени выполнения.
Эффективность ПЗУ (целевые устройства на основе ERT) - настройте настройки генерации кода, чтобы уменьшить использование ПЗУ.
Эффективность ОЗУ (целевые устройства на основе ERT) - настройте настройки генерации кода, чтобы уменьшить использование ОЗУ.
Трассируемость (ERT-основанные цели) - настройте настройки генерации кода, чтобы обеспечить отображение между элементами модели и кодом.
Безопасность (ERT-основанные цели) - настройте настройки генерации кода для повышения ясности, детерминизма, робастности и верифицируемости кода.
Отладка (все целевые объекты) - настройте настройки генерации кода, чтобы отлажить процесс сборки генерации кода.
MISRA C:2012 guidelines (ERT-основанные целевые системы) - настройте настройки генерации кода, чтобы повысить податливость C:2012 MISRA.
Polyspace (целевые устройства на основе ERT) - настройте настройки генерации кода, чтобы подготовить код для Polyspace® анализ.
Если вы выбираете цель генерации кода MISRA C:2012, Code Generation Advisor:
Проверяет настройки конфигурации модели на податливость рекомендациям по настройке строения C:2012 MISRA.
Проверяет блоки, которые не поддерживаются или не рекомендуются для генерации кода, совместимого C:2012 MISRA.
Когда вы проверяете модель в процессе генерации кода, необходимо задать те же цели в верхней модели и ссылочных моделях. Если вы задаете различные цели для верхней модели и модели-ссылки, процесс сборки генерирует ошибку.
Чтобы задать различные цели для верхней модели и каждой модели-ссылки, просмотрите модели отдельно, не генерируя код.
В этом примере показано, как использовать Code Generation Advisor, чтобы проверить и сконфигурировать свою модель, чтобы соответствовать целям генерации кода:
На вкладке C Code нажмите C/C++ Code Advisor.
В окне Системный селектор выберите модель или подсистему, которую вы хотите просмотреть, и нажмите OK.
В Code Generation Advisor на панели Code Generation Objectives выберите цели генерации кода. Когда вы выбираете цели, на левой панели Генерации кода Advisor обновляет список проверок, выполняемых в вашей модели. Если ваша модель сконфигурирована с целевым объектом на основе ERT, доступно больше целей. В данном примере модель сконфигурирована с целевым объектом на основе ERT. Если вашими целями являются эффективность выполнения и трассируемость, в этом приоритете выполните следующее:
В Available objectives дважды кликните мышью Execution efficiency
. Execution efficiency
добавляется к Selected objectives - prioritized.
В Available objectives дважды кликните мышью Traceability
. Traceability
добавляется к Selected objectives - prioritized под Execution efficiency
.
Чтобы запустить проверки, перечисленные в левой панели Генерации кода Advisor, нажмите Run Selected Checks.
В окне Генерации кода Advisor проверьте результаты для Check model configuration settings against code generation objectives, выбрав их в левой панели. Результаты проверки отображаются на правой панели.
Check model configuration settings against code generation objectives вызывает предупреждение по этим вопросам:
Параметры устанавливаются в значения, отличные от значений, рекомендуемых для заданных целей генерации кода.
Выбранные цели генерации кода отличаются от целей, установленных в модели.
Щелкните Modify Parameters, чтобы задать:
Параметры к значению, рекомендованному для заданных целей генерации кода.
Цели генерации кода в модели к целям, заданным в Code Generation Advisor.
В окне Генерации кода Advisor проверьте результаты остальных проверок, выбрав их в левой панели. Результаты проверок отображаются на правой панели.
После просмотра результатов проверки можно принять решение исправить предупреждения и отказы, как описано в Исправить предупреждение или отказ проверки Model Advisor.
Когда вы задаете цель эффективности или безопасности, Генерация Кода Advisor включает дополнительные проверки. При внесении изменений в одну из этих дополнительных проверок результаты предыдущих проверок потенциально могут стать недействительными и должны быть перезапущены.
В этом примере показов, как сконфигурировать и проверить свою модель, чтобы соответствовать целям генерации кода через диалоговое окно Параметров конфигурации:
Откройте диалоговое окно Параметры конфигурации. Выберите Code Generation.
Укажите системный целевой файл. Если вы задаете цель на основе ERT, доступно больше целей. В данном примере выберите основанную на ERT цель, такую как ert.tlc
.
Нажмите Set Objectives.
В диалоговом окне Задать цели - Генерация Кода Advisor задайте свои цели. Для примера, если ваши цели являются эффективностью выполнения и трассируемости, в этом приоритете, сделайте следующее:
В Available objectives дважды кликните мышью Execution efficiency
. Execution efficiency
добавляется к Selected objectives - prioritized.
В Available objectives дважды кликните мышью Traceability
. Traceability
добавляется к Selected objectives - prioritized под Execution efficiency
.
Чтобы принять цели, нажмите OK. В диалоговом окне Параметров конфигурации обновляется Code Generation > Prioritized objectives.
На панели Code Generation нажмите Check Model.
В окне Системный селектор выберите модель или подсистему, которую вы хотите просмотреть, и нажмите OK. Откроется Генерация кода Advisor, который просматривает указанную модель или подсистему.
В окне Генерации кода Advisor проверьте результаты, выбрав проверку из левой панели. Результаты проверки отображаются на правой панели.
После просмотра результатов проверки можно принять решение исправить предупреждения и отказы, как описано в Исправить предупреждение или отказ проверки Model Advisor.
Когда вы задаете цель эффективности или безопасности, Генерация Кода Advisor включает дополнительные проверки. При внесении изменений в одну из этих дополнительных проверок результаты предыдущих проверок потенциально могут стать недействительными и должны быть перезапущены.
Для получения дополнительной информации смотрите Диалоговое окно Задать цели - Генерация Кода Advisor