3강 / 20강

세 층으로 나눈다 — 드라이버 · 장치 · 순서

모의 드라이버로 실물 없이 쓴다

세 층으로 나눈다 — 드라이버 · 장치 · 순서
층을 나누면 실물 없이 쓸 수 있습니다. 이것이 펌웨어 개발의 실제 모습입니다.

펌웨어를 한 덩어리로 쓰면 실물이 없으면 한 줄도 시험할 수 없습니다. 그래서 층을 나눕니다. 이 강의 전체가 이 세 층 위에 서 있습니다.

🔌
드라이버 계층
버스의 말만 안다 — “17번 핀을 켜라”, “레지스터 1에 1500을 써라”. 공정을 모른다
⚙️
장치 계층
공정의 말을 안다 — “밸브를 열어라”, “비드를 붙잡아라(90초)”. 핀 번호를 모른다
📋
순서 계층
레시피를 안다 — “IVT 단계를 돌려라”. 장치가 몇 개인지 모른다

각 층은 바로 아래층만 압니다. 이 규칙 하나가 강의 끝까지 갑니다.

층을 눌러 보세요. 그 층이 아는 말과 모르는 말이 갈라져 보입니다.
불러오는 중…
가짜 드라이버로 순서 계층까지 전부 시험할 수 있습니다. 파이가 없어도 됩니다.
Python 브라우저에서 실행

약속의 모양을 고정한다

장치가 열넷인데 저마다 다른 이름의 함수를 가지면 순서 계층이 감당하지 못합니다. 그래서 같은 모양을 강제합니다 — 파이썬에서는 Protocol 이나 abc.ABC 를 씁니다.

모든 장치가 갖는 것무엇
open() / close()장치를 잡고 놓는다 (with 문으로)
selftest()지금 말이 통하나 — test 워크플로가 부른다
read_state()지금 어떤 상태인가 (결함 검출이 쓴다 → 19강)
safe()당장 안전한 상태로 — 19강의 페일세이프가 부른다

특히 safe() 를 처음부터 넣어 두십시오. 나중에 끼워 넣으려면 장치 열넷을 전부 다시 손대야 합니다.

🤔 확인 문제
드라이버 계층과 장치 계층을 나누는 가장 실용적인 이유는?
🤔 확인 문제
safe() 를 모든 장치에 처음부터 넣으라는 까닭은?