AUTOSAR 기반 개발에서 하드웨어를 제어하는 순간 반드시 마주치는 파일이 Ecud_IoHwAb.arxml이다.
특히 Mobilgene 환경에서는 모터, 센서, 디지털 출력 등 대부분의 I/O 제어가 이 설정을 통해 이루어지기 때문에 단순한 설정 파일이 아니라 시스템 동작을 좌우하는 핵심 요소라고 보는 것이 맞다. 실제로 프로젝트에서 IoHwAb 설정이 잘못되면 코드상 문제는 없어 보이는데도 하드웨어가 전혀 반응하지 않는 상황이 자주 발생한다.
이번 글에서는 Ecud_IoHwAb.arxml이 어떤 역할을 하는지, 내부 구조는 어떻게 되어 있는지,
그리고 실무에서 어떤 부분을 주의해야 하는지까지 정리한다.
1. IoHwAb란 무엇인가
IoHwAb는 I/O Hardware Abstraction의 약자다.
하드웨어 제어를 직접 수행하는 MCAL과 Application 사이에 위치하는 중간 계층이다.
Application (SWC)
↓
RTE
↓
IoHwAb
↓
MCAL (Dio, Adc, Pwm, Port 등)
↓
Hardware
Application(SWC)은 하드웨어를 직접 제어하지 않고 RTE를 통해 IoHwAb API를 호출하고,
IoHwAb는 이를 MCAL(Dio, Adc, Pwm 등)로 전달하여 실제 하드웨어를 제어한다.
이 구조의 핵심은 하드웨어 의존성을 분리하는 데 있다.
Application 입장에서는 특정 MCU나 핀 구조를 알 필요 없이 동일한 API만 사용하면 되고,
하드웨어가 변경되더라도 IoHwAb 설정만 수정하면 된다.
결국 Ecud_IoHwAb.arxml은 이 연결 구조를 정의하는 파일이라고 보면 된다.
2. Ecud_IoHwAb.arxml의 역할
Ecud_IoHwAb.arxml은 IoHwAb 모듈의 설정(Config)을 정의하는 ECU Configuration 파일이다.
이 파일은 IoHwAb 모듈의 모든 설정 정보를 담고 있다.
어떤 하드웨어 리소스를 사용할지, MCAL의 어떤 채널과 연결할지, 그리고 어떤 방식으로 접근할지를 정의한다.
단순히 옵션을 켜고 끄는 수준이 아니라, 실제 실행 경로와 데이터 흐름을 결정하는 설정이다.
특히 중요한 점은 IoHwAb 설정이 곧 RTE 코드 생성 결과에 영향을 준다는 것이다.
즉, 이 설정이 잘못되면 Rte_Read, Rte_Write 같은 API가 정상적으로 생성되지 않거나 의도와 다른 동작을 하게 된다.
3. IoHwAbGeneral 구조
IoHwAbGeneral은 IoHwAb의 공통적인 설정을 정의하는 영역이다.
여기에는 Port Pin, ADC, 그리고 Symbolic Name과 같은 기본 요소들이 포함된다.

3.1 IoHwAbPortPinChs
Port Pin 설정은 IoHwAb가 사용할 실제 물리 핀을 정의하는 부분이다.
이 설정이 빠지거나 잘못되면 이후 Digital이나 PWM 설정을 하더라도 실제 하드웨어와 연결되지 않는다.
즉, 논리적으로는 동작하지만 물리적으로는 아무 반응이 없는 상태가 된다.

IoHwAbPortPinChs > Port Pin Ch 에서는 각 Pin 단위로 IoHwAb와 MCAL을 연결하기 위한 핵심 속성 4가지를 설정하게 된다. 이 설정은 단순 입력값이 아니라, 이후 Digital/PWM 제어가 실제 하드웨어로 이어지는 기준이 되기 때문에 의미를 정확히 알고 넣어야 한다.
- Short Name: 해당 Port Pin을 식별하기 위한 논리 이름이다.
이 값은 이후 IoHwAb 설정에서 참조될 수 있기 때문에, 단순 이름이 아니라 “역할 중심”으로 정의하는 것이 중요하다.
- Polarity: 해당 핀의 논리 레벨 해석 방식을 정의한다.
즉, High/Low가 실제로 어떤 의미를 가지는지를 결정하는 설정이다. 이 설정은 하드웨어 회로와 반드시 일치해야 한다.
- HighActive: High 출력 시 동작 (일반적인 경우)
- LowActive: Low 출력 시 동작
- Hw Dio Ch Ref: 해당 Port Pin이 연결될 Dio 채널을 참조하는 설정이다.
즉, IoHwAb → Dio Driver로 이어지는 연결 고리 역할을 한다.
여기서 중요한 점은 Port Pin과 Dio Channel이 동일한 물리 핀을 바라봐야 한다는 것이다.
만약 서로 다른 핀을 참조하면 Read 값은 정상인데, 실제 출력은 다른 핀에서 발생하는 이상한 상황이 생긴다.
- Hw Port Pin Ref: 실제 MCU의 물리 Port Pin을 참조하는 설정이다.
즉, 최종적으로 하드웨어와 연결되는 지점이다.
이 설정이 실제 하드웨어 핀과 1:1로 매칭되기 때문에, 회로도와 반드시 일치해야 한다.
3.2 IoHwAbAdcSetting
ADC 설정은 아날로그 입력을 사용할 때 필요한 채널 및 동작 방식을 정의한다.
센서 값을 다루는 경우 이 설정이 기반이 되기 때문에 정확한 채널 매핑이 중요하다.

IoHwAbAdcGroups > Adc Group 설정
이 영역은 실제 기능에서 사용할 ADC Group을 정의하는 곳이다.

- Short Name: 해당 ADC Group의 논리 이름이다. 단순 이름이 아니라 어떤 값을 읽는지 알 수 있게 작성하는 것이 좋다.
- Hw Adc Group Ref: MCAL의 Adc Group을 참조하는 설정이다.
즉, IoHwAb가 어떤 ADC 그룹을 사용할지 연결하는 부분이며, Ecud_Adc.arxml에 정의된 Group과 반드시 일치해야 한다.
IoHwAbAdcAllGroups > Adc Group in All 설정
이 영역은 전체 ADC Group을 관리하기 위한 설정이다.

- Short Name: 전체 그룹 내에서 구분하기 위한 이름이다.
IoHwAbAdcGroups처럼 기능 중심이라기보다 관리용 식별자에 가깝다.
- Hw Adc Group Ref: 동일하게 MCAL의 Adc Group을 참조하며, 이 그룹을 “전체 관리 대상”에 포함시키는 역할을 한다.
핵심 차이
IoHwAbAdcGroups는 실제 기능에서 사용하는 ADC Group이고,
IoHwAbAdcAllGroups는 전체 초기화나 일괄 제어를 위한 Group 리스트다.
실무에서는 같은 Group을 두 곳 모두에 설정하는 경우가 많지만, 의미는 “사용”과 “관리”로 구분된다고 보면 된다.
3.3 IoHwAbSymbolicNameConfig
Symbolic Name 설정은 코드에서 사용할 이름을 정의하는 부분이다.
이 설정이 있어야 RTE 코드에서 해당 리소스를 참조할 수 있다.

이 부분은 IoHwAb에서 코드에 생성될 Symbolic Name 규칙을 정의하는 설정이다.
즉, RTE나 IoHwAb API에서 사용할 이름이 어떤 형태로 만들어질지를 결정한다.
IoHwAbSymbolicNameConfig > Type Config
이 영역은 IoHwAb에서 생성되는 Symbolic Name의 규칙을 정의하는 곳이다.
여기서는 Dio, Adc, Pwm, Gpt, Icu, Port 같은 타입별로 각각 Symbolic Name 생성 규칙을 따로 설정할 수 있다.

- Type Selection: 해당 타입에 대해 어떤 Symbolic Name을 사용할지 여부를 결정한다. (선택 옵션임)
- Type Prefix: 이름 앞에 붙는 문자열이다. 보통 IoHwAb_처럼 모듈 구분을 위해 사용한다.
- Type Infix: 이름 중간에 들어가는 값이며, 선택 옵션이다.
다음 중 하나를 선택할 수 있다.
- Definition: 타입 정의 이름 기준으로 생성 (예: Dio, Adc 등)
- ShortName: 설정된 Short Name 기반으로 생성
- None: 중간 문자열 없이 생성
- Type Postfix: 이름 뒤에 붙는 값이며, 선택 옵션이다.
다음 중 하나를 선택할 수 있다.
- ShortName: Short Name을 뒤에 추가
- SymbolicName: 내부 Symbolic Name 기준으로 추가
결국 Symbolic Name은 설정에 따라
Prefix + (Infix) + ShortName + (Postfix) 형태로 생성된다.
정리
IoHwAbGeneral은 IoHwAb 설정의 출발점이다.
이 단계에서 하드웨어 연결, ADC 구조, 그리고 코드에서 사용할 이름 규칙이 모두 결정된다.
Port Pin 설정에서는 어떤 핀을 어떤 방식으로 제어할지 정의하고,
ADC 설정에서는 데이터를 채널이 아닌 Group 단위로 어떻게 사용할지 구성한다.
그리고 Symbolic Name 설정을 통해 RTE 및 IoHwAb API에서 사용할 코드 인터페이스 이름 규칙이 만들어진다.
결국 IoHwAbGeneral은 “하드웨어를 어떻게 연결하고, 어떤 구조로 사용할지”를 정의하는 영역이다.
이 기반 설정이 정확해야 이후 IoHwAbConfig에서 정의하는 Digital, PWM, ADC 등의 기능이 정상적으로 동작한다.
다음 글에서는 IoHwAbConfig 영역을 중심으로 작성할 예정이다.
'mobilgene > 미분류' 카테고리의 다른 글
| [Det] AUTOSAR Det(Development Error Tracer)란 무엇인가? (0) | 2026.05.25 |
|---|---|
| [WdgM] Watchdog Manager란? Mobilgene에서 WdgM 설정 구조 이해하기 (0) | 2026.05.15 |
| [IoHwAb] SWC에서 IoHwAb Analog Input을 읽는 과정 (Rte_Call 기반 실무 흐름) (0) | 2026.05.01 |
| [IoHwAb] AUTOSAR IoHwAb 완전 정리 2편 – IoHwAbConfig 구조와 실무 설정 (0) | 2026.04.30 |
| [EcuC] AUTOSAR EcuC 모듈 이해 – 구조부터 EcuPartition 실무 설정까지 (0) | 2026.04.29 |