2014-12-03 1 views
0

기본 질문이 있습니다. 죄송합니다. 매우 어리 석고 일반적 일지 모르지만 Google 지식에 매우 중요합니다. 병렬 (AND) 상태에 대해 C/C++ 생성 코드가 어떻게 구현됩니까? 멀티 스레드 접근 방식을 사용하여 구현합니까?Simulink 병렬 (AND) 상태에 대한 C/C++ 코드 생성

나는이 시나리오에서 볼 수 있듯이 간단한 시나리오를위한 C 소스 코드를 생성했으며 단지 2 개의 병렬 상태만을 생성했다. 이 간단한 시나리오에서도 복잡한 코드이지만, 스레딩 기초를 전혀 볼 수 없었습니다.

enter image description here

답변

0

당신은 동시성과 병렬 처리를 혼동하고 있습니다. Simulink 용어에서 모든 병렬 상태는 단일 시간 단계에서 실행됩니다. 이것은 시뮬레이션에서는 수용 가능하지만 다중 실행 코어를 최대한 활용하고자 할 때 실시간 시스템 용 코드 생성에는 적합하지 않습니다. 이는 일반적으로 시뮬링크 블록에도 적용됩니다. 비동기 블록 (다른 샘플 속도)과 병렬 상태는 동일한 스레드에서 순차적으로 실행됩니다 (단계 기능에서). 당신이 제어 할 수있는 유일한 방법은 실행 순서입니다. 아래를 참조

http://uk.mathworks.com/help/stateflow/ug/execution-order-for-parallel-states.html

은 여기 아래 병렬 상태의 생성 된 코드이다 : 라인 (13) & 15 단계() 함수 Stateflow Model Generated Code

참고 출력은 stateflow의 순서에 따라 지정됩니다.

필요에 따라 PCT (Parallel Computing Toolbox)를 고려해보십시오.

http://uk.mathworks.com/solutions/parallel-computing/index.html

또는 대상 하드웨어에 따라 당신은 적절한 수동으로 C11 표준 : 스레드의를 사용하여 소스 코드를 작성 찾을 수 있으며 S-기능의 및/또는 레거시 코드 도구를 사용하여 시뮬레이션으로 그것을 가져 .

관련 문제