Ассоциация надежности программного обеспечения для моторной промышленности (MISRA®)[1] установил «Руководство по использованию языка C в критических системах» (MISRA C®). Когда вы генерируете код из MATLAB® код, если у вас есть Embedded Coder®можно сконфигурировать некоторые параметры генерации кода, чтобы увеличить вероятность генерации кода C и C++, которые соответствуют C:2012 MISRA и рекомендациям 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 свойство unset, и 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. Чтобы увидеть, как изменить эту настройку в приложении, смотрите Свойства аппаратной реализации доступа с помощью диалогового окна. Например, для генерации кода и сборки на 64-разрядной Windows® platform, смените 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.