3.2.6. Ecu Abstraction SW-C 설계

Table of contents

위에서 설계한 부분은 AUTOSAR Architectural Layer 중 Application Sw Layer만 다루었다. 이 장에서는 ACU시스템에 하드웨어 입/출력의 Raw Value를 처리하는 EcuAbs 컴포넌트가 존재한다고 가정하여 EcuAbstraction Layer에 설계를 추가한다.

EcuAbstraction Layer는 ASW와 Layer는 다르지만 설계 모델 상에서 동일한 컴포넌트 개념으로 설계한다. ASW컴포넌트 설계에 새로운 컴포넌트를 추가하는 것과 같은 순서로 진행한다.


6.1. IoHwAbstractionSwConponent 설계

  • LayeredArchitecturePkg에 아래 표를 참고하여 3개의 하드웨어 컨트롤 컴포넌트를 추가한다. (”MainSensorController”, “SafingSensorController”, “DriverAirbagController”)
  • UCR VOPC 다이어그램에 IoHwAbs 컴포넌트를 추가한다.

💡

VOPC다이어그램에서 블록의 크기를 조절할 때 내부 요소까지 의도치 않게 크기가 변하게 된다. [Alt + 드래그]하면 선택한 블록만 크기를 변경할 수 있다.


6.2. Port/Interface 정의

  • 아래 표를 참고하여 Interface를 설계한다. 이 시스템에서 IoHwAbs 컴포넌트의 실행 시점은 ASW의 컴포넌트에서 Rte_Call을 통하기로 한다. 따라서 모두 ClientServer Interface로 설계한다.
  • IMainSensorControl → getSensorData(uint8 sensorData), Direction: Out
  • ISafingSensorControl → getSensorData(uint8 sensorData), Direction: Out
  • IDriverAirbagCurrent → inflateAirbag(uint8 current) , Direction: In

💡

Argument Direction Enum은 함수의 인자 포인터를 이용해 변수값을 주고받는 AUTOSAR 설계 규칙과 관련 있다. Argument 설계 시 direction을 Out으로 설정하면 Operation의 매개변수를 Output으로 사용할 수 있다.

  • Interface 추가 설계 완료

6.3. VOPC 다이어그램 작성 - Interface 반영

VOPC 다이어그램에 추가 설계한 인터페이스를 반영한다. ASW(Client)의 요청에 의해 센서작동/에어백구동을 수행하는 Server로 설계하기로 한다.


6.4. Internal Behavior 업데이트

추가 설계한 IoHwAbs 컴포넌트 및 포트를 추가한 ASW 컴포넌트의 Internal Behavior를 추가한다.

  • IB 설계 / 업데이트 대상 컴포넌트
  • RapudAUTO Context Menu - Update Swc Internal Behavior 실행

💡

Design Swc IB 메뉴는 기존의 IB를 모두 지우고 재설계한다. Timing Event 까지 삭제되므로 기존 IB를 유지하고 싶다면 Update 기능을 이용한다.
Update기능은 컴포넌트에 연결된 포트 중 IB설계가 없는 것만 추가 설계된다.

  • Update Swc IB 실행 시 새로운 포트에 대한 설계는 REdefault에 생성되기 때문에 Timing Event에 옮긴 후 REdefault는 삭제한다.
  • 설계 완료된 모습(MainSensor, SafingSensor, DriverAirbag)
  • 새로 설계한 IoHwAbs Layer의 컴포넌트는 기존의 IB가 없기 때문에 Design Swc IB를 실행하여 새로 설계한다. 모두 Server 포트만 있기 때문에 별도의 Timing Event 설계는 하지 않는다.

6.5. Internal Behavior Diagram 추가 설계

  • 업데이트 된 Internal Behavior Diagram

6.6. UCR Workflow Diagram 업데이트

  • 추가 설계한 컴포넌트 Line을 다이어그램에 올려놓고, 다음과 같이 시나리오를 업데이트한다.