DO-178C/DO-331 проверки упрощают разработку и поиск и устранение неисправностей моделей, из которых код сгенерирован для приложений, которые должны встретить безопасности или критически важным для миссии требованиям.
Model Advisor выполняет контроль лицензии Simulink® Check™, когда вы запускаетесь DO-178C/DO-331 проверки.
Эти проверки квалифицированы DO Qualification Kit к использованию в проектах, включающих стандарт DO-178 и связанные стандарты.
Simulink Check (Simulink)
Simulink Coder проверяет (Simulink Coder)
Радио-Техническая Комиссия для Аэронавтики (RTCA) для получения информации о DO - 178C Факторы программного обеспечения в Бортовых Системах и Сертификации оборудования и связанных стандартах
ID проверки: mathworks.do178.CodeSet
Проверяйте настройку модели на настройки генерации кода, которые могут повлиять на безопасность.
Эта проверка проверяет, что параметры конфигурации модели для генерации кода установлены оптимально для связанного с безопасностью приложения.
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Опция, чтобы включать комментарии в сгенерированный код очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Include comments (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр GenerateComments к on . |
Опция, чтобы включать комментарии, которые описывают код для блоков, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Simulink block comments (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр SimulinkBlockComments к on . |
Опция, чтобы включать комментарии, которые описывают код для блоков, устраненных из модели, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Show eliminated blocks (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр ShowEliminatedStatement к on . |
Опция, чтобы включать имена переменных параметра и исходных блоков как комментарии в описании структуры параметра модели в очищен. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Verbose comments for 'Model default' storage class (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр ForceParamTrailComments к on . |
Опция, чтобы включать описания требования, присвоенные блокам Simulink как комментарии, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Requirements in block comments (Embedded Coder) на Code Generation> панель Custom comments в диалоговом окне Configuration Parameters или установите параметр ReqsInCode к on . |
Опция, чтобы сгенерировать неличные данные и операции выбрана. Поддержка неличных чисел является несоответствующей для встроенных систем реального времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Support: non-finite numbers (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportNonFinite к off . |
Опция, чтобы сгенерировать и обеспечить целочисленные счетчики в течение абсолютного и прошедшего времени выбрана. Поддержка в течение абсолютного времени является несоответствующей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Support: absolute time (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportAbsoluteTime к off . |
Опция, чтобы сгенерировать код для блоков, которые используют непрерывное время, выбрана. Поддержка в течение непрерывного времени является несоответствующей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Support: continuous time (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportContinuousTime к off . |
Опция, чтобы сгенерировать код для невстроенных S-функций выбрана. Эта опция требует поддержки неличных чисел, которая является несоответствующей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Support non-inlined S-functions (Embedded Coder) в диалоговом окне Configuration Parameters или установите параметр SupportNonInlinedSFcns к off . |
Опция, чтобы сгенерировать вызовы функции модели, совместимые с основным программным модулем цели pre-R2012a GRT, выбрана. Эта опция является несоответствующей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Classic call interface (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр GRTInterface к off . |
Опция, чтобы сгенерировать функция очищена. Наличие одного вызова функций выхода и обновления упрощает интерфейс до операционной системы реального времени (RTOS) и упрощает верификацию сгенерированного кода. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Выберите Single output/update function (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр CombineOutputUpdateFcns к on . |
Опция, чтобы сгенерировать функция выбрана. Эта функция освобождает динамическую память, которая является неподходящей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Terminate function (Embedded Coder) на панели Code Generation в диалоговом окне Configuration Parameters или установите параметр IncludeMdlTerminateFcn к off . |
Опция, чтобы регистрировать или состояние ошибки монитора очищена. Если вы не выбираете эту опцию, продукт Simulink Coder™ генерирует дополнительный код, который не может быть достижимым для тестирования. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Выберите Remove error status field in real-time model data structure (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SuppressErrorStatus к on . |
Логгирование MAT-файла выбрано. Эта опция добавляет дополнительный код для логгирования тестовых точек к MAT-файлу, который не поддержан целевыми процессорами. Используйте эту опцию только в тестовых обвязках. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите MAT-file logging (Simulink Coder) в диалоговом окне Configuration Parameters или установите параметр MatFileLogging к off . |
Опция, которая задает стиль для использования круглой скобки, установлена в Minimum (Rely on C/C++ operators precedence) или к Nominal (Optimize for readability) . Для связанных с безопасностью приложений явным образом задайте приоритет с круглыми скобками. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером, DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером, и MISRA C:2012, Правилом 12.1.) | Установите параметр ParenthesesLevel к Maximum (Specify precedence with parentheses) . |
Опция, которая задает, сохранить ли порядок операнда, очищена. Эта опция увеличивает трассируемость сгенерированного кода. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Установите параметр PreserveExpressionOrder к on . |
Опция, которая задает, сохранить ли пустые первичные выражения условия в if операторы очищены. Эта опция увеличивает трассируемость сгенерированного кода. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Установите параметр PreserveIfCondition к on . |
Минимальное количество символов, заданных для генерации строк искажения имени, меньше четыре. Можно использовать эту опцию, чтобы минимизировать вероятность, что параметр и имена сигнала изменятся во время генерации кода, когда модель изменится. Использование этой опции помогает с минимизацией различий кода между версиями файла, уменьшая усилие выполнить рассмотрения кода. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Установите Minimum mangle length (Embedded Coder) на Code Generation> панель Identifiers в диалоговом окне Configuration Parameters или параметре MangleLength к значению 4 или больше. |
Нажатие на Modify Settings конфигурирует настройки генерации типового кодекса, которые могут повлиять на безопасность.
Подпроверки зависят от результатов подпроверок, отмеченных с D в таблице результатов в окне Model Advisor.
Не работает на моделях библиотеки.
Не позволяет исключения блоков или графиков.
hisl_0038: Параметры конфигурации> Генерация кода> Комментарии (Simulink)
hisl_0039: Параметры конфигурации> Генерация кода> Интерфейс (Simulink)
hisl_0047: Параметры конфигурации> Генерация кода> Стиль кода (Simulink)
hisl_0049: Параметры конфигурации> Генерация кода> Идентификаторы (Simulink)
Параметры конфигурации модели: комментарии (Simulink Coder)
Параметры конфигурации модели: комментарии (Simulink Coder)
Параметры конфигурации модели: идентификаторы генерации кода (Simulink Coder)
Параметры конфигурации модели: интерфейс генерации кода (Simulink Coder)
Параметры конфигурации модели: стиль кода (Embedded Coder)
Радио-Техническая Комиссия для Аэронавтики (RTCA) для получения информации о DO - 178C Факторы программного обеспечения в Бортовых Системах и Сертификации оборудования и связанных стандартах
ID проверки: mathworks.do178.MathOperationsBlocksUsage
Идентифицируйте использование блоков Math Operation, которые могут повлиять на безопасность.
Эта проверка смотрит использование следующих блоков:
Abs
Gain
Math Function
Натуральный логарифм
Распространенный (базируются 10), логарифм
Остаток после деления
Обратная величина
Assignment
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок Absolute Value, который работает с одним из следующего:
|
Если идентифицированный блок Absolute Value работает с булевым или типом данных без знака, выполнить одно из следующих действий:
Если идентифицированный блок Absolute Value работает с типом данных со знаком в диалоговом окне Block Parameters > Signal Attributes, выберите Saturate on integer overflow. |
Модель или подсистема содержат блоки Gain со значения 1 или единичная матрица. | Если вы используете блоки Gain в качестве буферов, рассматриваете заменяющий их на блоки Signal Conversion. |
Модель или подсистема содержат Math Function - Натуральный логарифм (log) блоки, которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с |
Модель или подсистема содержат Math Function - Распространенный (базируйтесь 10), (base 10 logarithm) блоки, которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с |
Модель или подсистема содержат Math Function - Остаток после division(rem) блоки, которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с |
Модель или подсистема содержат Math Function - Обратная величина (reciprocal) блоки, которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с |
Модель или подсистема могут содержать блоки Assignment с неполной инициализацией массивов, которые не имеют параметров блоков набором Action if any output element is not assigned к Error или Warning. |
Установите параметры блоков Action if any output element is not assigned на одно из рекомендуемых значений:
|
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
Раздел DO-331 MB.6.3.1.d – Требования высокого уровня поддается проверке
Раздел DO-331 MB.6.3.2.d – Низкоуровневые требования поддается проверке
MISRA C:2012, Dir 4.1
MISRA C:2012, правило 9.1
hisl_0002: Использование блоков Математической функции (rem и обратная величина)
hisl_0004: Использование блоков Математической функции (натуральный логарифм и основа 10 логарифмов)
ID проверки: mathworks.do178.LogicBlockUsage
Идентифицируйте использование Logical Operator и блоков Bit Operations, которые могут повлиять на безопасность.
Эта проверка смотрит использование:
Блоки, которые вычисляют операторы отношения, включая Relational Operator, Compare To Constant, Compare To Zero, Detect Change и блоки If
Блоки Logical Operator
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок, вычисляя оператор отношения, который работает с различными типами данных. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для идентифицированных блоков используйте типы общих данных в качестве входных параметров. Можно использовать блоки Data Type Conversion, чтобы изменить типы входных данных. |
Модель или подсистема содержат блок, вычисляя оператор отношения, который не имеет булева выхода. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для заданных блоков, на Block Parameters> панель Signal Attributes, устанавливает Output data type на boolean . |
Модель или подсистема содержат блок, вычисляя оператор отношения, который использует == или ~ = оператор, чтобы сравнить сигналы с плавающей точкой. Использование этих операторов на сигналах с плавающей точкой ненадежно и непредсказуемо из-за проблем точности с плавающей точкой. Эти операторы могут привести к непредсказуемым результатам в сгенерированном коде. |
Для идентифицированного блока выполнить одно из следующих действий:
|
Модель или подсистема содержат блок Logical Operator, который имеет вводы или выводы, которые не являются булевыми вводами или выводами. Блок может привести к сравнениям равенства или неравенства с плавающей точкой в сгенерированном коде. |
|
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
DO-331, Разделы MB.6.3.1.g и MB.6.3.2.g - Алгоритмы точен
MISRA C:2012, Dir 1.1
MISRA C:2012, правило 10.1
hisl_0016: Использование блоков, которые вычисляют операторы отношения (Simulink)
hisl_0017: Использование блоков, которые вычисляют операторы отношения (2) (Simulink)
ID проверки: mathworks.do178.PortsSubsystemsUsage
Идентифицируйте использование Ports и блоков Subsystems, которые могут повлиять на безопасность.
Эта проверка смотрит использование этих блоков:
For Iterator
While Iterator
If
Switch Case
Проверка не делает блоков флага Switch Case, которые не используют целочисленные типы данных или перечислимые величины для входных параметров. Выполнить hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem Действия (Simulink) – C, используйте целочисленный тип данных или перечислимую величину для входных параметров с блоками Switch Case.
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок For Iterator, который имеет переменные итерации. Это условие может привести к непредсказуемым временам выполнения или бесконечным циклам в сгенерированном коде. |
Для идентифицированных блоков For Iterator выполнить одно из следующих действий:
|
Модель или подсистема содержат блок While Iterator, который имеет неограниченные итерации. Это условие может привести к бесконечным циклам в сгенерированном коде. |
Для идентифицированных блоков While Iterator:
|
Модель или подсистема содержат блок If с, Если выражение или выражения Elseif, которые могут вызвать сравнения равенства или неравенства с плавающей точкой в сгенерированном коде. | Измените выражения в блоке If, чтобы избежать сравнений равенства или неравенства с плавающей точкой в сгенерированном коде. |
Модель или подсистема Еще содержат использование блока If выражения Elseif без условие. | В диалоговом окне Block Parameters блока If выберите Show else condition. Еще соедините получившееся выходной порт с блоком If Action Subsystem. |
Модель или подсистема содержат блок If с выходными портами, которые не соединяются с блоками If Action Subsystem. | Проверьте, что выходные порты блока If соединяются с блоками If Action Subsystem. |
Модель или подсистема содержат блок Switch Case без случая по умолчанию. | В диалоговом окне Block Parameters блока Switch Case выберите Show default case. Соедините получившийся выходной порт по умолчанию с блоком Switch Case Action Subsystem. |
Модель или подсистема содержат блок Switch Case с выходным портом, который не соединяется с блоком Switch Case Action Subsystem. | Проверьте, что выходные порты блоков Switch Case соединяются с блоками Switch Case Action Subsystem. |
Модель или подсистема содержат один из следующих зависящих от времени блоков в подсистеме While Iterator или For Iterator:
| В модели или подсистеме, рассмотрите удаление зависящих от времени блоков. |
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
DO-331, Раздел MB.6.3.3.b — Программная архитектура сопоставима
DO-331, Разделы MB.6.3.1.g и MB.6.3.2.g - Алгоритмы точен
DO-331, Раздел MB.6.3.1.e – Требования высокого уровня соответствуют стандартам
DO-331, Раздел MB.6.3.2.e – Низкоуровневые требования соответствуют стандартам
DO-331, Раздел MB.6.3.1.b - Требования высокого уровня точны и сопоставимы
DO-331, Раздел MB.6.3.2.b - Низкоуровневые требования точны и сопоставимы
MISRA C:2012, правило 14.2
MISRA C:2012, правило 16.4
MISRA C:2012, Dir 4.1
hisl_0006: Использование того, В то время как Итератор блокируется (Simulink)
hisl_0007: Использование Для Итератора или В то время как подсистемы Итератора (Simulink)
hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem Действия (Simulink)
ID проверки: mathworks.do178.MdlChecksum
Информация о версии модели дисплея в вашем отчете.
Эта проверка отображает следующую информацию для текущей модели:
Номер версии
Автор
Дата
Контрольная сумма модели
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Невозможно получить информацию о версии и контрольной сумме модели. | Эти сводные данные предоставлены для вашей информации. Никакое действие не требуется. |
Не работает на моделях библиотеки.
Не позволяет исключения блоков или графиков.
Отчеты для генерации кода (Simulink Coder)
Радио-Техническая Комиссия для Аэронавтики (RTCA) для получения информации о DO - 178C Факторы программного обеспечения в Бортовых Системах и Сертификации оборудования и связанных стандартах