노트 / 펌웨어 설계와 품질
계층 구조: 위는 아래만 부른다
HAL, 드라이버, 서비스, 애플리케이션으로 나누고 의존 방향을 한쪽으로 정합니다. 칩이 바뀌어도 위쪽 코드가 살아남는 구조.
| 계층 | 하는 일 | 예 |
|---|---|---|
| 애플리케이션 | 제품의 동작 규칙 | 밸런싱 상태 머신, 모드 전환 |
| 서비스 | 재사용 가능한 기능 | PID, 필터, 프로토콜 파서, 로그 |
| 디바이스 드라이버 | 외부 칩 하나를 다룸 | MPU6050, HC-05, 모터 드라이버 |
| HAL / MCAL | MCU 주변장치 | GPIO, I2C, 타이머, ADC |
규칙
- 위는 아래를 부르고, 아래는 위를 모른다. 드라이버가 애플리케이션 함수를 직접 부르면 안 됩니다. 아래에서 위로 알릴 일은 콜백이나 이벤트로 합니다.
- 같은 계층끼리의 호출도 최소화합니다.
- 애플리케이션에는 레지스터 이름, 핀 번호가 나오면 안 됩니다.
얻는 것
- MCU를 STM32F4에서 G4로 바꿔도 HAL만 고치면 됩니다.
- 서비스와 애플리케이션 계층은 하드웨어 없이 PC에서 테스트할 수 있습니다.
- 여러 사람이 계층별로 나눠 작업할 수 있습니다.
자동차 소프트웨어와의 연결
AUTOSAR의 MCAL, ECU 추상화, 서비스, RTE, SWC 구조가 바로 이 생각을 표준으로 정한 것입니다. BSW와 ASW를 나누는 것도 같은 원리입니다.