PORT Driver — MCAL I/O Drivers 중 하나. μC의 포트·핀 구성(configuration)을 담당하며, DIO Driver / ADC Driver / ICU Driver / OCU Driver / PWM Driver 등 다른 I/O 드라이버가 동작하기 전에 가장 먼저 초기화되어야 한다. “무엇을 읽고 쓸지”가 아니라 “핀이 어떤 기능으로 동작할지”를 정하는 계층.
역할
- 각 포트·핀에 대해 기능(Pin function) 선택 — GPIO (DIO), ADC, SPI, SCI, PWM, CAN, LIN 등
- 포트·핀 속성 설정은 μC·ECU 의존 — 보드 배선과 μC 공급자에 따라 다름
- 사용하지 않는 포트·핀은 정의된 상태로 설정
- MCU 레지스터 접근은 non-interruptible atomic
Pin Configuration
기본 속성
- Pin direction (input / output)
- Pin level initial value
- Pin direction runtime 변경 가능성
- Port mode runtime 변경 가능성
Optional 속성 (HW 지원 시)
- Slew rate control — 출력 전이 속도 제어 (EMC 대책)
- Input thresholds — 입력 로직 임계 전압
- Pin driven mode — push-pull / open-drain
- Readback support — pin level(실제) vs output register value(쓴 값)
- Pull-up / Pull-down — 내부 저항 구성
DIO Driver와의 관계
DIO Driver는 PORT Driver가 이미 구성·초기화해 놓은 포트·핀 위에서 동작한다.
- PORT Driver: pin을 어떻게 쓸 것인가 (configuration)
- DIO Driver: pin 값을 읽고 쓴다 (operation)
초기화 순서: Port_Init() → Dio_WriteChannel() / Dio_ReadChannel().
Driver별 명명 단위
PORT 드라이버는 pin/port 용어를 쓰고, 나머지 I/O 드라이버는 channel / channel group / port 용어를 쓴다.
| Driver | 개별 단위 | 부분 집합 | 전체 |
|---|---|---|---|
| PORT | Port pin | — | Port |
| DIO / ADC / ICU / OCU / PWM | Channel | Channel group | Port |
MCU-specific 구현 예시
실제 μC의 PORT 설정은 memory-mapped 레지스터 조작. 예: MPC5606B의 SIUL(System Integration Unit Lite) 모듈은 Base 0xC3F9_0000에 위치하고, Pad Configuration Register (PCR0 ~ PCR148)를 통해 각 핀의 기능·방향·버퍼를 설정한다. PCR 필드에는 SMC(Safe Mode Control), APC(Analog Pad Control), PA[1:0](Pad Output Assignment — GPIO/Alt1/Alt2/Alt3), OBE(Output Buffer Enable), IBE(Input Buffer Enable) 등이 있다. PORT 드라이버는 이런 벤더 고유 레지스터 세부를 감추고 상위에 균일한 API를 제공한다.