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 SimulinkGlobal storage class (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр ForceParamTrailComments на on . |
Опция, чтобы включать описания требования, присвоенные блокам Simulink как комментарии, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. (См. DO-331, Раздел MB.6.3.4.e – Исходный код прослеживаем к низкоуровневым требованиям.) | Выберите Requirements in block comments (Simulink 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 (Simulink 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 (Simulink 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 (Simulink Coder) в диалоговом окне Configuration Parameters или установите параметр SupportNonInlinedSFcns на off . |
Опция, чтобы сгенерировать образцовые вызовы функции, совместимые с основным программным модулем цели pre-R2012a GRT, выбрана. Эта опция является несоответствующей для связанных с безопасностью систем в реальном времени. (См. DO-331, Раздел MB.6.3.1.c – Требования высокого уровня совместимы с целевым компьютером и DO-331, Раздел MB.6.3.2.c – Низкоуровневые требования совместимы с целевым компьютером.) | Очистите Classic call call interface (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр GRTInterface на off . |
Опция, чтобы сгенерировать функцию | Выберите Single output/update function (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр CombineOutputUpdateFcns на on . |
Опция, чтобы сгенерировать функцию | Очистите Terminate function (Simulink 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 (Simulink 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 (Simulink Coder) на Code Generation> панель Symbols в диалоговом окне 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
Идентифицируйте использование блоков Математической операции, которые могут повлиять на безопасность.
Эта проверка осматривает использование следующих блоков:
Abs
Усиление
Математическая функция
Натуральный логарифм
Распространенный (базируются 10), логарифм
Остаток после деления
Обратная величина
“()” Присвоение
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок Absolute Value, который работает с одним из следующего:
|
Если идентифицированный блок Absolute Value работает с булевым или типом данных без знака, выполнить одно из следующих действий:
Если идентифицированный блок Absolute Value работает с типом данных со знаком в диалоговом окне Block Parameters > Signal Attributes, выберите Saturate on integer overflow. |
Модель или подсистема содержат блоки Усиления со значения 1 или единичная матрица. | Если вы используете блоки Усиления в качестве буферов, рассматриваете заменяющий их на блоки Преобразования Сигнала. |
Модель или подсистема содержат Математическую функцию - Натуральный логарифм блоки (log) , которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с функцией |
Модель или подсистема содержат Математическую функцию - Распространенный (базируйтесь 10), блоки (base 10 logarithm) , которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с функцией |
Модель или подсистема содержат Математическую функцию - Остаток после division(rem) блоки, которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с функцией |
Модель или подсистема содержат Математическую функцию - Обратная величина блоки (reciprocal) , которые могут привести к неличным выходным сигналам. Неличные сигналы не поддержаны в режиме реального времени встраиваемые системы. |
При использовании блока Math Function с функцией |
Модель или подсистема могут содержать блоки Присвоения с неполной инициализацией массивов, которые не имеют параметров блоков набором 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
Идентифицируйте использование Логического оператора и блоков Битовых операций, которые могут повлиять на безопасность.
Эта проверка осматривает использование:
Блоки, которые вычисляют операторы отношения, включая Оператор отношения, Выдерживают сравнение С Постоянным, Выдерживают сравнение С Нулем, Обнаруживают Изменение, и Если блоки
Блоки Логического оператора
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок, вычисляя оператор отношения, который работает с различными типами данных. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для идентифицированных блоков используйте типы общих данных в качестве входных параметров. Можно использовать блоки Преобразования типа данных, чтобы изменить типы входных данных. |
Модель или подсистема содержат блок, вычисляя оператор отношения, который не имеет булева вывода. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для заданных блоков, на Параметрах блоков> панель Атрибутов Сигнала, устанавливает 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
Идентифицируйте использование Портов и блоков Подсистем, которые могут повлиять на безопасность.
Эта проверка осматривает использование этих блоков:
Для итератора
В то время как итератор
Если
Переключите случай
Проверка не делает блоков флага Switch Case, которые не используют целочисленные типы данных или перечислимые величины для входных параметров. Выполнить hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem Действия (Simulink) – C, используйте целочисленный тип данных или перечислимую величину для входных параметров, чтобы Переключить блоки Случая.
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок For Iterator, который имеет переменные итерации. Это условие может привести к непредсказуемым временам выполнения или бесконечным циклам в сгенерированном коде. |
Для идентифицированного Для блоков Итератора выполнить одно из следующих действий:
|
Модель или подсистема содержат некоторое время блок Iterator, который имеет неограниченные итерации. Это условие может привести к бесконечным циклам в сгенерированном коде. |
Для идентифицированного, В то время как Итератор блокируется:
|
Модель или подсистема содержат, Если блок с, Если выражение или выражения Elseif, которые могут вызвать сравнения равенства или неравенства с плавающей точкой в сгенерированном коде. | Измените выражения в Если блок, чтобы избежать сравнений равенства или неравенства с плавающей точкой в сгенерированном коде. |
Модель или подсистема Еще содержат Если использование блока выражения Elseif без условие. | В, Если диалоговое окно блока Block Parameters, выберите Show else condition. Еще соедините получившееся выходной порт к Если блок Subsystem Действия. |
Модель или подсистема содержат, Если блок с выходными портами, которые не соединяются с Если блоки Subsystem Действия. | Проверьте что выходные порты Если блок connect к Если блоки Subsystem Действия. |
Модель или подсистема содержат блок Switch Case без случая по умолчанию. | В диалоговом окне Block Parameters блока Switch Case выберите Show default case. Соедините получившийся выходной порт по умолчанию с блоком Subsystem Действия Случая Переключателя. |
Модель или подсистема содержат блок Switch Case с выходным портом, который не соединяется с блоком Subsystem Действия Случая Переключателя. | Проверьте, что выходные порты блоков Случая Переключателя соединяются с блоками Subsystem Действия Случая Переключателя. |
Модель или подсистема содержат один из следующих зависящих от времени блоков в Для Итератора или В то время как подсистема Итератора:
| В модели или подсистеме, рассмотрите удаление зависящих от времени блоков. |
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
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 Факторы программного обеспечения в Бортовых Системах и Сертификации оборудования и связанных стандартах