Ассоциация по надежности программного обеспечения автомобильной промышленности (MISRA ®) [1] разработала «Руководство по использованию языка C в критических системах» (MISRA C ®). При создании кода из кода MATLAB ®, если имеется Embedded Coder ®, можно настроить определенные параметры генерации кода для увеличения вероятности генерации кода C и 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 ...
На странице «Создание кода» задайте для параметра «Тип построения» значение Source Code, Static Library, Dynamic Library, или Executable.
Щелкните Дополнительные параметры.
Щелкните MISRA Compliance (Соответствие требованиям MISRA).
Приложение отображает параметры, которые могут повлиять на соответствие MISRA.
Чтобы задать для всех этих параметров рекомендуемые значения, нажмите кнопку Задать рекомендуемые значения.
Чтобы изменить отдельный параметр, нажмите кнопку «» Все параметры «» и выполните поиск параметра.
По умолчанию создаваемый код C++ использует пользовательское определение типа для bool максимизация совместимости с определенными предварительно скомпилированными библиотеками. Это пользовательское определение типа может вызвать нарушения для MISRA C++: 2008 Rule 5-0-13 и Rule 5-3-1.
Использование встроенного модуля bool введите сгенерированный код C++ и во избежание этих нарушений измените настройку платы аппаратных средств в объекте конфигурации с MATLAB Host Computer. Сведения об изменении этого параметра в приложении см. в разделе Свойства реализации оборудования Access с диалоговым окном. Например, для создания кода и сборки на 64-разрядной платформе Windows ® измените аппаратную плату наNone - Select device below, а затем установите для параметра Поставщик устройства значение Intel и тип устройства для x86-64 (Windows64).
coder.EmbeddedCodeConfig | coder.setupMISRAConfig
[1] MISRA и MISRA C являются зарегистрированными товарными знаками HORIBA MIRA Ltd., принадлежащими Консорциуму MISRA.