Embedded Coder

임베디드 시스템에 최적화된 C 및 C++ 코드 생성

 

Embedded Coder®는 대량 양산에 사용되는 임베디드 프로세서에 쓰이는 가독성이 높고 간결하며 빠른 C 및 C++ 코드를 생성합니다. MATLAB Coder™ 및 Simulink Coder™의 기능을 확장하여 생성된 함수, 파일, 데이터 등을 보다 정밀하게 제어하는 고급 최적화 기능을 제공합니다. 이러한 최적화 덕분에 코드 효율성이 향상되고 레거시 코드, 데이터형, 보정 파라미터와의 통합이 용이해집니다. 타사 개발 도구를 연동하여 임베디드 시스템 또는 신속 프로토타이핑 보드에서 턴키 배포를 위한 실행 파일을 빌드할 수 있습니다.

Embedded Coder는 AUTOSAR, MISRA C® 및 ASAP2 소프트웨어 표준을 지원합니다. 또한 DO-178, IEC 61508ISO 26262 소프트웨어 개발을 지원하도록 추적 리포트, 코드 기술 문서 및 자동화된 소프트웨어 검증 기능을 제공합니다. Embedded Coder로 생성된 코드는 이식 가능하고 어떤 프로세서에서도 컴파일하고 실행할 수 있습니다. 뿐만 아니라 Embedded Coder는 특정 하드웨어에 대한 고급 최적화 기능 및 디바이스 드라이버를 포함하는 지원 패키지도 제공합니다.

제어, 신호 처리, 영상 처리 및 컴퓨터 비전, 머신러닝 응용 분야에서 Embedded Coder를 사용하여 양산용 코드를 생성하는 여러 기업들의 사례를 살펴보십시오.

시작하기:

코드 생성을 위한 구성

Embedded Coder®의 코드 생성에 대한 설정을 구성하려면 MATLAB®의 경우 MATLAB Coder 앱을, Simulink의 경우 Embedded Coder Quick Start를 사용할 수 있습니다. MATLAB 명령 및 스크립트를 이용하여 각 설정을 직접 구성할 수도 있습니다.

MATLAB Coder 앱에서는 다음을 수행할 수 있습니다.

  • MATLAB 파일 및 함수에 대한 코드 생성
  • 프로세서 및 코드 생성 출력 선택
  • Embedded Coder 최적화 선택

Embedded Coder Quick Start for Simulink에서는 다음을 수행할 수 있습니다.

  • Simulink 모델 및 서브시스템에 대한 코드 생성
  • 프로세서 및 코드 생성 출력 선택
  • RAM 또는 실행 속도 최적화를 위해 Embedded Coder 선택

Simulink에서 신속한 양산용 코드 생성에 Embedded Coder Quick Start 사용

대상 선택

Embedded Coder는 구성 객체 및 시스템 대상 파일을 사용하여 MATLAB 코드 및 Simulink 모델을 양산 품질의 소스 코드 및 실행 파일로 변환합니다.

MATLAB의 경우 다음 출력 대상 중 하나를 지정할 수 있습니다.

  • MEX-파일
  • C/C++ 정적 라이브러리
  • C/C++ 실행 파일

Simulink의 경우 다음과 같이 즉시 실행 가능한 구성 중 하나를 지정합니다.

Embedded Real-Time Target — 거의 모든 양산용 프로세서에서 효율적인 실시간 실행을 위해 부동소수점 및 고정소수점 데이터로 이루어진 ANSI/ISO C, C++ 및 캡슐화된 C++ 코드를 생성합니다.

AUTOSAR TargetAUTOSAR 소프트웨어 구성요소의 개발을 지원하는 C 코드 및 런타임 인터페이스를 생성합니다(AUTOSAR Blockset 필요).

Shared Library Target — 호스트 플랫폼에서 실행할 수 있도록 코드의 공유 라이브러리 버전을 Windows® 동적 연결 라이브러리(.dll) 파일 또는 UNIX® 공유 객체(.so) 파일로 생성합니다.

또한 MathWorks 및 이외 타사에서 제공하는 MATLAB 애드온을 통해 Embedded Coder를 확장하여 ARM®, Intel®, NXP™, STMicroelectronics®, Texas Instruments™와 같은 특정 하드웨어를 지원할 수 있습니다.

하드웨어 지원 패키지를 활용하여 생성된 코드를 신속하게 임베디드 기기에 배포

사용자 정의 데이터 이용

Embedded Coder를 사용하면 생성된 코드에서 모델 데이터가 표시되는 방식을 정의하고 제어하여 소프트웨어 통합을 진행할 수 있습니다.

MATLAB 코드의 경우 Embedded Coder는 고정소수점 객체 및 사전 정의된 스토리지 클래스를 포함한 모든 MATLAB Coder 데이터 정의를 지원합니다.

Simulink 모델의 경우 Embedded Coder는 다음 데이터 사전 및 사양 기능을 지원합니다.

Embedded Coder Dictionary — 함수 인터페이스, 저장소 클래스, 메모리 섹션 등 코드 정의를 보고 사용자 정의할 수 있습니다.

Simulink 데이터 객체 — constant, volatile, exported global, imported global, define directive, structure, bit field(bit-packed 구조체 포함), get/set 액세스 메서드 등의 사전 정의된 저장소 클래스를 제공합니다.

모듈 패키징 데이터 객체 — 룩업 테이블을 보정 또는 조정하는 메모리 세그먼트와 같이 일반적으로 대량 양산에 사용되는 고급 데이터 객체에 대한 미리 구성된 특성을 제공합니다.

사용자 데이터형 — 생성된 코드에 모델 데이터가 표시되는 방식을 세밀하게 관리하고, 레거시 데이터와 연동하고, Simulink 내장 데이터형을 확장하거나 대체할 수 있도록 복잡한 데이터의 추상 데이터형을 만들 수 있습니다.

Embedded Coder를 사용하여 Simulink에서 ASAP2 형식의 데이터 교환 파일에 액세스할 수 있으며, ASAP2 표준을 사용하여 복잡한 데이터 정의를 갖는 모델 데이터를 내보낼 수 있습니다. 내장된 기본 기능을 수정하여 다른 데이터 교환 메커니즘을 만들 수도 있습니다.

Embedded Coder Dictionary를 활용하여 모델 및 데이터가 생성된 코드에 나타나는 방식을 정의하고 제어

코드 최적화 및 패키징

Embedded Coder를 사용하면 함수 경계를 제어하고 표현식을 유지하며 여러 블록에 최적화를 적용하여 코드 크기를 더 줄일 수 있습니다. 전역 변수 또는 함수 파라미터를 통해 생성된 코드의 데이터 교환이 이루어집니다. 생성된 코드를 모델의 블록 및 신호로 추적할 수 있습니다.

MATLAB 코드 및 Simulink 모델에서 코드를 생성하는 Embedded Coder 옵션을 사용하면 다음을 수행할 수 있습니다.

  • 수학 함수 및 연산자에 대한 프로세서 특정 코드 생성
  • 레거시 또는 외부 환경으로 내보낼 수 있도록 코드 재사용
  • 불필요한 초기화, 종료, 기록, 및 오류 처리 코드 제거
  • 정수 전용 응용 프로그램에서 부동소수점 코드 제거

추가적인 Embedded Coder 최적화 및 구성 옵션을 Simulink 모델에 사용하여 다음을 수행할 수 있습니다.

  • 프리프로세서의 컴파일 작업을 위한 매크로를 사용한 코드 변형 생성
  • 각 생성된 파일의 형식 제어
  • 전역 데이터의 정의 및 참조 방식 결정
  • 주석의 내용 및 위치 지정

Simulink 모델에서 SIMD 코드 생성

코드에 주석 추가하고 추적 및 문서화하기

Embedded Coder로 MATLAB 파일 및 함수, 또는 Simulink 모델 및 서브시스템에 대해 생성된 코드를 여러 방법을 통해 검토할 수 있습니다. 예로, 다음과 같은 작업을 할 수 있습니다.

  • 코드 모듈, 함수 인터페이스, 정적 코드 메트릭을 설명하는 코드 리포트 생성
  • 생성된 전역 데이터, 데이터형 및 함수에 대한 식별자 형식 제어
  • 함수 도움말 텍스트를 포함하여 MATLAB 코드를 생성 코드의 주석으로 포함

Embedded Coder를 Simulink와 함께 사용할 경우 하이 레벨 요구 사항을 요구 사항 소스에 대한 링크를 사용하여 코드 주석으로 삽입할 수 있습니다(Simulink Requirements™ 필요). Simulink 코드 생성에 대한 코드 리포트에는 코드 인터페이스 설명, 추적 리포트, 생성된 소스 파일 및 코드 표시도 있습니다. 모델과 생성된 코드 사이에 양방향 링크가 있어 코드의 각 행과 그에 대응하는 Simulink 모델 요소(서브시스템, 블록, MATLAB 함수 및 코드, Stateflow® 차트 및 전환 등)를 쉽게 탐색할 수 있습니다.

알고리즘 및 구현 사이의 양방향 추적성을 표시하는 Simulink 코드 생성 리포트

코드 실행 및 검증

Embedded Coder를 사용하면 생성된 코드를 코드 실행 환경에 통합할 수 있습니다.

MATLAB의 경우, Embedded Coder로부터 생성된 코드는 MATLAB Coder에서 제공하는 것과 동일한 실행 프레임워크를 사용하여 실행됩니다.

Simulink의 경우, Embedded Coder를 함께 사용하면 Simulink Coder가 제공하는 실시간 실행 프레임워크를 크게 확장할 수 있습니다. 기본적으로 코드는 RTOS(실시간 운영 체제) 유무와 관계없이 싱글 태스크, 멀티 태스크 또는 비동기 모드에서 실행할 수 있습니다. Embedded Coder를 사용하여 SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 테스트에 대해 코드 실행 결과를 검증할 수도 있습니다. Simulink Test™Simulink Coverage는 테스트 실행, 결과 비교 및 커버리지 분석을 자동화할 수 있게 해줍니다. 코드 실행 프로파일링 분석 역시 지원합니다.

메인 프로그램 생성

Embedded Coder는 실시간 환경에서 코드를 배포하기 위해 사용자가 제공하는 정보를 기반으로 확장 가능한 메인 프로그램을 생성합니다. 이 기능 덕분에 모델로부터 완전한 맞춤형 실행 파일을 만들어 낼 수 있습니다.

멀티레이트, 멀티태스크, 멀티코어 코드 실행

Embedded Coder는 모델에 지정된 샘플링 주기에 따라 싱글레이트 또는 멀티레이트 코드를 생성합니다. 멀티레이트인 멀티태스킹 모델의 경우 모델의 기본 레이트 작업과 각 서브 레이트 작업별로 별도의 함수를 생성하는 '레이트 그룹화'라는 전략을 채용합니다. Simulink Concurrent Execution 모델링을 사용하여 멀티코어 처리를 위한 멀티스레드 코드를 작성할 수도 있습니다.

SIL 및 PIL 테스팅 수행

Embedded Coder는 Simulink 시뮬레이션 모드나 S-function 블록을 사용하여 생성된 코드의 실행을 Simulink(SIL 테스트용)에서의 SIL 테스팅, 또는 임베디드 대상에서의 PIL 테스팅을 위해 자동화합니다. Simulink Test™는 테스트 실행 및 원래 모델과 시뮬레이션 결과의 테스트 결과 비교를 자동화할 수 있게 해줍니다. Simulink Coverage를 사용하여 또는 타사 도구와 연동하여 구조적인 코드 커버리지 분석을 수행하여 테스트의 완전성을 측정할 수 있습니다. 코드 프로파일링 분석으로 호스트 또는 대상 프로세서에서의 실행 시간을 확인할 수 있습니다.

Embedded Coder에서 생성된 코드에 대한 SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 테스트 수행

최신 기능

ARM 프로세서에 대한 FFT 코드 대체 라이브러리 지원

ARM Cortex-A 및 Cortex-M 프로세서에 대한 코드 대체 라이브러리를 사용하여 FFT(고속 푸리에 변환)를 위한 최적화된 코드 생성

감소된 데이터 사본 수

서브시스템 내에서, 그리고 모델 참조 경계에 걸쳐 큰 버스 구조를 담는 Data Store Memory 블록에 대해 더 적은 데이터 사본을 갖는 코드 생성

최적화된 다차원 배열

차원을 보존하는 다차원 배열의 버퍼를 재사용하여 메모리 사용량 감소

비트별 연산자

논리 연산자 블록에서 비트별 연산자를 생성하여 ROM 사용량 감소

멀티스레드 Image Processing Toolbox 함수

멀티스레딩 기능을 갖춘 Image Processing Toolbox 함수를 위한 코드를 생성하여 실행 속도 향상

루프에 대한 SIMD 벡터화

SIMD 내장 함수를 사용하여 Intel 및 ARM 프로세서를 위한 루프 및 배열 벡터화

XCP 및 타사 도구를 통한 보정 및 모니터링

ETAS INCA 및 Vector CANape와 같은 타사 보정 도구와 ASAM MCD-1 XCP 통신 채널을 통해 파라미터 조정 및 신호 모니터링을 지원하는 코드 생성

위 기능과 해당 함수의 자세한 내용은 릴리스 정보를 참조하십시오.

Coder Summit

현장 공학자와 개발 직원이 소프트웨어 설계, 임베디드 코드 생성 등에 대한 새로운 기능에 대해 발표합니다.