이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
개선된 MISRA 및 AUTOSAR 준수 기능을 갖춘 C/C++ 코드 생성
MISRA™(Motor Industry Software Reliability Association)1 “중요 시스템에서의 C 언어 사용 지침”(MISRA C™)과 “중요 시스템에서의 C++ 언어 사용 지침”을 제정했다. AUTomotive Open System ARchitecture(AUTOSAR) 개발 파트너십은 "Guidelines for the Use of the C++14 Language in Critical and Safety-Related Systems"도 제정했습니다. MATLAB® 코드베이스용 C 또는 C++ 코드를 생성할 때, 코드 생성기를 구성하여 이러한 코딩 규칙의 상당 부분을 준수하는 코드를 생성하도록 할 수 있습니다.
코드 생성 지원 범위
MATLAB 코드에서 C 또는 C++ 코드를 생성할 때, 생성된 코드가 MISRA C:2012, MISRA C:2023, MISRA C++:2008 및 AUTOSAR C++14 지침을 최대한 준수하도록 코드 생성기를 구성할 수 있습니다.
코드 생성의 호환성을 극대화하려면:
코드 생성 구성 속성을 권장 값으로 설정하십시오. 이 작업은 명령줄에서 또는 MATLAB Coder™ 앱에서 수행할 수 있습니다. 명령줄에서 코드 생성 구성 객체의 속성 설정 및 MATLAB Coder 앱 설정 구성 항목을 확인하십시오.
coder.ceval를 사용하여 생성된 코드와 통합하는 사용자 작성 C/C++ 파일이나 타사 C/C++ 파일은 모두 MISRA 및 AUTOSAR 지침을 준수하는지 확인하십시오.
코드 생성 과정에서 생성된 코드에는 MISRA 및 AUTOSAR 지침을 준수하지 않는 다음 파일 중 하나 이상이 포함될 수 있습니다:
coder_posix_time.hcoder_posix_time.crt_defines.hrt_nonfinite.hrtGetInf.hrtGetNaN.hrtwhalf.hrtwhalf.crtwhalf.cpprtwtypes.h
특정 상황에서는 코드 생성을 구성하여, 생성된 코드에서 rtwtypes.h 파일에 포함된 사용자 지정 유형 정의가 사용되지 않도록 할 수 있습니다. 예를 들어, MISRA C++ 호환성을 위한 추가 설정 항목을 참고하십시오.
이 코드 생성기는 MISRA 및 AUTOSAR 지침에 명시된 필수 및 의무 코딩 규칙의 상당 부분을 지원합니다. 전체 목록을 보려면 다음 항목을 참조하십시오:
코드 생성 기능은 이러한 규칙을 Polyspace® Bug Finder™ 제품과 동일한 방식으로 해석합니다. 코드 생성기가 특정 코딩 규칙을 어떻게 해석하는지 알아보려면, Polyspace Bug Finder 문서의 해당 참조 페이지에 있는 Polyspace 구현 섹션을 참조하십시오:
MISRA C:2012 Directives and Rules (Polyspace Bug Finder)
MISRA C:2023 Directives and Rules (Polyspace Bug Finder)
MISRA C++:2008 Rules (Polyspace Bug Finder)
AUTOSAR C++14 Rules (Polyspace Bug Finder)
명령줄에서 코드 생성 구성 객체의 속성 설정
Embedded Coder® 코드 생성 구성 객체를 생성합니다.
cfg = coder.config('lib','ecoder',true);
coder.setupMISRAConfig함수를 사용하여 MISRA 규격 준수를 개선하려면 다음 테이블에 나와 있는 속성을 해당 값으로 설정하십시오.coder.setupMISRAConfig(cfg);
속성 MISRA 준수 개선을 위한 값 CastingMode'Standards'CppGenerateEnumClass(타깃 언어가 C++인 경우)trueCppInterfaceClassName(타깃 언어가 C++인 경우)''CppInterfaceStyle(타깃 언어가 C++인 경우)'Functions'CppNamespace(타깃 언어가 C++인 경우)C++에서 유효한 네임스페이스 이름
DataTypeReplacement'CoderTypedefs'EnableDynamicMemoryAllocationfalseEnableOpenMPfalseEnableRuntimeRecursionfalseEnableSignedLeftShiftsfalseEnableSignedRightShiftsfalseGenerateDefaultInSwitchtrueHeaderGuardStyle'UseIncludeGuard'JustifyMISRAViolationstrueMaxIdLength(타깃 언어가 C인 경우)31ParenthesesLevel'Maximum'RuntimeChecksfalseTargetLangStandardC의 경우 'C99 (ISO)', C++의 경우'C++11 (ISO)'참고
GenerateComments를true로 설정해야만 MISRA를 추가하고JustifyMISRAViolations를 사용하여 AUTOSAR 어노테이션을 추가할 수 있습니다.coder.setupMISRAConfig는 MISRA 준수 수준을 높이기 위해 이 테이블의 파라미터를 권장값으로 설정합니다. 이 단계에서 이러한 설정 중 일부를 재정의하고 싶다면, 해당 속성 값을 수동으로 수정할 수 있습니다.CppNamespace속성이 설정되어 있지 않고,TargetLang속성이'C++'인 경우,coder.setupMISRAConfig는CppNamespace속성을 디폴트 문자형 벡터인'Codegen'으로 설정합니다. 이 값을 해당 프로젝트에 맞는 네임스페이스 이름으로 변경하십시오.-config옵션을 사용하여 구성 객체를codegen에 전달합니다.codegen myFunction -config cfg ...
MATLAB Coder 앱 설정 구성
빌드 유형를
정적 라이브러리,동적 라이브러리또는Executable로 설정하십시오.설정을 클릭합니다.
MISRA 준수를 클릭합니다.
이 앱은 MISRA 규정 준수에 영향을 미칠 수 있는 설정들을 표시합니다.

이 모든 설정을 권장값으로 설정하려면 권장 값으로 설정를 클릭하십시오.
C++ 네임스페이스 파라미터가 설정되어 있지 않고 언어가 C++인 경우, 권장 값으로 설정 버튼을 누르면 이 파라미터가 디폴트 값인
Codegen로 설정됩니다. 이 값을 해당 프로젝트에 맞는 이름으로 변경하십시오.개별 설정을 수정하려면 구성 파라미터 대화 상자에서 해당 설정을 검색하십시오.
MISRA C++ 호환성을 위한 추가 설정
기본적으로, 코드 생성 과정에서 생성된 C++ 코드는 특정 사전 컴파일된 라이브러리와 최대한의 호환성을 보장하기 위해 bool에 대한 사용자 지정 유형 정의를 사용합니다. 이 사용자 지정 유형 정의는 MISRA C++:2008 규칙 5-0-13 및 규칙 5-3-1을 위반할 수 있습니다.
생성된 C++ 코드에서 내장된 bool 유형을 사용하고 이러한 위반 사항을 방지하려면, 구성 객체에서 Hardware board 설정을 MATLAB Host Computer로 변경하십시오. 앱에서 이 설정을 변경하는 방법은 Access Hardware Implementation Properties with a Dialog Box 항목을 참조하십시오. 예를 들어, 64비트 Windows® 플랫폼에서 코드 생성과 빌드를 수행하려면 Hardware board를 None - Select device below로 변경한 다음, 장치 공급업체를 Intel로, 장치 유형를 x86-64 (Windows64)로 설정하십시오.
정적 분석 툴을 사용하여 생성된 코드의 규정 준수 여부 확인
모범 사례는 코드 생성기와는 별개로 생성된 코드의 규격 준수 여부를 검증하는 것입니다. 코드를 생성한 후에는 정적 분석 툴(예: Polyspace Bug Finder)을 사용하여 MISRA 및 AUTOSAR 코딩 표준 준수 여부를 확인하십시오.
Polyspace Bug Finder을 사용하여 C/C++ 코드의 코딩 규칙 위반 여부를 확인하는 방법은 다음을 참조하십시오:
참고 항목
coder.EmbeddedCodeConfig | coder.setupMISRAConfig
도움말 항목
- MISRA C:2012 Coding Directives and Rules Supported for Code Generation
- MISRA C:2023 Coding Directives and Rules Supported for Code Generation
- MISRA C++:2008 and AUTOSAR C++14 Coding Rules Supported for Code Generation
- Polyspace Verification of C/C++ Code Generated by MATLAB Coder
- Run Polyspace Bug Finder on Desktop (Polyspace Bug Finder)
- Generate MISRA C:2012 Compliant Code and Verify with Polyspace (Polyspace Bug Finder)
외부 웹사이트
1 MISRA and MISRA C are registered trademarks of HORIBA MIRA Ltd., held on behalf of the MISRA Consortium.