Ассоциация Надежности 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 с Диалоговым окном. Например, для генерации кода и основываются на 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.