디바이스 드라이버가 처음이신 분들이라면 , 아직 개념 및 용어 이해에 어려움이 있었을 것으로 본다 . 그것은 아마도 실제 개발을 해보지 않은 상태에서 이론적인 내용만 가지고 이해하려다 보니 어려웠을 것으로 보인다 . 그래서 , 이번 컬럼에서는 디바이스 드라이버를 실습해 볼 수 있는 개발 환경 구축에 대한 내용을 다뤄 보도록 하겠다 . 글의 내용은 윈도우 디바이스 드라이버 개발에 필요한 개발 툴 소개 , 개발 환경 구축 , 실제 컴파일 예 순서로 내용을 살펴보겠다
1. 윈도우 디바이스 드라이버 개발 툴 소개
Driver Development Kit ( DDK )
( http://www.microsoft.com/whdc/DevTools/ddk/default.mspx )
: 윈도우 디바이스 드라이버를 하기 위해 필수적인 준비해야 하는 툴로 , 드라이버 개발에 필요한 컴파일러 , 라이브러리 , 헤더 파일 이외에 도움말 문서 , 샘플 코드 , 그리고 유용한 유틸리티 등이 함께 제공된다 . DDK 는 Windows 버전마다 출시가 되고 , 현재 Vista 가 출시된 이후로는 WDK 로 통합되었다 . DDK 버전 중에 2003 SP1 DDK 는 웹을 통해 무료로 다운로드 받을 수 있고 , 다른 버전들은 MSDN 을 통해 구할 수 있다 .
Windows Driver Kit (WDK)
( http://www.microsoft.com/whdc/DevTools/WDK/aboutWDK.mspx )
: WDK 는 기존 DDK 의 업그레이드 된 버전으로 , Windows Vista 출시에 맞춰서 나왔다 . WDK 구성 요소를 보면 기존 DDK 내용에 WDF 모델 , IFS Kit, 검증 툴 , 배포 기능 , 윈도우 로고 인증 테스트 툴 등이 추가되었다 . 하나의 툴로 개발 , 테스트 , 인증 , 디버깅을 통합하려는 목적으로 만들어졌다 . 하지만 , 용량이 커져서 설치하는데 시간이 좀 걸리는 불편함이 있다 . 현재 WDK 는 웹을 통해 무료로 다운로드 받을 수 있다 .
Windows Logo Kit ( WLK )
( http://www.microsoft.com/whdc/DevTools/WDK/aboutWDK.mspx )
( http://www.microsoft.com/whdc/winlogo/default.mspx )
: 윈도우 로고 인증을 위한 테스트 툴들을 묶어놓은 키드이다 . ( Driver Test Manager : DTM 등등 ). 원래는 WDK 에 포함되었으나 , 사용자들의 요구로 인해 별도의 키트로 분리되었다 . 만약 여러분이 윈도우 로고 인증을 받고자 한다면 , WLK 를 설치해 테스트 결과를 가지고 윈도우 로고 프로그램을 진행하면 된다 .
Installable File System (IFS) Kit
( http://www.microsoft.com/whdc/DevTools/IFSKit/default.mspx )
: 윈도우 커널 모드 파일시스템과 파일 시스템 필터 드라이버 모델을 개발할 수 있는 키트이다 . 파일시스템 관련 샘플 소스 및 다양한 문서들을 제공하고 있다 .
WinDbg ( http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx )
: 윈도우 커널 및 디바이스 드라이버 그리고 , 애플리케이션을 디버깅할 수 있는 디버거 이다 . Microsoft 에서 무료로 배포되며 , 강력한 윈도우 커널 디버깅 기능을 제공해준다 . 기존에 Soft-ICE 라는 디버거가 있을 때는 WinDbg 와 Soft-ICE 가 윈도우 커널 디버거의 양대산맥 이었으나 , 2006 년 이후로 Soft-ICE 가 단종되는 바람에 , WinDbg 가 최강의 디버거가 되었다 .
WinDbg 를 이용한 디버깅 방법은 2 대의 PC ( 디버깅 당하는 PC , 디버깅 하는 PC ) 가 필요하고 , remote 로 연결 해 디버깅을 하게 된다 . 처음에는 PC 2 개가 필요하고 , 설정과정도 여러 단계를 거쳐야 해서 복잡하게 느껴질 수 있지만 , 설정만 잘 해 놓으면 , 그 다음부터는 디버깅 하는 데 크게 어려움이 없을 것이다 .
참고적으로 , WinDbg 는 Windows 9x( 95/98/ME ) 계열은 지원하지 않는다 . 그래서 Windows 9x 계열은 아직도 Soft-ICE 를 사용해야 하는 상황이다 . 이유는 Microsoft 에서 Windows 9x 계열을 지원하는 제대로 된 디버거 가 없기 때문이다 . 그래서 필자도 Windows 9x 계열을 디버깅할 때는 Soft-ICE 를 사용하고 있다 .
위와 같은 개발 툴을 이해했으면 이제 툴들을 준비하자 .
필수적으로 준비할 툴들은 WDK ( or DDK ), WinDbg 툴이 될 것이다 . 그리고 소스 편집을 위한 소스에디터 정도만 있으면 드라이버 개발에 필요한 환경은 준비되었다고 볼 수 있다 .
그럼 , 이제 본격적으로 개발 툴 설치 및 실제 개발 환경에 대해서 알아보기로 하겠다 .
Microsoft 에서는 윈도우 버전에 따른 추천하는 driver kit, test kit 종류들을 제시하고 있다 .
( http://www.microsoft.com/whdc/driver/foundation/WhichDDK.mspx )
위의 표에서 보듯이 대부분의 윈도우 버전에서 WDK 를 사용해 드라이버를 개발하도록 권장하고 있다 . 이것은 WDK 가 DDK 보다 새 버전의 컴파일러 및 라이브러리 지원 그리고 기타 내용들이 최신내용으로 업데이트 되었기 때문이다 . 그렇다고 예전 DDK 를 사용해 드라이버를 개발 못 하는 건 아니다 . 만약 , 지금 시점에서 처음 디바이스 드라이버 개발을 시작한다면 WDK 를 사용하길 바란다 .
2. WDK 설치 및 컴파일
1) WDK 다운로드 및 설치 ( http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx )
- Connect 사이트 로그인
- WDK 프로그램 등록
- WDK 다운로드 받
다운로드 받은 파일은 ISO 파일이므로 Virtual CD 디스크를 생성하거나 , CD 로 구운 후에 설치 작업을 하면 된다 .
• 디바이스 드라이버 빌드
우선 , 디바이스 드라이버를 만들기 필요한 파일 내용들을 살펴보고 , 빌드 순서에 따라 드라이버를 만들어보자
- Build 순서
(1) 디바이스 드라이버 관련 파일 생성
파일을 만드는 방법은 특정 툴을 사용해 파일을 만드는 것이 아니라 , 여러분이 사용하는 편집기를 통해 위의 표에 있는 파일들을 작성하시면 됩니다 .
(2) WDK ( or DDK ) 빌드 환경 선택
WDK 툴에서는 두 가지 형태의 다양한 O/S, CPU 구조에 따른 빌드 환경을 제공한다 . 디바이스 드라이버를 어떤 형태로 만들지에 따라 빌드 환경이 선택되는데 크게 2 가지 환경으로 나눠 볼 수 있다 .
Checked ( Debug ) 빌드 환경
: 개발자용으로 드라이버를 만들 때 사용하는 환경이고 , 컴파일 할 때 드라이버에 디버깅 정보가 추가되어진다 .
Free ( Release ) 빌드 환경
: Checked 빌드와 반대로 실제 사용자들에게 배포할 때 사용되는 빌드 환경으로 , 개발 후 최종 버전을 만들 때 이용한다 .
여러분이 개발하려는 형태에 따라 2 가지 빌드 환경 중에 한 가지를 선택하시면 된다 .
그리고 , 좀 있다가 실제 빌드 환경 화면 내용을 보겠지만 , WDK 에서는 제공되는 빌드 환경은 Visual Studio 같은 화려한 GUI 통합 개발 환경을 제공하지 않는다 . 대신 간단한 Command 창이 생성되고 , UNIX 나 LINUX 처럼 text 모드로 명령들을 입력하는 형태이다 .
기존 GUI 개발 환경에 익숙한 개발자 분들은 불편하게 느껴질지 모르겠다 . 그래서이런 불편함을 해결하고자 Visual Studio 의 IDE 개발 환경과 연동해서 빌드 하는 방법을 사용하고 있다 .
( http://blog.naver.com/process3.do?Redirect=Log&logNo=20031377259 )
하지만 , 이번 컬럼 에서는 IDE 연동 환경이 아닌 기본적인 WDK 빌드 환경을 이용하겠다
(3) Build 프로그램 실행
빌드 환경을 선택하신 후에 , 디바이스 드라이버 소스가 있는 폴더로 이동한다 . 그리고 , WDK 의 build.exe 프로그램을 실행시켜 빌드를 하게 된다 . 빌드 과정에서 컴파일 및 링킹 과정이 이루어지고 디바이스 드라이버 파일이 sources 파일에 명시된 폴더에 생성이 된다 . 만약 컴파일이나 링킹 과정에서 에러가 나오면 error 로그 내용을 분석해 수정을 하면 된다 .
참고사항으로 , build.exe 프로그램은 여러가지 옵션을 제공하고 있으니 , 필요에 따라 옵션을 선택해 빌드를 해도 된다 .
아래 그림은 이 과정을 WDK 예제 소스를 가지고 실행한 화면입니다 .
3. 디버깅 환경 구축
마지막으로 , 디버깅 환경 구축에 대해 알아보자 .간단히 환경에 대해서 설명을 하자면 , 윈도우 드라이버 디버깅 환경은 그림처럼 , Host 와 Target 에 해당하는 PC 를 cable 를 remote 로 연결하고 , WinDbg 를 설치하고 설명하면 디버깅 환경 구축은 끝나게 된다 .
그럼 , 실제 구축방법은 어떻게 되는지 하나하나 내용을 살펴보자 .
1) 사전 준비사항
a) 케이블
2 대의 PC 를 연결하기 위한 케이블을 준비해야 한다 . 현재 WinDbg 에서 지원하는 Interface 는 Serial, 1394, USB Null Modem Serial Cable 또는 1394 Cable 사용자의 환경에 따라 Null Modem Serial Cable 또는 1394 Cable 를 준비하면 된다 .
b) WinDbg 툴
WHDC 사이트를 통해 최신 WinDbg 버전을 다운받아 Host 컴퓨터에 설치한다 . http://www.microsoft.com/whdc/devtools/debugging/default.mspx
2) WinDbg 설정
----------------------------------------------------------------------------------------------------------
http://www.driveronline.org/bbs/view.asp?tb=begin&GotoPage=1&s_bulu=&s_key=&no=6
----------------------------------------------------------------------------------------------------------
'Windows' 카테고리의 다른 글
윈도우 프로그램 자동 시작하는 방법 (0) | 2011.10.07 |
---|---|
Visual Studio Fetal Error C1033 해결하기 (0) | 2011.10.06 |
[펌]윈도우즈 디바이스 드라이버 개발 방법 (0) | 2011.09.25 |
[펌]디바이스 드라이버란? (0) | 2011.09.25 |
MinGW MSYS (0) | 2011.09.21 |