Ассоциация Надежности Motor Industry Software (MISRA®) [1] установила “Инструкции для Использования языка C в Критических Системах” (MISRA C®). Когда вы генерируете код из кода MATLAB®, если у вас есть Embedded Coder®, можно сконфигурировать определенные параметры генерации кода, чтобы увеличить вероятность генерации кода, который выполняет инструкции MISRA C:2012.
Создайте объект настройки генерации кода Embedded Coder.
cfg = coder.config('lib', 'ecoder', true);
Установите свойства, перечисленные в таблице на значения для увеличенного MISRA C соответствие.
Свойство | Значение для увеличенного MISRA C соответствие |
---|---|
CastingMode | 'Standards' |
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';
Передайте объект настройки codegen
при помощи опции -config
.
codegen myFunction -config cfg ...
На странице Generate Code, набор Build type к Source Code
, Static Library
, Dynamic Library
или Executable
.
Нажмите More Settings.
Нажмите MISRA Compliance.
Отображения приложения настройки, которые могут повлиять на MISRA C соответствие.
Чтобы установить все эти настройки к рекомендуемым значениям, нажмите 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 являются зарегистрированными торговыми марками MIRA Ltd., сохраненной от имени Консорциума MISRA.