Ассоциация надежности программного обеспечения для моторной промышленности (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.