'DeviceDriver'에 해당되는 글 3건

  1. 2008.11.16 2008 SCA Festival - KOSR세미나에 갔다왔습니다.
  2. 2008.07.27 스터디 1일차 요약본 4
  3. 2008.07.23 DeviceDriver 와 마주하다 3
2008. 11. 16. 02:25 과거 저장소/Device Driver
728x90
아~ 황금같은 주말, 비는 오긴 했지만 참으로 유익한 시간을 보내고야 말았습니다.

오늘은 숭실대에서 KOSR세미나가 있었습니다.
총 3개의 세션으로 아래와 같이 구성되어 있었습니다.

1. 행사 일정

시간

윈도우 커널 이야기

실행파일 분석기법

윈도우 드라이버 이야기

13:00 ~ 13:25

세미나실 입장

13:25 ~ 13:30

개회사 및 강사 소개

13:30 ~ 15:00

1. Windows Interrupt의 비밀
2. Windows I/O의 비밀-1

1. PE 구조 학습

1. USB 장치와 디바이스 스택 분석

15:00 ~ 15:30

Break Time

15:30 ~ 17:00

2. Windows I/O의 비밀-2
3. Windows Socket의 비밀

2. 디버깅 툴을 이용한 실행파일 분석

2. USB Request Packet(USBDI) 분석과 IRP

17:00 ~ 17:20

Q & A

17:40 ~

세미나 뒷 이야기 


원래 계획은 동아리 동기와 후배들 모두 참가하여, 각각 하나의 세션을 듣고나서 다시금 우리들끼리 작은 세미나를 갖자는 목표로 참가하였는데 약간의 miss가 생겨버렸습니다.

다름 아닌, 모두다 세미나 시간이 되도 안오길래 전화를 해봤더니 그제서야 일어나 버린것입니다. ㅡ0ㅡ;;

그래서 동기에게는 강요하지 않았고, 후배들에게는 생각보다 다른 세션이 좋은 내용이 많아서 듣기를 권장하여 뒤늦게라도 도착하여 듣게 되었습니다.

전 3개의 세션들 모두 다 듣고 싶었지만, 몸이 한개인지라 USB디바이스 드라이버쪽을 들었습니다. 사실 디바이스 드라이버에 대한 지식은 거의 문외한이라고 해도 과언이 아니지만, 예전 방학때 동아리 선배가 강의해주셨던 그 기억과 내용들이 그나마 이번 강의를 듣는데 있어서 엄청난 도움이 되었습니다.

하지만 워낙 어려운 내용들과 함께 너무나도 짧은 시간에 대량의 내용들을 습득, 이해하기에는 조금에 무리가 있었던건 사실입니다. 그래서 지금도 최대한 기억을 되살리고 있는중입니다. ^^ 그래서 아마도 글 쓴 내용들 중에는 엉뚱한 부분이 있을 수도 있습니다.;;

일단 시작전에 이봉석 선배님이 3~4시간안에 USB드라이버에 대한 내용을 모두다 강의하긴 어렵고, 아마 개요정도가 되지 않을까 싶다고 말씀하셨습니다.
사실 저한테는 오히려 이런 개요가 더 좋을 수 있을거란 생각을 해봤습니다. 아무것도 모르는 사람이 기술적인 것을 바로 보는것보다 가이드라인을 잡을 수 있는 편이 더 나을거란 생각말입니다. 하지만 실상 내용은 결코 쉽지 않았습니다. 어느정도는 이해가 갔지만, 점점 H/W적인부분의 내부로 들어갔던 부분에 대해서는 많이 와닿지는 않았습니다.

일단 제일 처음 USB드라이버 강의에 들어가면서 USB가 관여하는 부분에 있어서 H/W부분과 S/W부분을 나눠서 설명해주셨습니다.
S/W부분에서 USB드라이버를 제어하기위해 개발자가 만드는 부분은 Client Driver정도라고 하셨습니다. 나머지 부분들은 이미 MS에서 제공을 하고 있다고 했습니다.

그 다음으로 가장 중요한 부분이 바로 USB열거자와 PNPID라고 합니다..

USB열거자는 새로운 장치를 찾은 경우, 자신만의 고유한 방식(VID, PID)을 사용하여 새롭게 찾은 장치에 대한 고유한 PNPID를 윈도우게 등록하게 됩니다.

PNPIDHardwareIDCompatibleID등의 종류를 가지게 되며, 각각의 ID모두를 등록 할 필요는 없으며, 2가지 이상의 PNPID가 등록될 수 있다고 합니다.

USB열거자(USBHUB.SYS)는 장치(Device)의 ID를 들어내는 역할을 합니다.
HardwaredID : USB\VID_1234&PID_5678
HardwaredID : USB\VID_1234&PID_5678&MI_00
CompatibleID : USB\Class_01&SubClass_02
CompatibleID : USB\Class_03
CompatibleID : USB\Class_FF&SubClass_FF&Prot_00

위와 같은 HardwareID, CompatibleID 유형을 하고 있습니다.
여기서 중요한 부분이 바로 HardwareID 2개의 차이가 중요하다고 하셨습니다.
위 2개의 차이점은 MI_00이 있고 없고의 차이입니다.

여기서 MIMutil Fucntion Interface 라고 합니다.
이 말은 보통 USB장치가 하나의 작업만 하는 것이 아니라 다수의 작업을 하기위해 구성된 복합장치일 때 구별하기 위한 부분이라고 생각하면 될 것입니다.

HardwareID는 VID(VendorID), PID(ProductID)를 사용하여 생성한다.
CompatibleID는 Interface Class, SubClass를 사용하여 생성한다.

아 오늘은 여기까지 글을 써야겠습니다. 너무나도 졸린 나머지, 계속해서 강의때 들었던 내용들을 되새김질 하며 글을 쓰도록 하겠습니다.
728x90
posted by acedon
2008. 7. 27. 22:50 과거 저장소/Device Driver
728x90

디바이스 드라이버 스터디 1일차

주제
  - 드라이버 개발 환경 구성
  - WinDBG를 이용한 유저모드 디버깅
  - WinDBG를 이용한 커널모드 디버깅
  - 초 간단 드라이버 제작

invalid-file

요약본 받기

728x90
posted by acedon
2008. 7. 23. 15:39 과거 저장소/Device Driver
728x90

제부터 이 카테고리의 내용은 모두 디바이스드라이버(DeviceDriver)라는 내용으로 채워질 것이며, 채워 나갈것이다. 그 내용의 양과 질은 전적으로 나의 몫이니 ...
 

나이 24세, 군 제대 후 현재 3학년,
1학년 때의 과거를 회상해 본다.

 디바이스드라이버라는 말을 대학와서 처음들어보게 되었다.
그게 그럴 수 밖에 없는게 우리 서울산업대학교 컴퓨터 공학과 내 EnlessCreation(이하EC)라는 동아리는 디바이스드라이버라는 분야에서 내놓으라는 분들이 계셨던 곳이라서 간간히 접할수 있었던 것이다.

지만 그 이제 막 들어온 신입생들이 무슨 내용인줄 알아겠나, 그냥 우와~ 라는 생각만 가졌던것 같다.
그렇게 학교생활은 그저 학교 커리큘럼 흐름에만 묻혀서 다니다보니 지금의 여기까지 오게 되었다.
지난 3년 동안을 뒤돌아 보면 정말 나는 그야 말로 "뭐 한게 없다"라는 말이 딱 맞는것 같다.
그냥 그냥 학교 과목만 듣고 하루하루 허비했다는 생각에 현재 나는 몹쓸 자책감에 빠져있다.

실 현재에 있는 어플리케이션을 만드는 부분에 있어서는 그다지 흥미가 생기지는 않는다. 그렇다고해서 내가 하고 싶은대로 다 만들수 있는 실력에는 근처도 가지도 못하고 있고, 노력 또한 별로 하지 않았다. 예전때에 그런 느낌이 없었다.그러는 과정에서 신입생 때 들었었던 DeviceDriver, SystemProgramming, Low-Level part등에 대한 관심이 조금씩 싹트기 시작했다.  하지만 그 기초라고 생각되는 내용에 접근하려 하니 그다지 쉽게 나에게 문을 열어주지 않는듯 보인다. 그런 부분이 또다시 나를 움직이게 하는 원동력이 될거라는 생각이 들었다.

과정에서 역시나 내 동기들도 같은 부분에 관심을 가지고 있어서 가는길이 외롭지는 않을듯 보인다.
또한 유능하신 선배님들이 많으셔서 더욱더 힘이 난다.

제부터 5주간 5번의 DeviceDriver특강을 EC 9기 최정현 선배님이 고생해주시기로 해서 천군만마를 얻은듯하여 매우 기뻤다. 정말 이제부터 시작인듯 보인다. ! 열심히 해야지

혹시라도 관심을 가지시고 접해보시려고 하시는 분들이 있다면 현재 특강(스터디) 진행 사항을 구글그룹에 올려놓고 있으니 참고 하시기 바랍니다.

                                           DeviceDriver 접하러 가기
728x90
posted by acedon