그라운드 임베디드 유튜브 구독

노트 / 펌웨어 설계와 품질

계층 구조: 위는 아래만 부른다

HAL, 드라이버, 서비스, 애플리케이션으로 나누고 의존 방향을 한쪽으로 정합니다. 칩이 바뀌어도 위쪽 코드가 살아남는 구조.

GROUND EMBEDDED · 정리 노트설계·품질 01계층 구조계층하는 일예애플리케이션제품의 동작 규칙밸런싱 상태 머신, 모드…서비스재사용 가능한 기능PID, 필터, 프로토콜…
계층 하는 일 예
애플리케이션 제품의 동작 규칙 밸런싱 상태 머신, 모드 전환
서비스 재사용 가능한 기능 PID, 필터, 프로토콜 파서, 로그
디바이스 드라이버 외부 칩 하나를 다룸 MPU6050, HC-05, 모터 드라이버
HAL / MCAL MCU 주변장치 GPIO, I2C, 타이머, ADC

규칙

  • 위는 아래를 부르고, 아래는 위를 모른다. 드라이버가 애플리케이션 함수를 직접 부르면 안 됩니다. 아래에서 위로 알릴 일은 콜백이나 이벤트로 합니다.
  • 같은 계층끼리의 호출도 최소화합니다.
  • 애플리케이션에는 레지스터 이름, 핀 번호가 나오면 안 됩니다.

얻는 것

  • MCU를 STM32F4에서 G4로 바꿔도 HAL만 고치면 됩니다.
  • 서비스와 애플리케이션 계층은 하드웨어 없이 PC에서 테스트할 수 있습니다.
  • 여러 사람이 계층별로 나눠 작업할 수 있습니다.

자동차 소프트웨어와의 연결

AUTOSAR의 MCAL, ECU 추상화, 서비스, RTE, SWC 구조가 바로 이 생각을 표준으로 정한 것입니다. BSW와 ASW를 나누는 것도 같은 원리입니다.