Windows CE의 Device Driver는 보통 MDD와 PDD 이렇게 두 Layer로 구분이 됩니다.
MDD ==> OS와 PDD사이에서 해당 드라이버의 기능을 할 수 있도록 구현된 부분
PDD ==> 해당 하드웨어에 직접 접근하여 MDD에서 요구하는 기능을 직접 수행하는 코드
쉽게 풀자면 OS는 Windows CE라는 놈안에서 돌아가겠죠? OS는 WINCE라는 놈으로 다 같지만, HW.. 즉 Board는 다 다를겁니다. 예를들어 2410보드라던가.. MP2530F 보드라던가.. 메인스톤 보드라던가.. 등등등 이렇게 많인 솔루션들이 존재하죠.. 그리고 이에 따른 해당 BSP( Board Support Pakeage )가 존재하게 되고요.
그렇다면. 터치 드라이버를 예로 들어봅시다. 터치 드라이버는 보드의 LCD 화면을 누르면 그 포인트를 잡아서 LButton Down같은 메시지를 발생시켜주죠. 구분해봅시다. 터치 드라이버 내부에선 어떤일을 하게 될까요? 인터럽트 방식으로 예를 들겠습니다.
사용자가 화면을 누른다. -> ADC 인터럽트가 발생한다. -> 드라이버가 인터럽트를 받았다!! -> ADC로부터 좌표값을 읽는다. -> 좌표값을 OS에 적절한 값으로 변환 또는 Sampling한다. -> OS에서 사용자에게 반응할 수 있도록 값을 리턴해준다.
여기서 파란색은 MDD가, 빨간색은 PDD가 하는 일이라고 보면 될 거 같습니다. 파란색은 어떤 CPU던, 어떤 보드이건간에 사용자가 화면을 누르면 드라이버가 해야할 일이죠? 그리고 빨간색은 보드마다 해야할 일이긴 하지만, 보드마다 읽는 방법이 다를겁니다.
이렇게 구분지은거에요. 굳이 소스코드를 다 짜지 않아도 PDD부분.. 즉 HW에 의존적인 부분만 구현하고 미리 구현되어 있는 MDD (즉 어떤 보드이건 SW적으로 해야할 일이 이미 구현된 MDD) 와 짜맞추기만 하면 드라이버가 완성되도록 하는거죠. 그래서 MDD, PDD로 구분을 지어놓은겁니다.
이렇게 되면 잘 모르겠어도 짜는 사람 입장에선 참 편하겠죠?
미리 짜여진 부분이 있으니까, 내가 짤 부분은 반토막 또는 그 이상 줄어든다는 의미이니까요 ^^ 자자.. 이해가 되셨나요?
참고로 Windows CE의 Device Driver는 MDD, PDD로 나뉘어 있는 구조와 하나로 통합되어 있는 UM ( Unified Model ) 이 있습니다. Audio Driver가 UAM ( Unified Audio Model ) 이 많죠.
'Hello Info' 카테고리의 다른 글
IST 와 ISR (0) | 2009.12.15 |
---|---|
원부팅, 콜드부팅 (0) | 2009.12.07 |
DRAM Self-Refresh (0) | 2009.11.30 |
윈도우 임베디드 CE 쉘 (0) | 2009.11.17 |
NKGLOBALS,OEMGLOBALS (0) | 2009.11.17 |