[펌웨어분석] 15. 디바이스 드라이버 API 구조
디바이스 드라이버
- 하드웨어 장치를 제어하기 위한 소프트웨어
- 운영체제시스템에서는 운영체제에 포함되어있음
- 하드웨어를 제어하는 툴들을 그냥 디바이스 드라어바고 함.
- 리눅스나 윈도우가 같은하드웨어를 써도 각자의 드라이버를 써야함.
리눅스 커널
- 리눅스 커널 = 커널 코어 + 디바이스 드라이버
- 커널 코어 : 멀티 프로세서 제어와 같은 운영체제 본연의 역할을 하는 소프트웨어
- 디바이스 드라이버 : 하드웨어 디바이스를 직접 제어하는 소프트웨어
- 사용자영역 어플리케이션을 시스템콜이라 불리는 인터페이스로 통신함.
- 각 디바이스들을 제어하는 디바이스 드라이버가 존재함.
- 솔라리스 커널의 디바이스 드라이버의 예
- 드라이버라는 이름의 모듈로
블록 드라이버, 캐릭터 드라이버, 네트워크(NIC) 드라이버 등이 있음.
- 블록드라이버 : HDD< USB 등 저장매체와 연관 동작
- 캐릭터 드라이버 : 시리얼 포트와 같은 전반적인 장치를 다룸
- NIC : 네트워크 관련
STM32 드라이버_ HAL드라이버
- OS를 사용할수도, 사용안할수도있는 드라이버
- HAL : Hardware Abstraction Layer 약자. 추상화 계층으로 해석된 인터페이스
- CPU를 교체하더라도 소프트웨어(HAL)을 그대로 쓸수있도록 구성됨.
- 각 통신, 블럭 별 드라이버가 존재함.
- HAL드라이버 이름 규칙( Naming Rule )
- 주변장치 핸들구조체가 있음.
- 콜백함수도 사용됨.