AUTOSAR Methodology : AUTOSAR에서 정의한 시스템 개발의 공통된 순서
1. Configuring the System : 시스템 설정 단계로 컴포넌트의 구성/연결 등을 정의한다. (System Description을 개발)
2. Realize Software Component : "Configuring the System" 단계에서 구성한 컴포넌트들에 대한 코드 구현 등을 진행한다.
3. Channel out ECU-specific information : 시스템 구성 정보로부터 특정 제어기 소프트웨어를 구현하기 위한 정보만을 추출한다.
4. Configuring the ECU : 제어기 관련 설정을 진행한다. (ECU Configuration Description을 개발)
5. Generate Executable Code : 제어기에서 동작하는 실행 파일을 생성한다. (컴파일 및 링크를 통해 실행 이미지를 생성)
Configuring the System : 시스템 구성 단계에서의 설계한 애플리케이션은 아래와 같은 과정으로 제어기 내에서 동작
1. 애플리케이션 개발 : 서로 연결된 컴포넌트(SW-C)의 집합을 통해 설계(제어기를 고려하지 않음)
2. VFB(Virtual Functional Bus) : 연결된 컴포넌트들이 교류하는 가상의 통신 구조(통로)
3. 제어기 할당 : 컴포넌트를 특정 제어기에 배치(제어기 고려함) --> 가상 컴포넌트 간 연결이 실제 연결로 분류 : 제어기 내의 연결 / 통신 수단(CAN/LIN 등)을 통한 제어기 간 연결
4. RTE(Real Time Environment) : 제어기 할당을 통해 분류된 연결에 대해 컴포넌트 간 또는 컴포넌트와 BSW(Basic Software)간의 구체적인(실제) 인터페이스. VFB 수준에서 설계한 컴포넌트들 및 컴포넌트 간의 관계를 제어기 상에서 동작할 수 있도록 코드화(VFB의 구현)
System Description : 소프트웨어 컴포넌트를 구성하고 설계한 정보를 담고 있는 문서
System Description 개발 단계
1. VFB level : 최상위 단계. 컴포넌트 및 컴포넌트 간의 연결을 기술(포트, 인터페이스), 컴포넌트의 통신 속성 및 서로의 관계를 표현. 구성 요소;Component, Composition, Port, Interface, Assembly/Delegation Connector
2. RTE level : 중간 단계. 컴포넌트의 행동(Internal Behavior)을 기술. 구성 요소;Runnable, Event, Access Point
3. Implementation level : 최하위 단계. Internal Behavior를 구현 (Runnable 코드 작성). 구성 요소;Code
VFB-level
Component : VFB 수준에서 시스템을 구성할 때 사용되는 중심 구성 요소. 컴포넌트 간의 상호 작용을 위해 "Port"를 소유. Port는 정확히 하나의 컴포넌트에 속하며, 컴포넌트와 다른 컴포넌트 간의 상호 작용을 하는 지점.
Component-type : 컴포넌트의 속성을 정의(예 : 특정 기능을 하는 포트를 소유)
Component-Prototype : Component-type에 대한 인스턴스 (메모리 할당)
Component-type | 설명 |
Application Software Component | 애플리케이션을 구성하는 소프트웨어 컴포넌트 AUTOSAR의 모든 통신 방법과 서비스를 사용 가능하면 ECU 하드웨어와 독립 |
Composition Software Component | SW-C간의 집합을 캡슐화 하여, 내부는 숨기고 상위 레벨의 작업 생성 |
Service Software Component | 표준화된 서비스를 표준화된 인터페이스를 통해 제공 BSW 모듈과 통신 |
Sensor-Actuator Software Component | 센서나 액츄에이터를 제어하는 소프트웨어 컴포넌트 애플리케이션 SW-C와 ECU-Abstraction(IO) 사이에서 통신 |
Parameter Software Component | 파라미터 값(고정 데이터, 상수, 변수)을 제공 고정 데이터나 캘리브레이션 데이터에 대한 접근을 허용 |
Service Proxy Software Component | 모드를 시스템 전체에 분포 모든 ECU는 이 SW-C의 인스턴스에 대한 복사본을 소유 |
ECU-Abstraction Software Component | ECU의 특정 IO 기능에 접근 Client-Server 통신의 P-Port를 제공하고, Sensor-Actuator SW-C와 통신 |
NV Block Software Component | 비휘발성 데이터에 대한 접근 비휘발성 데이터와 데이터 블록을 할당하고, NvM 모듈(BSW)과 통신 |
Composition : 다른 컴포넌트를 포함하는 컴포넌트. 컴포넌트는 Composition 내에서 Component-prototype으로 존재. Component-type에 대한 Component-prototype, Port, Connector를 소유. Composition도 Component-type이기 때문에 다른 Composition내에 Component-prototype으로 속할 수 있다. Root Composition에서 Root Composition Prototype으로 최종적으로 Prototype화
Port : 컴포넌트 간의 상호 작용(통신)을 위한 지점. P-Port와 R-Port가 있다.
Interface : Port가 제공하거나 요구하는 타입을 정의
Interface | 설명 |
Client-Server Interface | 클라이언트는 서버에게 서비스 수행을 요청하는 것으로 통신을 시작한다. (필요한 경우 파라미터를 보낸다.) 서버는 클라이언트로부터 요청을 대기하다 요청된 서비스를 수행하고, 그 결과를 클라이언트에게 응답한다. 서비스를 개시하는 방향으로 SW-C가 클라이언트인지 서버인지 결정된다. |
Sender-Receiver Interface | 컴포넌트 간 시그널(Data Element)의 송신과 수신으로 구성된다. 단방향이다. R-Port를 통해 데이터를 받고, P-Port를 통해 데이터를 보낸다. |
Mode Switch Interface | 모드 간의 전환을 통해 Runnable을 시작한다. Runnable의 시작 방법에 대해 특정 모드에서 Disable/Enable한다. 모드 매니저는 모드 스위치를 통해 모드를 조정, 모드 유저는 해당 모드를 수신한다. |
Trigger Interface | SW-C가 다른 SW-C의 실행을 작동시킨다. |
Parameter Interface | 상수 데이터, 고정 데이터, 캘리브레이션 데이터를 Component에서 사용할 수 있도록 제공한다. |
Nv Data Interface | 비휘발성 데이터에 대한 접근을 제공한다. |
Assembly Connector : 컴포넌트의 P-Port와 R-Port가 통신하기 위해 연결. 일반적으로 Assembly Connector로 연결되는 두 Port는 같은 Interface 속성을 가진다.
Delegation Connector : Composition을 구성할 때 내부의 Port를 외부에서 사용하기 위해 연결. P-Port는 P-Port와 R-Port는 R-Port와 연결
RTE-level
Runnable : 컴포넌트의 실제 구현을 구성하는 가장 작은 단위. RTE를 통해 시작되는 Instruction Sequence. 하나의 컴포넌트에 여러 Runnable 포함 가능. 간단한 알고리즘이거나 복잡한 프로그램을 실행하는 코드 단위.
Access Point : Runnable에서는 RTE가 제공하는 API를 사용하며, Runnable 내에서 사용하려는 API를 Access Point를 통해 지정한다. Access Point는 기능과 역할에 따라 다음과 같은 종류가 있다.
Access Point | API |
Data Send Point | Rte_Write_<PPortPrototype>_<DataElement> (<data>) Rte_Send_<PPortPrototype>_<DataElement> (<data>) |
Data Receive Point By Argument | Rte_Read_<RPortPrototype>_<DataElement> (<data>) Rte_Receive_<RPortPrototype>_<DataElement> (<data>) |
Data Receive Point By Values | data = Rte_DRead_<RPortPrototype>_<DataElement> () |
Synchronous Server Call Point | Rte_Call_<RPortPrototype>_<Operation> (<data>…<data>) |
Asynchronous Server Call Point | Rte_Call_<RPortPrototype>_<Operation> (<data>…<data>) |
Asynchronous Server Call Result Point | Rte_Result_<RPortPrototype>_<Operation> (<data>…<data>) |
Mode Switch Point | Rte_Switch_<PPortPrototype>_<ModeDeclarationGroup> (<mode>) |
Mode Access Point | mode = Rte_Mode_<P/RPortPrototype>_<ModeDeclarationGroup> () |
Data Write Access | Rte_IWrite_<RunnableEntity>_<PPortPrototype>_<DataElement> (data) |
Data Read Access | Rte_IRead_<RunnableEntity>_<PPortPrototype>_<DataElement> () |
Internal Triggering Point | Rte_IrTrigger_<RunnableEntity>_<InternalTriggeringPoint> () |
External Triggering Point | Rte_Trigger_<PPortPrototype>_<Trigger> () |
Implementation-level
코드 개발 : Runnable 코드를 개발하는 단계로 코드 구현 시 다음과 같은 규칙으로 작성한다.
#include "Rte_<Swc>.h" //Include Header File
void run_1(void) // Runnable Body
{
Rte_Write_<PPortPrototype>_<DataElement>(<data>); // RTE API
…
}
ECU Configuration Description : 제어기에 대한 설정 정보를 담고 있는 문서
RTE ECU Configuration Description : ECU Configuration Description 중 하나로 소프트웨어 컴포넌트가 제어기에서 동작할 수 있도록 RTE가 코드 생성을 위해 필요한 제어기 관련 설정을 담고 있는 문서
RTE ECU Configuration Description의 주요 구성 요소 : RteSwComponentInstance, Rte EventToTaskMapping
RteSwComponentInstance : 제어기에 할당된 컴포넌트에 대해 제어기 관련 설정을 하기 위해 해당 컴포넌트를 명시화
RteEventToTaskMapping : Runnable을 실행하는 Event에 대해 RTE가 실제 코드 구현을 할 수 있도록 자원을 할당. RTE가 Task 코드 안에 Runnable 호출 코드를 배치하기 위해 Runnable이 실행될 OsTask, OsAlarm 등을 할당
[공부] stateflow 3. chart 만들기 (2) | 2024.01.02 |
---|---|
[공부] Stateflow 2. 상태 머신 (0) | 2023.12.30 |
[공부] AUTOSAR (0) | 2023.12.19 |
[공부] state flow 교육 과정개요 (0) | 2023.12.18 |
[공부]리튬이온전지 기술 (0) | 2023.07.23 |