리눅스 디바이스 드라이버 3rd PDF.
2008/12/31
https://lwn.net/Kernel/LDD3/
일반적인 DD 구현을 해 본적이 있거나, 와꾸 잡기를 띄엄띄엄 할 수 있다면,
디버깅을 제외하고는 다음과 같은 이슈사항들이 발생한다.
- 인터럽트 처리.
- 자원 잠그기.
- 레지스터 폴링 대신 스케쥴링 하기.
- DMA 메모리 맵핑
- 다른 드라이버에서 정보 가져오기.
예를 들어 FrameBuffer 드라이버를 유지하면서 2D 가속 명령어를 쓴다치면.
- 프레임버퍼와 동시 작업하면 안 됨 (배타적 작업, 자원 잠금 필요)
- 2D 가속 명령어 FIFO 관리를 해야 함 (레지스터 모니터링)
- 2D 가속 명령어 끝났음을 알리는 인터럽트 처리
- DMA와의 상관관계
- 드라이버간 상호 정보 참조 (커널 얼록 해온 메모리 주소등)
만들어진 이더넷 드라이버 포팅하고 GPIO 드라이버나 쪼물딱 거리는 것과 맨땅에서 부터 새로운 것을 만드는 것은 확실히 많이 다르다. ㅋ
[t:/] is not "technology - root". dawnsea, rss