Ассоциация Надежности Motor Industry Software (MISRA®) [1] установила “Инструкции для Использования языка C в Критических Системах” (MISRA C®). Когда вы генерируете код из кода MATLAB®, если у вас есть Embedded Coder®, можно сконфигурировать определенные параметры генерации кода, чтобы увеличить вероятность генерации C и Кода С++, которые выполняют MISRA C:2012 и MISRA C ++:2008 инструкций.
Следующее описывает отдельную командную строку и рабочие процессы приложения.
Создайте объект настройки генерации кода Embedded Coder.
cfg = coder.config('lib', 'ecoder', true);
Установите свойства, перечисленные в таблице на значения для улучшенной податливости MISRA.
Свойство | Значение для улучшенной податливости MISRA |
---|---|
CastingMode | 'Standards' |
CppNamespace | Любое допустимое пространство имен называет для C++ |
DataTypeReplacement | 'CoderTypedefs' |
DynamicMemoryAllocation | 'Off' |
EnableRuntimeRecursion | false |
EnableSignedLeftShifts | false |
EnableSignedRightShifts | false |
GenerateDefaultInSwitch | true |
ParenthesesLevel | 'Maximum' |
TargetLangStandard
| 'C99 (ISO)' для C, 'C++03 (ISO)' для C++ |
Чтобы установить эти свойства за один шаг, используйте coder.setupMISRAConfig
.
coder.setupMISRAConfig(cfg);
В качестве альтернативы установите свойства индивидуально. Например:
cfg.CastingMode = 'Standards';
Если CppNamespace
свойство сброшено, и TargetLang
свойством является 'C++'
, затем coder.setupMISRAConfig
устанавливает CppNamespace
свойство к вектору символов по умолчанию, 'Codegen'
. Измените это значение к имени пространства имен, которое конкретно к вашему проекту.
Передайте объект настройки codegen
при помощи -config
опция.
codegen myFunction -config cfg ...
На странице Generate Code, набор Build type к Source Code
, Static Library
, Dynamic Library
, или Executable
.
Нажмите More Settings.
Нажмите MISRA Compliance.
Отображения приложения настройки, которые могут повлиять на податливость MISRA.
Чтобы установить все эти настройки к рекомендуемым значениям, нажмите Set to Recommended Values.
Чтобы изменить отдельную установку, нажмите All Settings, и затем ищите установку.
По умолчанию Код С++, который вы генерируете, использует пользовательское определение типа в bool
максимизировать совместимость с определенными предварительно скомпилированными библиотеками. Это пользовательское определение типа может вызвать нарушения для MISRA C ++:2008 Правил 5-0-13 и Правило 5-3-1.
Использовать встроенный bool
введите в сгенерированном Коде С++, и избегайте этих нарушений, измените настройки Hardware Board в объекте настройки от MATLAB Host Computer
. Чтобы видеть, как изменить эти настройки в Приложении, смотрите Access Hardware Implementation Properties с Диалоговым окном (MATLAB Coder). Например, для генерации кода и основываются на 64-битной платформе Windows®, изменяют Hardware Board в None - Select device below
, и затем набор Device vendor к Intel
и Device type к x86-64 (Windows64)
.
coder.EmbeddedCodeConfig
| coder.setupMISRAConfig
[1] MISRA и MISRA C являются зарегистрированными торговыми марками HORIBA MIRA Ltd., сохраненной от имени Консорциума MISRA.